整理丨諾亞
出品 | 51CTO技術棧(微信號:blog51cto)
世界唯一不變的就是變化本身,這一點在 Oracle Java 的許可方面表現得尤為明顯。
Oracle JDK 17 的許可證將在今年9月恢復為 Oracle Technology Network License Agreement (OTNLA) 。這意味著用戶需要根據新的許可條款來評估他們的使用情況,并可能需要做出相應的調整。
1.Oracle 的試探:對Java 的許可證不斷變更
這些修改對企業在其組織內部使用 Java 產生了深遠影響。
最初,在Sun Microsystems (Java 的原始創造者)時代,Java 的開發工具包(JDK)和 Java 運行環境(JRE)是免費提供的,并且 Sun 也支持 OpenJDK 項目。但2010年Oracle 收購了 Sun Microsystems之后,情況發生了變化。
Oracle 一開始同樣支持免費的 Java SE 開發工具包。但2018 年左右,Oracle 開始對使用 Oracle JDK 的商業實體收取費用。這意味著企業必須購買訂閱服務才能合法地在生產環境中使用 Oracle JDK。此舉一出,很快引起熱議。
隨著 Oracle 對其 JDK 實施收費,越來越多的企業和個人轉向基于 OpenJDK 的發行版,因為這些發行版是免費的并且與 Oracle JDK 功能上基本一致。
于是Oracle 不斷調整其許可證條款,例如引入 Oracle 技術網絡許可協議(OTNLA) ,即本文開頭提到的條款。
OTNLA 的限制性更鮮明。除非你將 Oracle JDK 用于個人用途(比如在家玩《我的世界》)、開發和測試、Oracle 批準的應用程序或是在 Oracle 云中使用,否則你就需要購買 Java SE 訂閱。OTNLA 適用于 Oracle JDK 8 的更新 211 及之后的版本,以及 Oracle JDK 11。
當 Java 的下一個長期支持(LTS)版本 JDK 17 于 2021 年 9 月發布時,Oracle 對其許可政策進行了另一項重大修訂——即無費用條款和條件 (No Fee Terms and Conditions,NFTC),并對 LTS 版本的免費使用期限進行了調整。
表面上看,這項政策似乎更加寬松,它規定你可以使用 Oracle JDK 進行以下活動:
......為了開發、測試、原型設計和演示你的應用程序的目的,以及運行該程序供你個人使用或內部業務運營之用。
“內部業務運營”的具體定義并未在許可協議中明確。基于這一點,許多用戶選擇使用 Oracle JDK 17 及其后續更新,以保持其應用的安全性和穩定性,而無需購買 Java SE 訂閱。
然而,NFTC 是有時限的。
2.用戶的選擇:乖乖付費or 另謀出路
根據 Oracle JDK 許可證常見問題解答:
長期支持(LTS)版本,如 JDK 17,將在后續 LTS 版本發布后的一年內根據此許可證獲得更新。
當 JDK 17 發布時,LTS版本的發布周期從之前的三年縮短到了兩年,這意味著每個 LTS 版本都有三年的免費使用期。
隨后的 LTS 版本是 JDK 21,它于 2023 年 9 月發布,也就是 10 個月前。這意味著免費使用期將在 2024 年 9 月結束,距今不到兩個月。屆時,Oracle JDK 17 的許可證將恢復為 OTNLA,用戶將面臨一系列關于其應用程序的選擇:
1、遵循 OTNLA 的條款并為后續更新付費,費用依據公司的員工數量計算。根據 Java SE Universal 全球價格列表,這涉及公司所有全職、兼職、臨時員工,以及代理商、承包商、外包商和顧問中支持你內部業務運營的所有全職、兼職和臨時員工的數量。
2、轉移到下一個 LTS 版本,即 JDK 21。這受 NFTC 的覆蓋,因此不需要 Java SE Universal 訂閱。雖然這看起來像是一個簡單的選擇,但在做出這個決定之前值得考慮一些細節,比如:
- 盡管 Java 在其生命周期中展示了出色的向后兼容性,但無法保證你的應用程序在 JDK 21 上能夠按預期工作。自 JDK 9 以來,平臺不僅添加了新功能,還移除了部分較舊且較少使用的功能。根據應用程序的年齡和復雜程度,這可能會導致問題。
- 轉移到 JDK 21 后,你只有兩年的時間來升級到 JDK 25,以免被 JDK 21 恢復到 OTNLA 影響。此后,你需要每兩年轉移到下一個 LTS 版本。
3、轉移到其他 Java 發行版。Java 的強大優勢之一就是 OpenJDK 項目。有許多不同的 OpenJDK 發行版可供選擇,它們都經過了對許可版本的 Technology Compatibility Kit (TCK) 的測試。這是 Java SE 規范的一部分,可用于確認發行版與 Oracle Java SE 功能相同。其他 OpenJDK 發行版仍然可以選擇提供不同級別的特性、支持和成本。這通常會比第一種選項便宜得多,通常可以節省高達 70%,并且通過適當的供應商選擇,可以為用戶提供更長的時間跨度,以便在需要遷移至新版本之前使用。
如果你使用 Oracle JDK 17 運行企業級應用程序,尤其是當你的用戶依賴于這些應用程序時,有很多因素需要考慮。幸運的是,在下一次許可證變更之前,你還有時間進行相應的規劃。
3.有多少Oracle Java 用戶在考慮遷移到替代方案
根據Azul最近的一項調查,超過 80% 的受訪者表示,他們正在尋求從 Oracle 的 JDK 遷移到基于 OpenJDK 的替代方案。
根據 New Relic 的數據,Oracle 在 2020 年占據了約 75% 的 JDK 分發市場份額。而在 2023 年 Azul 的 Java 狀態調查和報告中,這一比例降至 42%。最新的調查顯示這一趨勢仍在繼續,86% 使用 Oracle Java SE 的受訪者表示他們正在或將計劃將部分或全部 Java 應用遷移到基于 OpenJDK 的發行版。
從 Oracle JDK 遷移的主要原因包括:
- 成本(53% 的受訪者認為 Oracle Java 太貴);
- 偏好開源替代品(47%);
- 對 Oracle 定價和政策變更的不確定性(38%);
- 審計風險擔憂(25%);
- 對 Oracle 支持的不滿(24%)
Azul 的聯合創始人兼首席執行官 Scott Sellers 在一份聲明中表示:“‘該報告的數據描繪了一幅清晰的畫面:Java 用戶正在尋找相當于或優于 Oracle Java SE 的替代方案,以解決他們在許可和支援成本以及審計風險方面的業務顧慮。更好的前進道路是:那些轉向基于 OpenJDK 的商業支持發行版的組織報告了順暢的體驗,并實現了顯著的成本節約。”
總體而言,大多數希望從 Oracle Java 遷移出去的組織并不是期望找到更好的東西,而是同樣的東西,因為“他們只想繼續使用Java,他們希望繼續在同一時間獲得更新,內容包括安全補丁、錯誤修復等,與從 Oracle 獲得的一樣”。
此外,三分之二的受訪者表示他們的組織在遷移后節省了成本。
Sellers 補充道:“雖然一些組織最初對于遷移猶豫不決,我們的調查顯示那些已經遷移到基于 OpenJDK 的發行版的組織有著積極的體驗。很明顯,Java 社區正在用自己的行動投票,尋求更經濟、更靈活和更開放的解決方案來滿足他們的 Java 應用程序和基于 Java 的基礎設施需求。”
不過鑒于 Azul 某種程度上算是Oracle在Java領域的競爭對手,所以對于這一調查結果還要辯證看待。
Constellation Research 的分析師 Holger Mueller談到,“所有的開源生態系統都非常關注整體的方向和成本。可以說,Java 社區對 Oracle 收購 Sun 和 Java 非常關注,但總體而言,Oracle 已經證明是 Java 的良好守護者。像 Azul 這樣的供應商提供了企業級替代方案,推動了 Java 作為一種具有競爭力的編程語言的發展。Azul 的這項調查肯定會引起 Java 生態系統的廣泛關注,并促使它變得更好。”
當然,Oracle有很大可能在平衡 Java 的開放性和商業收益之間繼續踩著用戶的底線不斷試探,以期找到合適的定位。隨著時間的推移,這種平衡可能會繼續發生變化,影響著 Java 社區和企業的決策。
參考鏈接:
https://www.infoworld.com/article/3478122/get-ready-for-more-java-licensing-changes.html
https://thenewstack.io/survey-86-of-oracle-java-users-migrating-to-alternatives