原文:https://blog.joda.org/2018/09/time-to-look-beyond-oracles-jdk.html
作者:Stephen Colebourne,編譯:OSC-局長
譯文:開源中國(oschina2013)
如需轉載請在文中註明上述資訊
Java 11 計劃於本月,即 9 月 25 日釋出。與 Java 10 不同,Java 11 不僅提供了長期支援,還將作為 Java 平臺的參考實現。新的長期支援版本每三年釋出一次,根據後續的釋出計劃,Java 17 將於 2021 年釋出。
我們曾報道過,甲骨文已經改進了Java SE(標準版)的商業支援計劃,由之前企業一次性支付永久許可費用加年度支援費用的樣式,改為新的訂閱樣式(Java SE Subscription),當然個人使用和非商業使用可繼續享受免費支援,無需訂閱。在本文中,我們不妨瞭解一下 Oracle JDK 之外的 JDK,以及圍繞 OpenJDK 構建的生態系統所擁有的深度。本文將為大家介紹一些主流的 OpenJDK 變種版本。
OpenJDK builds
實際上,JDK 只有一組原始碼。原始碼使用 Mercurial(分散式版本控制系統)託管在 OpenJDK。任何人都可以獲取該原始碼,並透過原始碼構建一個變種版本釋出到網路上。但是需要一個獨有的認證程式(certification process)來確保構建的變種版本是有效的。
這個認證程式是由 JCP(Java Community Process) 組織審核的,後者會提供技術相容性工具包(TCK,有時也稱為 JCK)。如果一個組織構建了一個 OpenJDK 的變種版本,並透過了 TCK 的相容性測試,則可將構建的這個變種版本稱為”Java SE compatible”(相容 Java SE 的 JDK)。
要註意的是,如果提供者沒有從 Oracle 獲得商業許可,不能將該構建版本稱為”Java SE”。例如,透過 TCK 相容性測試的 AdoptOpenJDK 不是”Java SE”,而是相容 Java SE 的 JDK或相容 Java SE 規範的 JDK。還要註意,認證程式目前是基於信任基礎的 —— 結果不會提交給 JCP/Oracle 用於檢查,也不會被公開。詳細說明可檢視:
-
https://blog.joda.org/2018/09/time-to-look-beyond-oracles-jdk.html?showComment=1536303755275#c5934330550793525320
總的來說,OpenJDK + 變種版本的提供者將一個原始碼庫轉換為許多不同的變種構建版本。
在將 OpenJDK 原始碼轉換為變種版本的過程中,提供者可能會新增一些額外的標記或實用程式,但註意不要影響後面的認證程式。例如,提供者無法為 API 新增一個新的公共方法,或一項新的語言特性。
Oracle JDK
從 Java 11 開始,這是一個提供付費支援的品牌商業版本。當然個人使用和非商業使用仍可繼續享受免費支援(Oracle JDK 仍將為開發、測試、原型或展示目的的使用提供免費支援),不需要商業支援或企業管理工具的人可以選擇使用 Oracle 的 OpenJDK 構建。Oracle 計劃在 2026 年後提供全額付費的服務支援,詳情:
-
http://www.oracle.com/technetwork/java/javase/eol-135779.html
要註意的是,與過去不同,Oracle JDK 並不比 OpenJDK “更好”(前提是兩者都處於相同的安全補丁級別)。
OpenJDK builds by Oracle
這些是免費的、完全無品牌的 OpenJDK 版本,基於 GPL 開源協議(+Classpath Extension),公司可安全且放心使用。這些版本僅在釋出後的六個月內可以使用。要繼續使用由 Oracle 的 OpenJDK 構建版本和安全補丁,需要在釋出新版本後的一個月內升級至新版本。
AdoptOpenJDK builds
這些版本也是免費的、完全無品牌的 OpenJDK 版本,基於 GPL 開源協議(+Classpath Extension),以免費軟體的形式提供社群版的 OpenJDK 二進位制包,公司也可安全且放心使用。與由 Oracle 的 OpenJDK 構建版本不同,這些版本會提供更長的支援,像 Java 11 一樣,至少提供 4 年的免費長期支援(LTS)計劃。AdoptOpenJDK 是一個由社群驅動的專案,如果其他群組在 OpenJDK 的原始碼倉庫中建立和釋出了安全修複程式,它們也會提供構建。 IBM 和 Red Hat 也曾表示他們打算提供這些安全補丁。
AdoptOpenJDK OpenJ9 builds
除了標準的 OpenJDK 構建外,AdoptOpenJDK 還提供了使用 OpenJ9 而非 HotSpot 的版本。OpenJ9 最初是由 IBM 實現的 JVM,現在已開源並交由 Eclipse 運作。
Red Hat OpenJDK builds
Red Hat 透過 Red Hat Enterprise Linux (RHEL) 提供了 OpenJDK 的變種構建版本,這也是提供付費支援的商業版本,詳情:
-
https://access.redhat.com/articles/1299013
他們在為 OpenJDK 提供安全補丁方面做得非常好,而且 Red Hat 還為 Java 6 和 7 提供安全更新。Red Hat 構建的版本能更好地整合到作業系統中,所以它稱不上是純粹的 OpenJDK 版本(儘管你也不會註意到差異)。
Other Linux OpenJDK builds
不同的 Linux 發行版擁有不同的方式來訪問 OpenJDK。這裡是一些常見的發行版:Debian,Fedora, Arch, Ubuntu。
Azul Zulu
Zulu 是 OpenJDK 的免費版本,但同時提供商業付費支援。當然不購買收費的技術支援的話,Azul 也有為 Zulu 提供免費的社群技術支援。Azul 有一個廣泛的計劃以支援 Zulu 商業化,包括支援 Java 9,13 和 15 ,這點與其他的提供者有不同之處,詳情:
-
https://www.azul.com/products/azul_support_roadmap/
IBM
IBM 為 Java 8 及更早版本提供並支援 JDK。他們還使用 OpenJ9 為 AdoptOpenJDK 構建提供商業付費支援。
SAP
SAP 使用 GPL + CE 許可證為 Java 10 及更高版本提供 JDK。他們還有一個商業的閉源 JVM。不過沒有找到任何有關支援生命週期的資訊。
總結
現在有很多不同的 OpenJDK 變種版本,它們都基於原始的上游程式碼倉庫。但每個構建版本都提供了獨有的選擇 —— 免費或商業,品牌或非品牌。可以選擇當然很好,但如果你追求的是“標準”,那麼目前我最好的建議是使用 Oracle 的 OpenJDK 構建版本、AdoptOpenJDK 構建版本或作業系統(Linux)中內建的版本。
●編號788,輸入編號直達本文
●輸入m獲取文章目錄
演演算法與資料結構
更多推薦《18個技術類公眾微信》
涵蓋:程式人生、演演算法與資料結構、駭客技術與網路安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。