java - 为什么 Oracle JDK 9 下载结束这么早?

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

<分区>

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

Java SE 9 has reached end of support. Users of Java SE 9 should switch to Java SE 10. Please visit our Java SE Downloads page to get the current version of Java SE. You will be redirected to the Java SE Downloads page in ... seconds. Please update your bookmarks to the Java SE Downloads page.

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

我有几个问题-

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

最佳答案

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

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

据推测,甲骨文从中吸取了教训,决定全面改革 Java 的开发风格,使其更加增量或“敏捷”(如果您愿意的话)。他们不想让功能加载的主要版本有时需要很多年才能完成,他们希望每六个月按照固定的发布时间表发布包含较少新功能的主要版本。

Java 9 和 Java 10 是计划使用此新发布模型的前两个版本,随着 Java 10 的发布,Java 9 已被弃用。Java 11,于 2018 年 9 月发布 is a Long Term Support (LTS) release with support until 2026。这与许多人习惯的 Ubuntu 发布模型非常相似(附带说明,他们甚至计划用涉及发布年份和月份的内容替换版本号,类似于 Canonical 对 Ubuntu 所做的,但出于某种原因放弃了这个想法)。

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

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

显然, future Oracle 希望每三年或每第 6 个版本发布一个 LTS 版本,因此预计在 Java 11 之后的下一个 LTS 版本是 Java 17 in September 2021

关于java - 为什么 Oracle JDK 9 下载结束这么早?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50332634/

相关文章:

java - 你能帮我合并几个 map 的值吗?

java - "open"模块的 JDK 编译器失败

java - Spring 启动应用程序。运行测试

用于并发数据库/REST 调用的 Java 8 parallelStream

java - Spring 和 Jackson Json : serialising two different sets of fields

java-8 - 如何在 Java 8 中将当前日期更改为民国日期?

java - jshell中C选项有什么用

java - 如何将sqlite-jdbc项目迁移到java-11;未命名模块从 junit 和 hamcrest.core 读取包 org.hamcrest

java - 在适用于 Android 的 Google 云消息传递中

java - "(ex1)|(ex2)|(ex3)"和 "[(ex1)(ex2)(ex3)]"有什么区别