Oracle JDK與OpenJDK對比


note: 在k8s構建項目的時候,選擇不同鏡像造成啟動失敗的問題,最終查證是jdk鏡像的問題,下面簡單匯總一下 Oracle JDK與OpenJDK 的對比

Oracle JDK與OpenJDK里的JVM都是HotSpot VM。從源碼層面說,兩者基本上是同一個東西。

從JDK7開始,Oracle JDK里的HotSpot VM,在研發的時候其實就是用放在OpenJDK的Mercurial代碼庫。也就是說跟大家從外部能實時看到的OpenJDK用的是同一個代碼庫。

HotSpot VM只有非常非常少量的功能沒有在OpenJDK里,那部分在Oracle內部的代碼庫里。這些私有部分都不涉及JVM的核心功能。

所以當一個Oracle員工要構建OpenJDK時,他要做的事情跟外面的人一樣:從http://hg.openjdk.java.net簽出代碼,構建。

而當他要構建Oracle JDK時,他同樣需要先從http://hg.openjdk.java.net簽出OpenJDK,然后從Oracle內部的代碼庫簽出私有的部分,放在OpenJDK代碼下的一個特定目錄里,然后構建。

這些HotSpot VM私有的部分主要是Java Flight Recorder的內部實現,以及還有沒有公開到OpenJDK的其它平台的port,例如Oracle自己的ARM、PPC版HotSpot VM。

JDK6的代碼,由於歷史原因,Sun JDK6跟OpenJDK6的代碼並不同步。但是其中的HotSpot VM仍然是相對一致的。OpenJDK 6里的HotSpot VM只缺了一個Oracle JDK里才有的優化,那就是-XX:+UseCompressedString。這個功能實現得不太好,沒帶進JDK7/OpenJDK7,所以這點差異沒有也罷。

OpenJDK原是SunMicrosystems公司為Java平台構建的Java開發環境(JDK)的開源版本,完全自由,開放源碼。Sun Microsystems公司在2006年的JavaOne大會上稱將對Java開放源代碼,於2009年4月15日正式發布OpenJDK。甲骨文在2010 年收購SunMicrosystem之后接管了這個項目。

Oracle/Sun JDK里面包含的JVM是HotSpotVM,HotSpot VM只有非常非常少量的功能沒有在OpenJDK里,那部分在Oracle內部的代碼庫里。這些私有部分都不涉及JVM的核心功能。所以說,Oracle/Sun JDK與OpenJDK其實使用的是同一個代碼庫。

值得注意的是,Oracle JDK只發布二進制安裝包,而OpenJDK只發布源碼。
總結:

  1. Oracle JDK版本將每三年發布一次,而OpenJDK版本每三個月發布一 次;
  2. OpenJDK 是一個參考模型並且是完全開源的,而Oracle JDK是 OpenJDK的一個實現,並不是完全開源的;
  3. Oracle JDK 比 OpenJDK 更穩定。OpenJDK和Oracle JDK的代碼幾乎 相同,但Oracle JDK有更多的類和一些錯誤修復。因此,如果您想開發 企業/商業軟件,我建議您選擇Oracle JDK,因為它經過了徹底的測試和 穩定。某些情況下,有些人提到在使用OpenJDK 可能會遇到了許多應 用程序崩潰的問題,但是,只需切換到Oracle JDK就可以解決問題;
  4. 頂級公司正在使用Oracle JDK,例如Android Studio,Minecraft和 IntelliJ IDEA開發工具,其中Open JDK不太受歡迎;
  5. 在響應性和JVM性能方面,Oracle JDK與OpenJDK相比提供了更好的 性能;
  6. Oracle JDK不會為即將發布的版本提供長期支持,用戶每次都必須通過 更新到最新版本獲得支持來獲取最新版本; 7. Oracle JDK根據二進制代碼許可協議獲得許可,而OpenJDK根據GPL v2許可獲得許可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM