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进阶高级架构群】:https://jq.qq.com/?_wv=1027&k=5pWdOCL
停留在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是另一种可能性。
欢迎工作一到八年的Java工程师朋友们加入Java工程师学习交流群:795632998
群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!