为什么Oracle JDK 9下载这么早就结束了?

时间:2018-05-14 14:20:37

标签: java java-8 java-9 java-10

我想在我的机器上安装JDK 9,访问JDK官方下载页面,并且很惊讶地看到,

  

Java SE 9已达到支持终止。 Java SE 9的用户应切换到Java SE 10.请访问我们的Java SE下载页面以获取当前版本的Java SE。您将在......秒内重定向到Java SE下载页面。请将您的书签更新到Java SE下载页面。

我做了一些谷歌搜索和Java发布历史等。但找不到任何具体的原因。

我有几个问题 -

  1. Oracle仍然支持JDK 1.8,但是停止向JDK 9发布更新,为什么?
  2. 我应该继续使用JDK 1.8一段时间,然后直接切换到JDK 10吗?

2 个答案:

答案 0 :(得分:18)

过去,Java主要版本通常往往会加载影响深远的功能,这些功能会对您可以编写的代码产生巨大影响,例如泛型(Java 5)和功能构造(Java 8)。 / p>

使用Java 9,他们引入了一个新的模块化系统(项目Jigsaw),它也对JVM体系结构产生了巨大影响(尽管语言语法不是很多)。由于与Java社区其他有影响力的成员实施该功能存在分歧,他们不得不推迟发布Java 9两次。

大概从中汲取教训,Oracle决定彻底改革Java的开发风格,如果你愿意,可以更加增量或者更敏捷。他们希望每六个月以固定的发布时间表发布具有较少新功能的主要版本,而不是让功能加载的主要版本有时需要很多年才能完成。

Java 9和Java 10是使用此新版本模型安排的前两个版本,Java 9已经因Java 10的发布而被弃用。 Java 11 ,于2018年9月发布,是长期支持(LTS)支持发布到2026年Source)。这与Ubuntu发布模型中的许多人非常相似(另外,他们甚至计划用涉及发布年份和月份的内容替换版本号,类似于Canonical在Ubuntu中所做的事情,但出于某种原因放弃了这个想法。)

现在使用非LTS版本的Java意味着承诺更新每6个月使用JDK的软件。它不应该像过去那样将代码从一个主要的Java版本迁移到另一个主要Java版本,因为如上所述,语言更改应该以更加渐进的方式发生,但它绝对值得考虑。如果你不想做出这个承诺,你应该坚持使用LTS版本,这意味着坚持使用Java 8或Java 11。

对于一个新的"绿地"项目,Java 11很可能是目前最好的选择。但如果要使用的工具链尚未完全支持Java 11,则可能需要坚持使用Java 8。

答案 1 :(得分:2)

Oracle转换为时间盒版本。这意味着您将每3个月获得一次新的Java版本,并且每隔几年就会发布一次长期版本。

预计长期版本将在下一版本发布后的3年内得到支持,因此我不期待新的LTS版本发布到2019年末或2020年初,因为2020年12月是支持JDK 8。