我对 Oracle 新的短发布周期范式感到困惑。这是一个包含支持日期的表格:
Java 8 的支持窗口比以下大多数 Jdk 都要大。Java 9 现在应该停止支持,Java 10 也是如此。
决定 jdk 版本成为一项不平凡的任务。
Oracle 推出了 Long therm 支持版本的 therm。这对非 LTS 版本意味着什么?它们与次要版本相似吗?
过去,Java 主要版本往往会加载影响深远的特性,这些特性会对您可以并且应该编写的代码产生巨大影响,例如泛型 (Java 5)、函数式构造 (Java 8) 和模块 (Java 9)。这样的发布花费了很长时间,并且由于各种原因经常涉及延迟。
大概从中吸取了教训,甲骨文决定彻底改革 Java 的开发风格,使其更加增量或“敏捷”,如果你愿意的话。他们不想发布有时可能需要很多年才能完成的功能丰富的主要版本,而是希望发布具有较少新功能的主要版本,每个版本都以固定的发布时间表每六个月发布一次。
Java 10 是这个新版本模型下的第一个版本,Java 9 已经随着 Java 10 的发布而被弃用。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。
此外,Oracle JDK 现在(从 11 开始)完全基于 OpenJDK 项目,因此您最喜欢的供应商提供的任何 OpenJDK 构建都可能与 Oracle JDK 一样是您的最佳选择——甚至更好。