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,那么在用户依赖这些应用的情况下,您需要考虑诸多因素。不过,好在下一次许可证更新前,您仍有时间来制定相应的应对策略。
译文概述
-
从2024年9月开始,Oracle将不再为JDK 17提供免费的商用许可。
-
Oracle 每两年发行一个长期支持(LTS)的JDK版本,并为每个LTS版本提供三年的免费使用期。
-
对于Oracle JDK 8u221之前的版本,用户可以继续无限期免费商用。
-
对于当前使用JDK 17的用户来说,迁移到JDK21是个不错的选择。JDK 21引入虚拟线程概念,这一特性显著降低了高并发应用程序的开发复杂性和资源消耗。此外,用户也可以考虑切换到其他免费的OpenJDK发行版。
相关文章:

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,这将迫使用户重新评估他们的使用策略。 有句老话说…...

网页交互模拟:模拟用户输入、点击、选择、滚动等交互操作
目录 一、理论基础 1.1 网页交互模拟的重要性 1.2 网页交互的基本原理 二、常用工具介绍 2.1 Selenium 2.2 Puppeteer 2.3 Cypress 2.4 TestCafe 三、实战案例 3.1 模拟用户输入 3.2 模拟用户点击 3.3 模拟用户选择 3.4 模拟滚动操作 四、最佳实践与优化 4.1 代…...

C sharp 学习 笔记
介绍 这篇文章是我学习C#语言的笔记 学的是哔哩哔哩刘铁锰老师2014年的课程 在学习C#之前已经学习过C语言了。看的是哔哩哔哩比特鹏哥的课程。他们讲的都很不错 正在更新, 大家可以在我的gitee仓库中下载笔记源文件、项目资料等 笔记源文件可以在Notion中导入…...

文章资讯职场话题网站源码整站资源自带2000+数据
介绍: 数据有点多,数据资源包比较大,压缩后还有250m左右。值钱的是数据,网站上传后直接可用,爽飞了 环境:NGINX1.18 mysql5.6 php7.2 代码下载...
c++ templates常用函数
说明 c templates学习中会遇到大量的模版常用函数,书上不会详细介绍,查看一个之后要永久记录一段时间之后再看看,这里总结一下。 undeclared(); undeclared();//若undeclared();未定义,则在第一阶段编译时报错 undeclared(t);…...

【重学 MySQL】三十一、字符串函数
【重学 MySQL】三十一、字符串函数 函数名称用法描述ASCII(S)返回字符串S中的第一个字符的ASCII码值CHAR_LENGTH(s)返回字符串s的字符数,与CHARACTER_LENGTH(s)相同LENGTH(s)返回字符串s的字节数,和字符集有关CONCAT(s1,s2,…,sn)连接s1,s2,…,sn为一个字…...

828华为云征文 | 使用Flexus云服务器X实例部署GLPI资产管理系统
828华为云征文 | 使用Flexus云服务器X实例部署GLPI资产管理系统 1. 部署环境说明2. 部署基础环境2.1. 操作系统基本配置2.2. 部署Nginx2.3. 部署MySQL2.4. 部署PHP 3. 部署GLPI资产管理系统 1. 部署环境说明 本次环境选择使用华为云Flexus云服务器X实例,因为其具有高…...
深入理解Go语言的面向对象编程、Git与GitHub的使用
Go语言以其简洁、高效和并发支持而广受欢迎。虽然Go不是一种传统的面向对象编程(OOP)语言,但它提供了一些特性,使我们能够模拟OOP的某些概念。在本文中,我们将深入探讨Go语言中的面向对象编程技巧,以及如何使用Git和GitHub进行版本控制。通过丰富的代码示例和详细的解释,…...

redis底层—通信协议RESP
...

