整理丨诺亚
出品 | 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
来源: 51CTO技术栈
我们选择迁移到openjdk