龙空技术网

技术趋势:你的Oracle JDK交费了吗?

令狐冲学Java 3926

前言:

而今小伙伴们对“oracle每个月1号”大体比较注重,你们都想要剖析一些“oracle每个月1号”的相关内容。那么小编同时在网络上汇集了一些关于“oracle每个月1号””的相关知识,希望同学们能喜欢,看官们快快来学习一下吧!

从 2019 年 4 月 16 起的发行版更改了 Oracle Java 许可。

新的适用于 Oracle Java SE 的 Oracle 技术网许可协议 与以前的 Oracle Java 许可有很大差异。 新许可允许某些免费使用(例如个人使用和开发使用),而根据以前的 Oracle Java 许可获得授权的其他使用可能会不再支持。 请在下载和使用此产品之前认真阅读条款。

距离Oracle宣布商用Oracle Jdk要收费已经过去一年了,公司的Oracle Jdk版本一直没有升级,维持在8U211之前。但是,这始终是个问题,迟早要面对,最终我们决定采用OpenJDK,轰轰烈烈的Oracle Jdk替换为OpenJDK的升级过程就要开始了,但愿别有什么坑。

下面梳理一下JDK的收费的问题。

2019年4月16日,Oracle发布了新的JDK 8的更新,版本号为8u211和8u212。与以往不同的是,新版本的许可协议从BCL换成了OTN,这就意味着,如果想在生产环境使用这个版本了或者之后发布的新版本,就需要给Oracle交钱了。

问题一:Oracle JDK使用什么协议?

BCL协议,即Oracle Binary Code License Agreement,协议规定你可以使用JDK,但是不能进行修改。私用和商用都可以,但是JDK中的某些商业特性,是需要付费才可以使用的。OTN协议,即Oracle Technology Network License Agreement,目前新发布的JDK用的都是这个协议,可以私用,商用需要付费。Oracle JDK在8U211之前是BCL协议,之后都是OTN协议。

问题二:不想掏钱怎么办?

可以使用OpenJDK,OpenJDK是一个基于GPLv2+CE协议的开源JDK实现,他由OpenJDK社区来运作,作为OpenJDK社区的主导者,Oracle也在尽量减小OpenJDK和Oracle JDK的差别,将一些商业特性移植到了OpenJDK上,比如Java Flight Recorder,Java Mission Control和ZGC等等。对于普通开发者,两者差异可忽略不计。

除了Oracle的OpenJDK,还有很多免费OpenJDK实现可以用,比如 Zulu,AdoptOpenJDK,Amazon的Corretto和阿里巴巴的dragonwell等等。

问题三:OpenJDK和OracleJDK有什么关系?

Yes. Oracle JDK is based on the OpenJDK source code. In addition, it contains closed-source components

是的,Oracle JDK 是在OpenJDK源码的基础上编译的,加入了一些商业化组件和features.除此之外,我们还关心两者的发布关系,下面来看下JDK的发布模型。2017年9月21日,伴随着JDK9的发布,JDK就开启了新的发布模式(如下图所示)。JDK分为OracleJDK、OpenJDK。

OpenJDK的lience是GPLv2+CPE,可以免费使用。从JDK9开始,OpenJDK每6个月发布一次,也就是每年的3月份、9月份各发布一次,称为feature release。JDK9就是在2017年9月份过GA的。除了feature release之外,OpenJDK每个季度会提供一个update release。分别在1月份、4月份、7月份和10月份。所以每个feature release之后,都会有两个update release。

使用OracleJDK需要commercial license,这个不是免费的。OracleJDK每3年发布一次LTS(Long Term Support)版本,Support的期限是8年。2018年9月发布的JDK11是第一个LTS版本,support到2026年9月。同样,OracleJDK每年也有4个update release。因为OracleJDK每3年发布一次LTS版本,所以下一次LTS将在2021年9月份发布。

问题四:Oracle JDK 和 Open JDK有什么区别

参考 所说,可以看到大概有几点区别:

1.Oracle JDK 包含了OpenJDK版本中没有的“商业特性”。然而,正如承诺的那样,在过去的一年中,Oracle正在为OpenJDK社区贡献这些特性:

Java Flight Recorder,Java Mission Control,Application Class-Data Sharing, andZGC.

Oracle认为,从Java 11开始,Oracle JDK构建和OpenJDK构建在本质上是相同的。

From Java 11 forward, therefore, Oracle JDK builds and OpenJDK builds will be essentially identical.

仍然存在少量的差异,有些是故意的(可能因为Sun公司源码协议问题),有些是修饰性的,有些只是因为需要更多的时间与OpenJDK贡献者进行讨论,具体如下:Oracle JDK 11在使用-XX:+ unlockcommercial alfeatures选项时发出警告,而在OpenJDK中,这个选项会导致错误。可以将Oracle JDK 11配置为向“高级管理控制台”工具提供日志数据,这是一个单独的商业Oracle产品。Oracle JDK中包含一些OpenJDK中不存在的模块(不过从Oracle的描述来看,这些差别是一些遗留原因造成的,Oracle会逐步消除这些差异),具体如下:javafx.basejavafx.controlsjavafx.fxmljavafx.graphicsjavafx.mediajavafx.webjava.jnlpjdk.jfrjdk.management.cmmjdk.management.jfrjdk.management.resourcejdk.packager.servicesjdk.snmpjava -version和java -fullversion命令的输出将区分Oracle JDK构建和OpenJDK构建,具体来说,运行java -version:

Oracle JDK 11的构建结果如下:

java 11 2018-09-25

Java(TM) SE Runtime Environment 18.9 (build 11+28)

Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11+28, mixed mode)

And for an OpenJDK 11 build:

openjdk version "11" 2018-09-25

OpenJDK Runtime Environment 18.9 (build 11+28)

OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)

Oracle JDK一直要求第三方加密提供者由已知的证书签名。OpenJDK中的加密框架有一个开放的加密接口,这意味着它不限制可以使用哪些提供程序。Oracle JDK 11将继续包括安装程序、品牌和JRE打包,以获得与传统桌面使用一致的体验。Oracle OpenJDK的构建版本目前以zip和tar.gz文件的形式提供,同时还在考虑其他的发布格式。问题五:我们愿意掏钱,怎么收费?

可以通过订阅Java SE Subscription来付费,桌面用途每人每月2.5刀,服务器用途每个处理器每月25刀,量多还有优惠。

写在最后:

Money!但是挣钱的同时,Oracle也不想把市场整没了,毕竟在这个领域内还有一些竞争者,所以在提供了商用收费、私用免费模式的同时,推出了OpenJDK,供企业免费使用;从Oracle JDK和OpenJDK的发布来看,OpenJDK的发布频率更快,也存在OpenJDK为Oracle JDK探路的用意;Oracle JDK提供给对稳定性要求更高的企业用户,比如说传统的大企业,不差钱;OpenJDK提供给一些急先锋,反正你自己公司一周几个版本,bug不断,也不在乎OpenJDK升级的这点风险。

来个投票,也欢迎已经大规模迁移过的朋友留言探讨迁移过程中是否有什么坑:

标签: #oracle每个月1号