当前位置: 首页 > news >正文

Java许可政策再变,Oracle JDK 17 免费期将结束!

原文地址: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,那么在用户依赖这些应用的情况下,您需要考虑诸多因素。不过,好在下一次许可证更新前,您仍有时间来制定相应的应对策略。

译文概述

  1. 从2024年9月开始,Oracle将不再为JDK 17提供免费的商用许可。

  2. Oracle 每两年发行一个长期支持(LTS)的JDK版本,并为每个LTS版本提供三年的免费使用期。

  3. 对于Oracle JDK 8u221之前的版本,用户可以继续无限期免费商用。

  4. 对于当前使用JDK 17的用户来说,迁移到JDK21是个不错的选择。JDK 21引入虚拟线程概念,这一特性显著降低了高并发应用程序的开发复杂性和资源消耗。此外,用户也可以考虑切换到其他免费的OpenJDK发行版。

http://www.lryc.cn/news/439673.html

相关文章:

  • 网页交互模拟:模拟用户输入、点击、选择、滚动等交互操作
  • C sharp 学习 笔记
  • 文章资讯职场话题网站源码整站资源自带2000+数据
  • c++ templates常用函数
  • 【重学 MySQL】三十一、字符串函数
  • 828华为云征文 | 使用Flexus云服务器X实例部署GLPI资产管理系统
  • 深入理解Go语言的面向对象编程、Git与GitHub的使用
  • redis底层—通信协议RESP
  • JVM 调优篇6 可视化性能监控工具-JVisual VM
  • C#学习笔记(三)Visual Studio安装与使用
  • element-plus的菜单组件el-menu
  • 深入浅出通信原理
  • Gitee Pipeline 从入门到实战【详细步骤】
  • 【贪心算法】贪心算法
  • 【网络原理】❤️Tcp 常用机制❤️ —— 延时应答,捎带应答, 面向字节流, 异常情况处理。保姆式详解 , 建议收藏 !!!
  • Scratch教学案例 —— 制作生日蛋糕
  • 【深度学习】搞懂卷积神经网络(一)
  • VisionPro - 基础 - 00 模板匹配技术和在VP中的使用 - PMAlign - PatMax - (上)
  • 容器镜像同步工具image-migrator
  • 嵌入式系统中的u-boot、kernel、rootfs的区别与关系
  • K8s1.28 部署Dashboard获取登录信息
  • 智能化大数据平台引领企业迈向精准决策时代
  • 1.3 计算机网络的分类
  • 深入剖析protobuf.js之Field类:内部机制、使用实践与高级应用指南
  • docker挂载宿主机文件run命令启动报错
  • Python实现 Socket.IO 的在线游戏场景
  • A+B P1001 A+B Problem
  • git编译安装报错
  • 知识|智能网联汽车多域电子电气架构会如何发展?
  • 【C++算法】位运算