Oracle JDK和 OpenJDK 之間的區別


Oracle JDK和 OpenJDK 之間的區別

1.簡介

在本文中,我們將探討Oracle Java Development Kit和OpenJDK之間的差異。我們先快速瀏覽一下,然后進行比較。之后,我們將看到其他JDK實現的列表。

2. Oracle JDK和Java SE歷史

JDK(Java Development Kit)是Java平台編程中使用的軟件開發環境。它包含一個完整的Java運行時環境,即所謂的私有運行時。該名稱來自於它包含的工具多於獨立的JRE以及開發Java應用程序所需的其他組件。

Oracle強烈建議使用術語JDK來引用Java SE(標准版)開發工具包(還有Enterprise Edition和Micro Edition平台)。

我們來看看Java SE的歷史:

  • JDK Beta - 1995
  • JDK 1.0 - 1996年1月
  • JDK 1.1 - 1997年2月
  • J2SE 1.2 - 1998年12月
  • J2SE 1.3 - 2000年5月
  • J2SE 1.4 - 2002年2月
  • J2SE 5.0 - 2004年9月
  • Java SE 6 - 2006年12月
  • Java SE 7 - 2011年7月
  • Java SE 8(LTS) - 2014年3月
  • Java SE 9 - 2017年9月
  • Java SE 10(18。3) - 2018年3月
  • Java SE 11(18.9 LTS) - 2018年9月
  • Java SE 12(19。3) - 2019年3月

注意:不再支持斜體版本。

我們可以看到Java SE的主要版本大約每兩年發布一次,直到Java SE 7.從Java SE 6開始花了五年時間,之后又花了三年時間升級到Java SE 8。

自Java SE 10以來,我們可以期待每六個月發布一次新版本。但是,並非所有版本都是長期支持(LTS)版本。由於Oracle的發布計划,LTS產品發布僅每三年發布一次。

Java SE 11是最新的LTS版本,Java SE 8將在2020年12月之前獲得免費的公共更新,用於非商業用途。

在2010年Oracle收購Sun Microsystems之后,這個開發工具包得到了它的當前名稱。在此之前,它的名字是SUN JDK,它是Java編程語言的官方實現。

3. OpenJDK

OpenJDK是Java SE 平台版本的免費開源實現。它最初於2007年發布,是Sun Microsystems於2006年開始開發的結果。

當然,我們應該強調 OpenJDK是自SE 7版以來Java標准版的官方參考實現

最初,它僅基於JDK 7.但是,從Java 10開始,Java SE平台的開源參考實現是JDK項目的責任。而且,就像Oracle一樣,JDK項目也將每六個月發布一次新功能。

我們應該注意到,在這個長期運行的項目之前,JDK Release Projects發布了一個功能,然后停止了。

現在讓我們看看OpenJDK版本:

  • OpenJDK 6項目 - 基於JDK 7,但經過修改后提供了Java 6的開源版本
  • OpenJDK 7項目 - 2011年7月28日
  • OpenJDK 7u項目 - 該項目開發Java Development Kit 7的更新
  • OpenJDK 8項目 - 2014年3月18日
  • OpenJDK 8u項目 - 該項目開發Java Development Kit 8的更新
  • OpenJDK 9項目 - 2017年9月21日
  • JDK10項目於2018年3月10日至20日發布
  • JDK11項目於2018年9月11日至25日發布
  • JDK12項目發布 - 穩定階段

4. Oracle JDK與OpenJDK

在本節中,我們將重點介紹Oracle JDK和OpenJDK之間的主要區別。

4.1. 發布時間表

正如我們所提到的,Oracle將每三年發布一次,OpenJDK將每六個月發布一次

Oracle為其版本提供長期支持。另一方面,OpenJDK僅支持對發布的更改,直到下一個版本發布。

4.2. 許可證

Oracle JDK根據Oracle二進制代碼許可協議獲得許可,而OpenJDK具有GNU通用公共許可證(GNU GPL)版本2,使用了一個修正版本

使用Oracle平台時會產生一些許可影響。如Oracle 宣布的那樣,在沒有商業許可的情況下,在2019年1月之后發布的Oracle Java SE 8的公開更新將無法用於商業,商業或生產用途。但是,OpenJDK是完全開源的,可以自由使用。

4.3. 性能

兩者之間沒有真正的技術差別,因為針對Oracle JDK構建過程是基於OpenJDK的的

在性能方面,Oracle在響應能力和JVM性能方面要好得多。由於其對企業客戶的重要性,它更加關注穩定性。

