Java 11 將至,不妨瞭解一下 Oracle JDK 之外的版本
Java 11 計劃於本月,即 9 月 25 日釋出。與 Java 10 不同,Java 11 不僅提供了長期支援,還將作為 Java 平臺的參考實現。新的長期支援版本每三年釋出一次,根據後續的釋出計劃,Java 17 將於 2021 年釋出。
我們曾報道過,甲骨文已經改進了Java SE(標準版)的商業支援計劃,由之前企業一次性支付永久許可費用加年度支援費用的模式,改為新的訂閱模式( ofollow,noindex">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 用於檢查,也不會被公開。 詳細說明可點此檢視 。
總的來說,OpenJDK + 變種版本的提供者將一個原始碼庫轉換為許多不同的變種構建版本。
在將 OpenJDK 原始碼轉換為變種版本的過程中,提供者可能會新增一些額外的標記或實用程式,但注意不要影響後面的認證程式。例如,提供者無法為 API 新增一個新的公共方法,或一項新的語言特性。
Oracle JDK
從 Java 11 開始,這是一個提供付費支援的品牌商業版本。當然個人使用和非商業使用仍可繼續享受免費支援(Oracle JDK 仍將為開發、測試、原型或展示目的的使用提供免費支援),不需要商業支援或企業管理工具的人可以選擇使用 Oracle 的 OpenJDK 構建。Oracle 計劃在 2026 年後提供全額付費的服務支援( 詳情 )。要注意的是,與過去不同,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 的變種構建版本,這也是提供付費支援的商業版本( 詳情 )。他們在為 OpenJDK 提供安全補丁方面做得非常好,而且 Red Hat 還為 Java 6 和 7 提供安全更新。Red Hat 構建的版本能 更好地整合到 作業系統中,所以它稱不上是純粹的 OpenJDK 版本(儘管你也不會注意到差異)。
Other Linux OpenJDK builds
不同的 Linux 發行版擁有不同的方式來訪問 OpenJDK。這裡是一些常見的發行版: Debian , Fedora" target="_blank" rel="nofollow,noindex">Fedora , Arch , Ubuntu 。
Azul Zulu
Zulu 是 OpenJDK 的免費版本,但同時提供商業付費支援。當然不購買收費的技術支援的話,Azul 也有為 Zulu 提供免費的 社群技術支援 。Azul 有一個廣泛的計劃以支援 Zulu 商業化,包括支援 Java 9,13 和 15 ,這點與其他的提供者有不同之處( 詳情 )。
IBM
IBM 為 Java 8 及更早版本 提供並支援 JDK。他們還使用 OpenJ9 為 AdoptOpenJDK 構建提供 商業付費支援 。
SAP
SAP 使用 GPL + CE 許可證為 Java 10 及更高版本 提供 JDK。他們還有一個商業的閉源 JVM。不過沒有找到任何有關支援生命週期的資訊。
總結
現在有很多不同的 OpenJDK 變種版本,它們都基於原始的上游程式碼倉庫。但每個構建版本都提供了獨有的選擇 —— 免費或商業,品牌或非品牌。可以選擇當然很好,但如果你追求的是“標準”,那麼目前我最好的建議是使用 Oracle 的 OpenJDK 構建版本、AdoptOpenJDK 構建版本或作業系統(Linux)中內建的版本。
編譯自: https://blog.joda.org/2018/09/time-to-look-beyond-oracles-jdk.html