如何决定使用哪个jdk版本 - Oracle缩短的发布周期

3
我对Oracle新的短周期发布范式感到困惑。这是一张包含支持日期的表格: enter image description here Java 8的支持时间比其他大多数JDK版本要长。Java 9和Java 10已经结束了支持。
选择 JDK 版本变得不那么容易。
Oracle引入了长期支持版本,那么非LTS版本呢?它们是否与小版本相似?

2
相关:请参见我在另一个问题中的答案,其中包括一张流程图,以帮助决定JDK实现提供者的选择,作为您选择的概述。 - Basil Bourque
2
请注意,Java的每个版本,无论是LTS 还是其他,都是可以投入生产并经过充分测试的。每个版本(9、10、11、12、13等)均为“主要”版本,没有“次要”版本。至于一般的原因:在之前的节奏中,有数百个特性已经完成并准备好进行发布,然而它们却被推迟了多年直到下一个重大版本发布。现在,如果某个功能准备好了,就可以立即发布;如果没有准备好,那么工作将继续进行,以便在六个月后发布。阅读Wikipedia - Basil Bourque
@BasilBourque 是的,非常有趣的阅读。谢谢你。 - Alexander Petrov
@BasilBourque 如果问题还没有关闭,我会接受它的 :) 很奇怪大多数关闭这个答案的人甚至在Java方面都没有积分。 - Alexander Petrov
2
这种问题,以及我上面的评论,都不适合在Stack Exchange上讨论。该网站成功的关键是避免冗长和开放式的讨论。如果想要讨论,请访问像http://www.JavaRanch.com/这样的网站。 - Basil Bourque
2个回答

5
过去,Java的主要版本经常充斥着影响你可以和应该编写的代码的广泛功能,比如泛型(Java 5)、函数构造(Java 8)和模块(Java 9)。这样的发布需要很长时间,并且通常由于各种原因而延迟。
Oracle可能从中汲取了教训,决定改进Java的开发风格,更加增量或“敏捷”。他们不再发布具有许多新功能的主要版本,这些版本有时需要多年才能完成,而是每六个月发布一次带有较少新功能的主要版本。
Java 10是这种新发布模型下的第一个版本,随着Java 10的发布,Java 9已经被弃用。 Java 11在2018年9月发布,是一种长期支持(LTS)版本,支持到2026年(来源)。这非常类似于许多人从Ubuntu发布模型中所熟悉的内容(顺便说一句,他们甚至计划用涉及发布年份和月份的内容替换版本号,类似于Canonical正在使用的Ubuntu,但出于某种原因放弃了这个想法)。
现在使用非LTS版本的Java意味着承诺每6个月更新使用JDK的软件。这不应该像过去从一个主要的Java版本迁移代码那样复杂,因为语言变化应该以更增量的方式发生,但这绝对是需要考虑的事情。如果您不想做出这个承诺,您应该坚持使用LTS版本,也就是坚持使用Java 8或Java 11。
对于一个新的“绿地”项目,现在Java 11可能是最好的选择。但如果要使用的工具链尚未完全支持Java 11,则可能需要坚持使用Java 8。
希望这可以帮到您。

2
顺便提一下,他们甚至计划用与Ubuntu类似的涉及发布年份和月份的方式来替换版本号,但由于某些原因放弃了这个想法。新的编号方案被放弃是因为社区对此非常不满意,委婉地说。 - vlumi
LTS的描述有误导性。它只是由Oracle提供的LTS,其他OpenJDK构建者可能选择为其他版本提供LTS。 - the8472

3
如果你每六个月可以升级到最新的JDK版本,那么选择最新版本。否则选择LTS版本;如果下一个LTS版本将很快发布(在你发布之前),那么你可能想要使用最新版本,并在发布之前切换到LTS版本。
另外,自11版本以来,Oracle JDK完全基于OpenJDK项目,因此来自你喜欢的供应商的任何OpenJDK构建版本可能与Oracle JDK一样好--甚至更好。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接