部分收費的Oracle JDK VS 完全免費的OpenJDK

原創於【模稜博客】 http://www.flammulina.com

本文將討論Oracle JDKOpenJDK之間的區別。注意目前 OpenJDKOracle JDK 僅由Oracle創建和維護。在詳細介紹之前,讓我們回顧一下JDK是什麼,在開始對比Oracle JDKOpenJDK之間的差異。

什麼是JDK?

Java Development Kit(JDK)包含Java Runtime Environment(JRE)以及用於編譯和調試用於開發Java應用程序的Java代碼的工具。JRE由庫,Java虛擬機(JVM),Java Pluging和Java Web Start組成,用於運行Java應用程序。JRE作為獨立版本不包含編譯器和調試工具。

Oracle JDK VS OpenJDK

Oracle JDK部分版本收費 ,如果要獲得商業Oracle JDK許可證,我們需要直接聯繫Oracle銷售人員。OpenJDK是完全免費的,可以按照GPL v2許可證使用。Oracle JDK 之前被稱為SUN JDK,這是在Oracle收購之前。早些時候,它是Java語言的官方專有實現。收購後,它被命名為Oracle JDK ,Oracle的團隊維護著JDK。OpenJDK 是Java標準版平臺的開源實現,由Oracle和開放Java社區提供。OpenJDK 是Java SE 7中Java Standard Edition的官方參考實現。OpenJDK 根據許可證GPL v2發佈,其中Oracle JDK根據Oracle二進制代碼許可協議獲得許可。實際上,Oracle JDK的構建過程是從OpenJDK源代碼構建的。因此,Oracle JDK和OpenJDK之間沒有重大的技術差異。除基本代碼外,Oracle JDK還包括Oracle Java插件和Java WebStart的實現。還包括第三方封閉源代碼和開源組件。OpenJDK Font Renderer 和Oracle JDK Flight Recorder是Oracle JDK和OpenJDK之間顯著的主要區別。Oracle JDK 的商業組件與可免費下載的Oracle JDK捆綁在一起,並且我們需要使用顯式標誌來運行它們。JRockit 是Oracle的JVM,從Java SE 7開始,H​​otSpot和JRockit合併為一個JVM。所以現在我們只有合併的HotSpot JVM可用。有些情況下,人們聲稱他們在運行OpenJDK時遇到了問題,並且在切換到Oracle JDK時得到了解決。考慮到Oracle JDK從OpenJDK獲取其來源這一事實很難證明。主要的Linux發行版(如Ubuntu,Fedora和Red Hat Enterprise Linux)提供OpenJDK或其變體作為其默認的Java SE實現。OpenJDK 6是一個嘗試與Oracle JDK 6兼容的後端。它取自OpenJDK 7 b20並刪除了Java 7功能,使其與Java SE 6兼容。OpenJDK 8源代碼託管在http://hg.openjdk.java.net/jdk8OpenJDK 8和OpenJDK 9的目標並沒有從OpenJDK 7改變。它們看起來是一樣的,即為Java Standard Edition提供開源參考實現。OpenJDK是Ubuntu使用的Java的默認版本,最容易安裝,而Oracle Java 7/8是Oracle自己的Java 7/8版本。

發佈時間

OpenJDK

OpenJDK將每6個月發佈一次功能,只有在下一個功能發佈時才會支持。它本質上是針對開發人員的連續發佈流。

Oracle JDK

Oracle JDK的目標更多是針對重視穩定性的企業用戶。它基於OpenJDK的一個版本,但隨後獲得了長期支持(LTS)。Oracle JDK每3年發佈一次。

發展歷程

OpenJDK

2008年5月,Fedora 9及Ubuntu 8.04於發行版中發佈OpenJDK,完整地基於自由及開放源代碼的OpenJDK。

2008年6月,IcedTea 6(Fedora 9上的一個包版本的OpenJDK)宣佈已通過Technology Compatibility Kit測試,可以稱得上是一個完全兼容的Java 6的運行環境。

2008年7月12日,Debian接受了OpenJDK-6的不穩定版本,但目前情況已經穩定。OpenJDK也可以在openSUSE、Red Hat Enterprise Linux及其派生系統,如CentOS中找到。

2008年7月,OpenJDK 7可以運行在Mac OS X和其他的BSD發行版。

2009年7月,Ubuntu 9.04中的二進制版本OpenJDK在Java SE 6 JCK中通過了所有的兼容性測試。

2016年8月22日,Google在Android 7.0 Nougat中,將專利的JDK替換成開源方案的OpenJDK,以徹底解決Java的專利問題。

Oracle JDK

Java EE,Java平臺企業版(Java Platform Enterprise Edition),之前稱為Java 2 Platform, Enterprise Edition (J2EE),2018年3月更名為Jakarta EE。是Sun公司為企業級應用推出的標準平臺。Java平臺共分為三個主要版本Java EE、Java SE和Java ME。

Sun公司在1998年發表JDK1.2版本的時候,使用了新名稱Java 2 Platform,即“Java2平臺”,修改後的JDK稱為Java 2 Platform Software Developing Kit,即J2SDK。並分為標準版(Standard Edition,J2SE),企業版(Enterprise Edition,J2EE),微型版(MicroEdition,J2ME)。J2EE便由此誕生。

2005年6月,JavaOne大會召開,SUN公司公開Java SE 6。此時,Java的各種版本已經更名以取消其中的數字“2”:J2EE更名為Java EE, J2SE更名為Java SE,J2ME更名為Java ME。

隨著Java技術的發展,J2EE平臺得到了迅速的發展,成為Java語言中最活躍的體系之一。現如今,J2EE不僅僅是指一種標準平臺,它更多的表達著一種軟件架構和設計思想。