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