相比之下,OpenJDK將更頻繁地發布版本。結果,我們可能遇到不穩定的問題。根據社區反饋,我們知道一些OpenJDK用戶遇到了性能問題。

4.4. 功能

如果我們比較功能和選項,我們將看到 Oracle產品具有Flight Recorder,Java Mission Control和Application Class-Data Sharing 功能,而OpenJDK具有Font Renderer功能

此外,Oracle有更多的垃圾收集選項和更好的渲染器,我們可以在另一個比較中看到。

4.5. 發展與人氣

Oracle JDK由Oracle Corporation完全開發,OpenJDK由Oracle,OpenJDK和Java Community開發。然而,紅帽,Azul Systems,IBM,Apple Inc.,SAP AG等頂級公司也積極參與其開發。

正如我們從前一小節的鏈接中看到的那樣,當涉及到在其工具中使用Java開發工具包的頂級公司(例如Android Studio或IntelliJ IDEA)的流行時Oracle JDK是更*受歡迎的*。

另一方面,主要的Linux發行版(Fedora,Ubuntu,Red Hat Enterprise Linux)提供OpenJDK作為默認的Java SE實現。

5.自Java 11以來的變化

正如我們在Oracle博客文章中看到的那樣 ,從Java 11開始有一些重要的變化。

首先,Oracle將使用Oracle JDK作為Oracle產品的一部分,將開源**GNU通用公共許可證v2與Classpath Exception(GPLv2 + CPE)*和商業許可證結合使用,或者更改其歷史“ BCL ”許可證,* 或者服務,或不歡迎開源軟件。

每個許可證都有不同的版本,但這些版本在功能上只與一些裝飾和包裝差異相同。

此外,OpenJDK現在提供傳統的“商業功能”,如Flight Recorder,Java Mission Control和Application Class-Data Sharing,以及Z Garbage Collector。因此,Oracle JDK和OpenJDK構建從Java 11開始基本相同

讓我們看看主要的區別:

  • 使用-XX:+ UnlockCommercialFeatures選項時,Oracle的Java 11工具包會發出警告,而在OpenJDK版本中,此選項會導致錯誤
  • Oracle JDK提供了一種配置,可將使用日志數據提供給“高級管理控制台”工具
  • Oracle一直要求第三方加密提供程序由已知證書簽名,而OpenJDK中的加密框架具有開放加密接口,這意味着可以使用哪些提供程序沒有限制
  • Oracle JDK 11將繼續包括安裝程序,品牌和JRE打包,而OpenJDK構建目前可用作ziptar.gz文件
  • javac的-釋放命令行為有所不同了Java 9和Java 10個目標由於一些額外的模塊在Oracle的版本存在
  • java -versionjava -fullversion命令的輸出將Oracle的構建與OpenJDK構建區分開來

6.其他JDK實現

現在讓我們快速瀏覽一下其他活動的Java Development Kit實現。

6.1. 自由開源

按字母順序列出的以下實現是開源的,可以免費使用:

  • Amazon Corretto
  • Azul Zulu
  • Bck2Brwsr
  • CACAO
  • Codename One
  • DoppioJVM
  • Eclipse OpenJ9
  • GraalVM CE
  • HaikuVM
  • HotSpot
  • Jamiga
  • JamVM
  • Jelatine JVM
  • Jikes RVM (Jikes Research Virtual Machine)
  • JVM.go
  • leJOS
  • Maxine
  • Multi-OS Engine
  • RopeVM
  • uJVM

6.2. 專有實現

還有受版權保護的實施:

  • Azul Zing JVM
  • CEE-J
  • Excelsior JET
  • GraalVM EE
  • Imsys AB
  • JamaicaVM(aicas)
  • JBlend(Aplix)
  • MicroJvm(IS2T - 工業智能軟件技術)
  • OJVM
  • PTC Perc
  • SAP JVM
  • Waratek CloudVM for Java

與上面列出的有效實現一起,我們可以看到非有效實現的列表 以及每個實現的簡短描述。

7.結論

在本文中,我們專注於當今最流行的兩個Java開發工具包。

我們首先描述了它們中的每一個,然后強調了它們之間最顯着的差異。然后,我們特別關注自Java 11以來的變化和差異。最后,我們列出了今天可用的其他有效實現。

8.備注

翻譯自:

https://www.baeldung.com/oracle-jdk-vs-openjdk?fbclid=IwAR1OdHRjnypD4ShnAMHOd-Ef4iW1-3duKqaiGT2s5ijv48mEDXg8EMhWkZs


免責聲明!

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



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