为什么 Oracle JDK 9 下载结束得这么早?[已关闭]

2022-09-03 00:52:48

我想在我的机器上安装JDK 9,访问了JDK官方下载页面,惊讶地发现,

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

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

我有几个问题-

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

答案 1

在过去,Java主要版本通常倾向于加载对你可以和应该编写的代码产生巨大影响的深远特性,如泛型(Java 5)和函数构造(Java 8)。

随着Java 9的出现,Oracle引入了一个新的模块化系统(项目Jigsaw),该系统对JVM架构也产生了巨大的影响(尽管对语言语法的影响不大)。他们不得不两次推迟Java 9的发布,因为与Java社区中其他有影响力的成员在实现该功能方面存在分歧。

据推测,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 11。

对于一个新的“绿地”项目,Java 11很可能是现在的最佳选择。但是,如果要使用的工具链尚不完全支持 Java 11,则可能有必要坚持使用 Java 8。

显然,在未来,Oracle希望每三年或每6个版本发布一个LTS版本,因此在Java 11之后的下一个LTS版本预计将是2021年9月的Java 17


答案 2

Oracle 过渡到按时间限制的版本。这意味着您将每3个月获得一个新的Java版本,每隔几年获得一个长期版本。

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


推荐