Java 如何决定jdk版本-Oracle';较短的发布周期

Java 如何决定jdk版本-Oracle';较短的发布周期,java,java-8,java-11,java-10,java-12,Java,Java 8,Java 11,Java 10,Java 12,我对Oracle新的短发布周期范例感到困惑。以下是支持日期表: Java8的支持窗口比下面的大多数Jdk都大。Java9现在应该是支持的终点,Java10也是如此 决定jdk版本是一项非常重要的任务 Oracle推出了长期therm支持版本的therm。这对于非LTS版本意味着什么?它们与次要版本类似吗?在过去,Java主要版本往往会加载影响深远的功能,这些功能对您可以编写和应该编写的代码产生巨大影响,如泛型(Java 5)、函数构造(Java 8)和模块(Java 9)。这样的释放需要很长时

我对Oracle新的短发布周期范例感到困惑。以下是支持日期表:

Java8的支持窗口比下面的大多数Jdk都大。Java9现在应该是支持的终点,Java10也是如此

决定jdk版本是一项非常重要的任务


Oracle推出了长期therm支持版本的therm。这对于非LTS版本意味着什么?它们与次要版本类似吗?

在过去,Java主要版本往往会加载影响深远的功能,这些功能对您可以编写和应该编写的代码产生巨大影响,如泛型(Java 5)、函数构造(Java 8)和模块(Java 9)。这样的释放需要很长时间,并且经常由于各种原因而导致延迟

想必是从中吸取了教训,Oracle决定彻底改变Java的开发风格,使之更加增量或“敏捷”,如果您愿意的话。他们希望发布具有较少新功能的主要版本,而不是有时需要很多年才能完成的功能加载的主要版本,每六个月发布一次固定的发布计划


Java10是这个新发布模型下的第一个版本,Java9已经随着Java10的发布而被弃用。2018年9月发布的Java 11是一个支持2026年的版本(源代码)。这与许多人习惯于Ubuntu发布模式的做法非常相似(附带说明的是,他们甚至计划用涉及发布年份和月份的内容来替换版本号,类似于Canonical对Ubuntu的做法,但出于某种原因放弃了这个想法)

现在使用非LTS版本的Java意味着承诺每6个月更新一次使用JDK的软件。它不应该像过去那样将代码从一个主要的java版本迁移到另一个,因为正如所描述的,语言的变化应该以更渐进的方式发生,但是它确实是需要考虑的。如果您不想做出这样的承诺,那么应该坚持使用LTS版本,这意味着坚持使用Java8或Java11

对于一个新的“绿地”项目,到目前为止,Java11很可能是最好的选择。但是,如果要使用的工具链还不完全支持Java11,那么可能需要坚持使用Java8


我希望这会有所帮助。

如果您可以每六个月升级一次最新的JDK,请选择最新版本。否则选择LTS版本;如果下一个LTS即将发布(在发布日期之前),那么您可能希望使用最新版本并在发布之前切换到LTS


此外,Oracle JDK现在(从11年起)完全基于OpenJDK项目,因此您最喜欢的供应商提供的任何OpenJDK构建都可能与Oracle JDK一样适合您,甚至更好

另一方面,他们甚至计划用发布年份和月份来替换版本号,类似于Canonical在Ubuntu上的做法,但出于某种原因放弃了这个想法“委婉地说,新的编号方案被取消是因为社区对此不满意。LTS的描述具有误导性。这只是oracle提供的LTS,其他OpenJDK构建者可能会选择为其他版本提供LTS。相关:请参阅另一个问题,其中包括一个流程图,以帮助确定JDK实现的提供者,作为您选择的概述。仅供参考,Java的每个版本,无论是否已做好生产准备,都经过充分测试。每个版本(9、10、11、12、13等)都是“主要”版本,没有“次要”版本。至于一般的理由:在前一个cadence中,多达数百个功能将完成并准备发货,但却要等待数年,直到下一个大版本。现在,如果一个功能已经准备好,它就会发布;如果没有准备好,工作将继续进行,以便在六个月后发货。读。@BasilBourque是的,读起来很有趣。谢谢你。@BasilBourque如果问题仍然存在,我会接受它:)这有点奇怪,大多数人在回答这个问题时甚至没有java语言的要点。这种问题,以及我上面的评论,对于堆栈交换来说,真的是离题了。该网站成功的关键在于避免冗长的开放式讨论。要进行讨论,请访问以下网站: