我对Oracle新的短周期发布范式感到困惑。这是一张包含支持日期的表格: Java 8的支持时间比其他大多数JDK版本要长。Java 9和Java 10已经结束了支持。选择 JDK 版本变得不那么容易。Oracle引入了长期支持版本,那么非LTS版本呢?它们是否与小版本相似?
过去,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。希望这可以帮到您。
如果你每六个月可以升级到最新的JDK版本,那么选择最新版本。否则选择LTS版本;如果下一个LTS版本将很快发布(在你发布之前),那么你可能想要使用最新版本,并在发布之前切换到LTS版本。另外,自11版本以来,Oracle JDK完全基于OpenJDK项目,因此来自你喜欢的供应商的任何OpenJDK构建版本可能与Oracle JDK一样好--甚至更好。