扫盲:Java 的版本发布和试用功能说明


版本号

Java 早期的版本使用带小数点的数字 1.1~1.4 代表主版本号,Java 5 开始变成了使用整数代表主版本号。

发布节奏

  1. Java 9 开始,每六个月发布一个新版本,其中包括短期支持版本(Short-Term-Support,STS)和长期支持版本(Long-Term-Support,LTS),每三年会有一个长期支持版本(LTS 版本),Java 11、Java 17 都是 LTS 版本。

  2. Java 17 之后的 LTS 版本是 Java 21,将于 2023 年 9 月推出,LTS 版本的发布周期将从现有的三年缩短至两年。

  3. STS 版本的支持周期是六个月,只要有新版本发布,即停止对老版本 STS 的支持;LTS 版本会得到至少三年以上性能、稳定性和安全性方面的更新支持。

推荐使用生命周期较长的 LTS 版本,这样会在较长的时间内获得性能、稳定性和安全性方面的更新,不用付出额外的精力去关注 STS 版本,也无需担心 STS 版本的快速更新所带来的影响。

试用功能

STS 版本 和 LTS 版本都会包含一些不同类型的试用功能,让用户可以体验和指出问题,具体如下:

  • 实验功能(Experimental):该功能处于早期阶段,完成度只有 25% 左右。

  • 预览功能(Preview):该功能已完全实现,在最终确定之前可能会有所调整。

  • 孵化功能(Incubating):不是 Java 发布内容的一部分,Java 下载包中不会包含这些内容,需要主动获取。

实验功能和孵化功能统称为非正式功能,默认不会被启用,需要通过命令行或 IDE 的设置菜单手动启用它们。由于无法保证这些功能之后能够长期存在,我们不应该依赖这些试用性质的功能。

OpenJDK 和 OracleJDK

Java 7 开始,所有的 JDK 都源自于 OpenJDK ,OpenJDK 与 其他 JDK 的关系就如同 Linux 与它的众多发行版。

OpenJDK 是由 OpenJDK 社区 、Oracle、IBM 领导,连同 Alibaba、Amazon、Ampere、Azul、BellSoft、Canonical、Fujitsu、Google、Huawei、Intel、Java Community、JetBrains、London Java Community、Microsoft、Red Hat、SAP、SouJava、SUSE、Tencent、Twitter、VMWare 等第三方共同开发、维护的 Java SE 开源参考实现。

OpenJDK 只产生 OpenJDK 源码,并不提供可以直接使用的二进制文件格式。现在能直接使用的二进制文件格式的 JDK 都是被编译之后的程序。 关系图如下:

OracleJDK builds 包括了一个开源版本的 Oracle’s OpenJDK(基于 GPL 开源)和商业版本的 OracleJDK。

大部分情况下,OracleJDK 指的是 Oracle 公司推出的商业版 JDK。

参考

[1]《On Java 基础卷》
[2] https://zh.wikipedia.org/zh-cn/Java版本历史
[3] https://openjdk.org
[4] https://www.oracle.com/news/zh-cn/announcement/oracle-releases-java-17-2021-09-14
[5] https://wiki.openjdk.org/display/JDKUpdates/Archived+Releases
[6] https://www.cnblogs.com/HeavenZhi/p/14881194.html