面對JDK的BUG該如何是好?
01-25
除了每天關注社區之外?
假定題主說的是Oracle JDK / OpenJDK:
- 在Java Bug System (JBS)上報告bug;同時也可以在合適的OpenJDK郵件列表上發郵件報告bug。兩邊一起做比較容易引起注意。
- 在上述兩個地方搜索已有的bug,看是否有修復或者workaround。
- 自己debug和修復,然後發patch到OpenJDK郵件列表。我在加入Oracle之前就經常這麼做。
以前在淘寶工作的時候,我們也經常能遇到JDK里的bug。能修的就自己修了,反正淘寶自己維護基於OpenJDK的Taobao JDK,我們可以自己打patch然後自己構建JDK。
淘寶JDK
如果在JDK的Java代碼里有bug,要快速修復和測試很容易,不需要構建整個JDK:只要單獨修改有bug的類,編譯出.class文件之後放到把它的路徑-Xbootclasspath/p啟動參數里,就可以override掉核心庫的JAR(例如rt.jar)里的類。用javac編譯核心庫里的類有可能需要傳-XDignore.symbol.file=true參數。除了繞過, 換JDK之外, 就是自己找源代碼fix掉.
要麼繞過要麼等待升級
報bug,並要求backport,開源軟體的發展需要您的幫助System Dashboard
我是做IBM JDK安全庫的。我們的經驗就是用戶一般發現了BUG的話,先會上 JDK - Java Bug System 去搜一下BUG有沒有被人提過。如果沒有的話,就會在這上面提,提的時候需要盡量清晰的描述BUG的信息以及TESTCASE。當然IBM JDK會有些不一樣,我們有自己的BUG報告系統,並且只對付費用戶開放。
一般我們拿到一個BUG後,會有以下處理:
1. 分析一下BUG是普適的還是只在特定的條件下才能重現,如果只在特定條件下重現的話就要判斷是不是環境因素2. 如果第一步分析完後發現BUG確實存在於JDK中,就會著手創建fix並做測試3. 判斷修復是不是適合所有的Java版本(5 ,6,7,8)。之後會把fix放到所有適用的版本上4. 之後就會生成對應的修復JAR並做最後的驗證5. 下一個發布版本就會包含fix了。如果是付費客戶的話,它們可以要求一個定製版本,這樣他們可以提前獲得包含fix的JDK。因為一般一個新的發布版本需要3個月左右的時間,有些客戶等不及。
workaround,然後記下來。以後runtime就別輕易升級,不然很可能你的workaround就失效了。然後呢,就會被c#抨擊,為什麼java的程序員都不喜歡升級最新的jre。
簡單的說,沒有一個官方的,"好用的",鏈接. 提交的bug往往不了了之.
就是我承認java的bug真的很少.
不過不知道怎麼提交bug也是很奇怪的現象.
推薦閱讀:
※《黑客帝國》中,NEO尼奧為什麼不教其他人超能力,只教會了他們膽大妄為?
※QQ for PC的防撤回
※前段時間的思考題的答案v2.0
※為什麼手寫對於潦草字體的識別率很高,但是OCR就不行呢?