開發能支持多種JVM的java程序應注意的事項

  自從java出來以後,這個星球就有了各種JVM,但是java的標準只有一個,而各大JVM都有其獨特的一面,開發兼容各大jvm的應用程序應注意以下問題:
       1)加密解密要避免使用com.sun.crypto.provider的包,而應改用org.bouncycastle的包;
       2)編碼解碼要避免使用sun的包,如:sun.misc.BASE64Encoder要改用apache的commons-codec-1.3.jar;
       3)org.w3c.dom的包,雖然在openjdk的早期版本中沒有包含,但仍可使用,因其開源,隨處可取;
       4)早期的ASM及spring中有bcel的引用,應改爲使用apache的bcel;
       5)IBM的j9vm中不包含任何以sun爲包名起始的內容;
       6)BM的j9vm與oracle或sun的hotspots虛擬機在內存管理及線程同步方面機制及其不同,在使用同步鎖時要極爲小心,反覆測試。

       多年來,Oracle一直在提醒開發者,調用sun.*包裏面的方法是危險的。關於這點,讀者可以閱讀Oracle博客上的說明文章“爲什麼開發人員不應該調用‘sun’包”。總之,使用這些已棄用的特性很容易出問題。隨着平臺的變化,它們可能隨時被轉移、刪除或者更改語義。

       然而,如果你使用了感知調用者的行爲,也無需失去信心。JDK增強提案(JEP176)呼籲提高JDK方法處理的實現的安全性,使用可以可靠地識別的感知調用者方法的機制代替現有的人工維護的方法列表。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章