想免费继续使用JDK吗?从java11以后别从Oracle下载了

Java生态系统一直以来是建立在一个高质量的免费(零成本)JDK之上的,它可以从甲骨文(Oracle)和以前的Sun获得。 今天的情况和以前不一样了。

Java现在每六个月发布一次版本,这个版本是指提供带有安全补丁和重要bug修复的更新版本。到目前为止,包括Java 8在内,已经提供了多年的免费支持,当使用Java 9以及遭遇六个月的发布周期时,这种免费的支持现在被控制得更严格了。

事实上,从Java 11开始,甲骨文将不会为Java提供免费的长期支持(Lts)。

下面是各个JAVA版本发布日期和免费结束日期。


版本 发布日期 甲骨文免费支持结束
Java 8 2014年3月 2019年1月(商业用途)
Java 9 2017年9月 2018年3月
Java 10 2018年3月 2018年9月
Java 11 2018年9月 2019年3月(可能延长)
Java 12 2019年3月 2019年9月


理由很简单,甲骨文希望将精力集中在推动Java向前发展上,其成本是由客户直接支付的长期支持费用(而不是免费赠送),要做到这一点,他们需要开发人员不断升级他们的Java版本,每六个月移动一次版本(并在两者之间获取补丁版本)。

当然,对于大多数开发者来说,这种快速升级是不可行的,但是Java现在已经被开源为OpenJDK,这意味着Oracle的免费结束支持日期并不令人担心。

OpenJDK
需要注意的一点是,世界上大多数jdk构建版本都是基于开放源代码的OpenJDK项目,Oracle JDK只是基于OpenJDK代码库的许多构建版本之一,虽然以前Oracle在JDK中有额外的额外功能,但是Java 11已经不再是这种情况了。

许多其他供应商也提供基于OpenJDK代码的构建版本,这些版本可能具有额外的品牌和/或额外的非核心功能, 这些供应商中的大多数还会对OpenJDK项目做出贡献,包括安全补丁。

关键是,你使用的JDK应该是主动做出的选择,还是被动地接受 ?你能多快得到安全补丁?会支持多久?是否需要向供应商施加合同压力以帮助解决任何问题?

获得JDK的方法主要有两种, 第一种是操作系统中的更新机制(例如*nix), 第二种方法是访问URL并下载二进制文件。

为了进一步研究这一点,让我们分别看一下Java 8和Java 11。

停留在Java 8?
如果您想在2019年1月之后继续使用Java 8,下面是我所看到的选择:

1)不关心安全。

这是完全有可能永远停留在最后的免费发行版, 当黑客摧毁你的公司 不要抱怨 。

2)依赖操作系统更新。

在*nix平台上,您很可能通过操作系统获得JDK,JDK的更新是通过操作系统供应商交付的。 这是RedHat参与的关键-他们承诺 在RedHatEnterpriseLinux中Java 8更新直到2023年6月-但是他们也有一个“上游优先”策略,这意味着他们更愿意将补丁推回“上游”OpenJDK项目。 您是否获得到JDK的安全修补程序将取决于您的操作系统供应商,以及是否需要为这些更新支付费用。

3)支付服务费。

一些公司通过收费提供对Java的持续支持,可以访问安全补丁流并使用某些保证更新发布版本(而不是志愿者主导的方法)。 如果您有现金,那么支付Java可能是公平和合理的?

4)在商业环境下使用非商业架构。

甲骨文提供构建Java 8的非商业用途,直到2019年12月,所以你可以一直使用到那个日期为止,之后你想让甲骨文的软件授权团队追着你吗?

5)自己构建OpenJDK。

安全修补程序流通过跟踪GPL许可下的公共Mercurial存储库的提交,完全有可能自己构建OpenJDK。 对于大多数公司来说, 这可能是一个非常现实的选择。

6)使用AdoptOpenJDK构建版本。

社区团队AdoptOpenJDK在过去的几年里,他们一直在忙着创建一个构建版本和测试平台。 因此,他们现在能够获取安全补丁的流*并将它们转换成发布版本,就像你从商业产品中获得的一样。 他们还在运行Java TCK(测试兼容性工具包),以允许这些构建被完全认证为Java SE。 他们的计划是在Java 8构建之前生产Java 8版本,直到2022年9月在Java 17发布一年后结束,这是一个社区构建农场项目, 但对于大多数不想付费使用Java 8的用户来说,这可能是最好的选择。

请注意,Azul还提供免费的OpenJDK版本构建zulu.org.

*最后两个选项假设,一旦Oracle停止,一个小组实际上会向前迈进,接管“JDK 8 Updates”OpenJDK项目, 确切的项目细节尚未确定时,IBM表明了真正支持的态度。

停留在Java 9或Java 10上?
还是不要吧

没有人会为Java 9或Java 10提供构建或支持,无论如何,我认为没有理由不升级到Java 11。

停留在Java 11上?
这是一个美好的新世界,并不是百分之百清楚事情会发生的样子。

首先,尚不清楚是否会有免费下载的Oracle JDK。

但在现实中,甲骨文JDK是否免费下载并不重要。 这是因为在Java 11中,开发人员可以将Oracle JDK和OpenJDK视为等价的, 认为OpenJDK构建版本是次要的观点不再正确, 事实上,现在最重要的构建版本是OpenJDK。

更确切地说,在发布日期之前,Java 11开发人员若要获得二进制下载应该考虑使用jdk.java.net,请不要在Oracle.com下载了。

那么,Oracle将为Java 11提供安全补丁多长时间?

同样,这方面的答案并非百分之百清楚。

总结
Java 11可以作为一个长期的支持版本来维护,但是,与Java 6、7和8不同的是,甲骨文将不会领导长期的支持工作。 很有可能红帽将接管这项任务。

在Java 11发布开始的6个月内,甲骨文将提供gpl许可的免费零成本下载jdk.java.net,包括安全补丁。

http://blog.joda.org/2018/08/java-is-still-available-at-zero-cost.html?m=1

[该贴被banq于2018-08-31 14:02修改过]