JVM 调优篇6 可视化性能监控工具-JVisual VM
一 Visual VM 1.1 概述 Visual VM是一个功能强大的多合一故障诊断和性能监控的可视化工具。 它集成了多个JDK命令行工具,使用Visual VM可用于显示虚拟机进程及进程的配置和环境信息(jps,jinfo),监视应用程序的CPU、GC、堆、方法区及线程的信息(jstat…...

C#学习笔记(三)Visual Studio安装与使用
博主刚开始接触C#,本系列为学习记录,如有错误欢迎各位大佬指正!期待互相交流! 上一篇文章中安装了Visual Studio Code来编写调试C#程序,但是博主的目标是编写带窗口的应用程序,了解之后发现需要安装Visual …...

element-plus的菜单组件el-menu
菜单是几乎是每个管理系统的软件系统中不可或缺的,element-plus提供的菜单组件可以快速完成大部分的菜单的需求开发, 该组件内置和vue-router的集成,使用起来很方便。 主要组件如下 el-menu 顶级菜单组件 主要属性 mode:决定菜单的展示模式…...
深入浅出通信原理
深入浅出通信原理 文章目录 深入浅出通信原理前言一、概述二、信号和频谱2.1 信号2.2 信号的分解与合成2.3 傅里叶变换的特性2.4 离散傅里叶变化 三 信道3.1 衰减和损耗3.2 多普勒效应 四 信源编码4.1 采样4.2 量化4.3 编码 五 基带信号的发送和接受5.1 脉冲成形5.2 眼图 六 频…...

Gitee Pipeline 从入门到实战【详细步骤】
文章目录 Gitee Pipeline 简介Gitee Pipeline 实战案例 1 - 前端部署输入源NPM 构建Docker 镜像构建Shell 命令执行案例 2 - 后端部署全局参数输入源Maven 构建Docker 镜像构建Shell 命令执行参考🚀 本文目标:快速了解 Gitee Pipeline,并实现前端及后端打包部署。 Gitee Pi…...

【贪心算法】贪心算法
贪心算法简介 1.什么是贪心算法2.贪心算法的特点3.学习贪心的方向 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1.什么是贪心算法 与其说是…...

【网络原理】❤️Tcp 常用机制❤️ —— 延时应答,捎带应答, 面向字节流, 异常情况处理。保姆式详解 , 建议收藏 !!!
本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…...

Scratch教学案例 —— 制作生日蛋糕
小虎鲸Scratch资源站-免费少儿编程Scratch作品源码,素材,教程分享网站! 简介 在这个教学案例中,我们将使用Scratch制作一个简单而有趣的生日蛋糕动画。通过这个项目,学生可以学习到如何使用Scratch中的基本编程块进行角色控制、造型切换、舞台背景设置以…...

【深度学习】搞懂卷积神经网络(一)
卷积神经网络是一种具有局部连接,权重共享等特性的深层前馈神经网络。一般是由卷积层,池化层,全连接层交叉堆叠而成,使用反向传播算法进行训练。卷积神经网络具有一定程度上的平移,缩放和旋转不变性,较前馈…...

VisionPro - 基础 - 00 模板匹配技术和在VP中的使用 - PMAlign - PatMax - (上)
前言 模板匹配是机器视觉领域,尤其是工业视觉领域内,自动化经常要使用的一个视觉算法应用模式。在VP里面,有几种简单的模版匹配的算子,这里大致介绍一下VP的PatMax。 在视觉应用领域,搜索匹配的特征是经常要用到的方…...

容器镜像同步工具image-migrator
1 概述 image-migrator是一个用于容器镜像同步的可执行二进制命令行工具(不依赖于docker命令),能够自动将基于Docker Registry v2镜像仓库(registry、云厂商容器镜像服务、docker hub、Quay、Harbor )中的镜像迁移到基…...

深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...
32单片机——基本定时器
STM32F103有众多的定时器,其中包括2个基本定时器(TIM6和TIM7)、4个通用定时器(TIM2~TIM5)、2个高级控制定时器(TIM1和TIM8),这些定时器彼此完全独立,不共享任何资源 1、定…...

Win系统权限提升篇UAC绕过DLL劫持未引号路径可控服务全检项目
应用场景: 1、常规某个机器被钓鱼后门攻击后,我们需要做更高权限操作或权限维持等。 2、内网域中某个机器被钓鱼后门攻击后,我们需要对后续内网域做安全测试。 #Win10&11-BypassUAC自动提权-MSF&UACME 为了远程执行目标的exe或者b…...