我对Oracle的新的短发布周期范式感到困惑。这是带有支持日期的表格:
Java 8具有比以下大多数Jdk更大的支持窗口。 Java 9应该已经终止支持,与Java 10相同。
这决定了jdk版本成为一项不平凡的任务。
Oracle引入了Long therm支持发行版的therm。对于非LTS版本意味着什么?它们与次要发行版相似吗?
答案 0 :(得分:6)
过去,Java主要发行版通常倾向于加载影响深远的功能,这些功能会对您可以并且应该编写的代码产生巨大影响,例如泛型(Java 5),功能结构(Java 8)和模块(Java 9)。这样的发布花费了很长时间,并且由于各种原因经常导致延迟。
大概可以从中吸取教训,Oracle决定对Java的开发风格进行大修,使其更具增量性或“敏捷性”(如果您愿意)。他们希望发布具有较少新功能的主要版本,而不是每隔六个月在固定的发布时间表中发布有时会花费很多年才能完成的主要版本。
Java 10是此新发行模型下的第一个版本,Java 9已被Java 10发行版淘汰。Java 11于2018年9月发行,是Long Term Support (LTS)发行版,支持到2026年(资源)。这与Ubuntu版本中的许多版本非常相似(顺便说一句,他们甚至计划用涉及发行年份和月份的版本替换版本号,类似于Canonical对Ubuntu所做的事情,但由于某种原因放弃了这个想法。
现在使用非LTS版本的Java意味着承诺每6个月更新一次使用JDK的软件。它不应该像过去将代码从一个主要Java版本迁移到另一个主要版本那样复杂,因为如前所述,语言更改应该以一种增量方式进行,但这绝对是要考虑的事情。如果您不想做出此承诺,则应该坚持使用LTS版本,这意味着坚持使用Java 8或Java 11。
对于新的“未开发项目”,到目前为止,Java 11可能是最佳选择。但是,如果要使用的工具链尚未完全支持Java 11,则可能必须坚持使用Java 8。
我希望这会有所帮助。
答案 1 :(得分:3)
如果您可以每六个月升级到最新的JDK,请选择最新版本。否则选择LTS版本;如果下一个LTS即将发布(在发布日期之前),那么您可能要使用最新版本并在发布前切换到LTS。
而且,Oracle JDK从11开始就完全基于OpenJDK项目,因此,您喜欢的供应商提供的任何OpenJDK构建都可能像Oracle JDK一样是您的选择,甚至更好。