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


我想在我的机器上安装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吗?

3052
2018-05-14 14:20


起源

那就是我们做的,我们总共跳过了9,然后去了10。顺便说一下11就像几个月之后...... - Eugene
几个月前,Oracle改变了Java的发布模式。检查 这里 细节。 - Federico klez Culloca
好吧,看起来很有用。谢谢 - Red Boy
这怎么不关闭,这是一个编程问题是如何超出我的,有时可能是一个有趣的地方:) - Eugene
顺便说一句,没有“JDK 1.9”或“1.10”这样的东西。它是“JDK 9”和“JDK 10”。即便是 java.version 系统属性说“9”或“10”(好吧,现在它说“10.0.1”。 - DodgyCodeException


答案:


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

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

据推测,如果你愿意,Oracle决定改进Java的开发风格,使其更具增量或“敏捷”。他们希望每六个月以固定的发布时间表发布具有较少新功能的主要版本,而不是功能加载的主要版本有时需要很多年才能完成。

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

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

即使在Java 11发布之后,如果要使用的工具链不能立即完全支持Java 11,也可能需要坚持使用Java 8。


9
2018-05-14 15:02



除非并非每个IDE和其他工具都支持最新的JDK功能......所以要小心。成为第一个可能很有趣,但它也意味着第一个发现所有的错误:) - Christophe Roussy
Java 10将只是 支持到9月。 - Jonathan
好的,但是切换到Java 11应该很容易吗?但是,最好只使用LTS版本进行生产。 @Jonathan - anothernode
希望!我同意,使用Java 10是最好的选择,但有限的支持可能会让一些人感到意外。 - Jonathan
您的答案应该描述LTS是什么以及为什么Java 9和10只有短期支持。如果你不能立即升级到Java 11,那么推荐Java 10可能是一个坏主意。 Java 8应该仍然是那些无法负担每6个月升级的人的推荐版本。 - Didier L


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

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


2
2018-05-14 15:19



下一个 LTS版本是Java 11 / 18.9,九月到期。 - Jonathan
再次感谢您提供的信息。 - Red Boy