原文地址:https://www.infoworld.com/article/3478122/get-ready-for-more-java-licensing-changes.html
Oracle JDK 17的许可协议将于9月变更回Oracle Technology Network License Agreement,这将迫使用户重新评估他们的使用策略。
有句老话说,唯一不变的就是变化。这在Oracle Java的许可政策上体现得尤为明显。自2018年以来,随着新的OpenJDK发布节奏和特定长期支持(LTS)版本的推出,Oracle对许可条件和定价进行了四次重大调整,对企业内部Java的使用产生了较大影响。
最初,Oracle引入了技术网络许可协议(OTNLA)。在此之前,人们普遍认为Java平台是免费的,包括定期更新的维护服务。(从技术上讲,Java的使用有领域限制,如果用于嵌入式或一次性应用程序,可能需要支付许可费。)
OTNLA的限制更为严格。除非您将Oracle JDK用于个人用途(例如玩Minecraft)、开发、测试、Oracle批准的应用程序或在Oracle Cloud中使用,否则您需要购买Java SE订阅。OTNLA适用于Oracle JDK 8u211及更高版本以及Oracle JDK 11。
2021年9月,Oracle发布了Java的下一个LTS版本——JDK 17,同时对其许可政策进行了重大修改,推出了免费条款和条件(NFTC)。表面上看,NFTC似乎限制较少。
-
允许您使用Oracle JDK用于开发、测试、制作原型和演示应用程序,以及个人使用或内部业务运营
然而,许可并未明确界定什么是“内部业务运营”。许多用户基于这一点,选择使用Oracle JDK 17及其后续更新来维护应用程序的安全性和稳定性,而无需购买Java SE订阅。
但是,NFTC是有时间限制的。根据Oracle JDK许可常见问题解答
-
LTS版本(如JDK 17)将在后续LTS版本发布后的一年内根据NFTC条款继续更新。
随着LTS发布节奏从三年改为两年,任何给定的LTS版本都有三年的免费期。
后续LTS版本JDK 21已于2023年9月发布,这意味着JDK 17的免费期将于2024年9月结束。届时,Oracle JDK 17的许可证将恢复为OTNLA,用户将面临以下选择:
1.遵守OTNLA条款并支付后续更新费用
价格取决于公司员工数量。根据Java SE通用全球价格表,这包括所有全职、兼职、临时员工以及支持内部业务运营的代理商、承包商和顾问。
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项目,提供了多种替代发行版,这些发行版都通过了技术兼容性工具包(TCK)的测试,确保功能与Oracle Java SE一致。选择替代OpenJDK发行版可以提供不同级别的功能、支持和成本,通常比选项1便宜,最高可节省70%。通过选择合适的供应商,用户还可以获得更长的时间窗口,在此期间不需要立即升级到更新版本。
简而言之,若您打算继续在企业应用中使用 Oracle JDK 17,那么在用户依赖这些应用的情况下,您需要考虑诸多因素。不过,好在下一次许可证更新前,您仍有时间来制定相应的应对策略。
译文概述
-
从2024年9月开始,Oracle将不再为JDK 17提供免费的商用许可。
-
Oracle 每两年发行一个长期支持(LTS)的JDK版本,并为每个LTS版本提供三年的免费使用期。
-
对于Oracle JDK 8u221之前的版本,用户可以继续无限期免费商用。
-
对于当前使用JDK 17的用户来说,迁移到JDK21是个不错的选择。JDK 21引入虚拟线程概念,这一特性显著降低了高并发应用程序的开发复杂性和资源消耗。此外,用户也可以考虑切换到其他免费的OpenJDK发行版。