Java生态系统一直以来是建立在一个高质量的免费(零成本)JDK之上的,它可以从甲骨文(Oracle)和以前的Sun获得。 今天的情况和以前一样。
Java现在每六个月发布一次版本,这个版本是指提供带有安全补丁和重要bug修复的更新版本。到目前为止,包括Java 8在内,已经提供了多年的免费支持,当使用Java 9以及遭遇六个月的发布周期时,这种免费的支持现在被控制得更严格了。
事实上,从Java 11开始,甲骨文将不会为Java提供免费的长期支持(Lts)。
下面是各个JAVA版本发布日期和免费结束日期。
[ code]版本 发布日期 甲骨文免费支持结束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月[/code]
理由很简单,甲骨文希望将精力集中在推动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开发人员的影响,IBM将与OpenJDK社区的其他成员合作,继续更新OpenJDK Java 8流,并使用安全补丁和关键的bug修复。我们打算在4年内保持当前LTS版本的安全性和高质量。这个时间尺度缩小了LTS版本之间的差距,为迁移提供了一年的时间。IBM还与许多合作伙伴和Java领导者一起投资于一个开放的构建和测试项目(AdoptOpenJDK.net),以便在OpenJDK和Eclipse OpenJ 9的常用平台上提供社区二进制文件。这些社区二进制文件经过TCK(Java SE规范)的遵从性测试,可供开发人员在生产中下载和使用。
考虑到他们2023年6月的支持日期和“上游第一”政策,也很难看到红帽没有对这一努力做出贡献。
停留在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有安全补丁。
为了在头六个月后获得GPL许可的免费零成本更新版本,您可能需要从不同的URL和不同的构建团队获得它们。AdoptOpenJDK构建场是寻找那些建筑的地方,但是zulu.org是另一种可能性。
写在最后:欢迎留言讨论加关注,持续更新!!!