为什么 Java/JDK 都出 20 了,仍推荐使用 1.8 呢?​

2025-07-31 01:21:56

为什么 Java/JDK 都出 20 了,仍推荐使用 1.8 呢? ​Java SE 8(又名“Java 8”)于 2014 年 3 月发布,当前 Java 都出到了 20, 为什么仍推荐使用这么旧的 Java 版本?

事实上,自从 Oracle 决定改变 Java 发布的频率,以及对它长期支持的态度以来,许多组织已经决定坚持使用 Java 8,尽管有许多新版本。2020 年 2 月的一项调查发现,8% 的开发人员报告说 Java 8 仍然是最常用的 Java 版本。

下面我们说明下选择继续使用旧版本的 Java 而不是采用最新版本的一些原因。

长期支持 (LTS) 版本 ​Java 8 仍然如此流行的关键原因之一是它是 LTS(长期支持)版本。并非所有版本的Java都是 LTS 版本!自引入此策略以来,只有 Java 8(2014)和 Java 11(2018)被指定为具有LTS。

从商业角度来看,任何组织都不应该考虑将依赖于没有 LTS 的 Java 版本的系统投入生产。

授权 ​早在 2018 年,甲骨文就宣布对Java的许可方式进行根本性改变。从2019年开始,如果一个组织将 Java 11+ 商业使用,那么他们必须为此付费。

Oracle JDK v OpenJDK ​官方 Oracle JDK(Java开发工具包)的替代方案是 OpenJDK。OpenJDK 是 Oracle 的 JDK 开源版本。

OpenJDK ​尽管长期以来一直有 Java 的开源版本;从 Java 11 开始,Oracle 正式提供了免费使用的开源 OpenJDK 。此版本的 JDK 在开源 GNU 通用公共许可证 (GPL) v2 下发布。

Oracle JDK ​这是 Oracle 商业支持的 Java 版本。它是从 OpenJDK 源代码构建的。过去,Java 的开源版本和 Oracle 的商业版本之间存在差异,部分原因是后者使用了闭源或专有元素。但是,从 Java 11 开始,除了一些外观差异外,这两个版本“基本相同”。

由于 Oracle JDK 和 OpenJDK 之间的历史差异,以及支持策略的差异( OpenJDK 仅支持对最新版本的更改); 一些组织一直不愿意采用 OpenJDK ,或者对这两个版本感到困惑(尤其是由于名称非常相似)。

更新频率 ​商业组织通常更喜欢稳定性而不是变化,在 Java 9 之前,Java 改变的频率很低。事实上,Java 3 和 Java 7 的发布之间有8年的时间。但是,自 Java 9 以来,每六个月(通常是3月和9月)更新新版本的频率有所增加。这些版本中的每一个都引入了新功能,弃用(或删除)其他功能,并且经常对程序的执行方式进行更改。这可能意味着组织对采用较新的版本感到紧张,因为他们可能每六个月都会面临一次额外的技术挑战。

以上这些可以解释为什么组织应该只对生产系统使用 Java LTS 版本。因此,重点自然是 Java 8 和 11。这也许又提出了一个问题:“他们应该切换到 Java 11吗?

可能更新到 Java 11 的四个原因 ​Java 8 不再免费 ​对Java 8商业用途的免费支持于2019年1月结束。

模块 ​模块是在Java 9中引入的。它们提供了一种封装代码体及其依赖项的有效方法。这避免了与单个类路径和库版本地狱相关的问题!

虚拟机版本 ​Java 8 和 Java 11 之间的 Java 运行时环境(或 JVM)发生了重大变化。这些更改可以显著提高应用程序的性能(请参阅 GraalVM 和 Z 垃圾回收器)。

局部变量类型推断 ​在许多现代编程语言中,包括 Kotlin 和 Scala,编译器能够使用类型推断来推断变量的类型。这简化了变量的规范并减少了样板代码的数量。此功能是通过 var 关键字在 Java 10 中引入的,并允许以下代码行:

HashMap data = new HashMap();

简单地重写为:

var data = new HashMap();

总之,许多组织仍在使用 Java 8 有以上原因。展望未来,他们可能会选择使用 Java 11,因为这是当前的LTS版本,或者可能决定等到Java 17(下一个LTS版本)发布。