1. JDK 版本 (Oracle Java SE 支持路线图)
数据来源:Oracle Java SE 支持路线图 | 甲骨文中国: https://www.oracle.com/cn/java/technologies/java-se-support-roadmap.html
版本 | GA Date | Premier Support Until | Extended Support Until(限 LTS) |
---|---|---|---|
8 (LTS) | 2014 年 3 月 | 2022 年 3 月 | 2030 年 12 月 |
9 - 10 (non-LTS) | 2017 年 9 月 - 2018 年 3 月 | 2018 年 3 月 - 2018 年 9 月 | / |
11 (LTS) | 2018年9月 | 2023 年 9 月 | 2032 年 1 月 |
12 - 16 (non-LTS) | 2019 年 3 月 - 2021 年 3 月 | 2019 年 9 月 - 2021 年 9 月 | / |
17 (LTS) | 2021 年 9 月 | 2026 年 9 月或延期 | 2029 年 9 月或延期 |
18 - 20 (non-LTS) | 2022 年 3 月 - 2023 年 3 月 | 2022 年 9 月 - 2023 年 9 月 | / |
21 (LTS) | 2023 年 9 月 | 2028 年 9 月或延期 | 2031 年 9 月或延期 |
22 (non-LTS) | 2024 年 3 月 | 2024 年 9 月 | / |
- JDK 的标准更新周期为 6 个月
- Java SE 8 的公共更新已经结束,将不再提供免费商用更新。
- Oracle 自 2017 年 9 月开始提供 基于 GPLv2 开源的 Oracle OpenJDK
- Oracle JDK 16 及以前的版本不可免费商用(详情)
- Oracle JDK 17 及以上版本,自 2021 年 9 月起,提供免费使用许可(详情)
1.1. LTS 版本说明
LTS,原名 Long-Term Support 长期支持,正常情况下 当 JDK 12 正式发布后 JDK 11 将失效,但是由于 JDK 11 是 LTS 版本,所以会延长支持更新至 2032 年。
LTS 版本更加注重稳定性,安全性,性能改进,默认支持是 8 年,其中 JDK 8 延长至 2030 年(16年),延长支持期间不再提供新的功能。
LTS 版本自 2021 年起,从 3 年发布一次更改为 2 年一次(详情)
1.1.1. 参考
The art of long-term support and what LTS means for the Java ecosystem: https://blogs.oracle.com/javamagazine/post/java-long-term-support-lts
2. JDK 概览
由于 Oracle 开源了 JDK,很多社区以及公司根据 Oracle Open JDK 构建了自己的 JDK,使开发者有了更加丰富的选项,一些社区或公司会根据自己的生产环境针对 JDK 进行调整,例如 Amazon Corretto JDK 优化了在 AWS 等云平台的使用体验,以下为 JDK 概览
表格数据来源(空白单元格表示未找到相关数据):
https://stackoverflow.com/a/52431765/15599248
https://www.baeldung.com/oracle-jdk-vs-openjdk
Provider | Free Builds from Source | Free Binary Distributions | Extended Updates | Commercial Support | Permissive License | Website |
---|---|---|---|---|---|---|
Adopt Open JDK/Adoptium | Yes | Yes | Yes | No | Yes | https://adoptopenjdk.net |
Amazon Corretto | Yes | Yes | Yes | No | Yes | https://aws.amazon.com/corretto |
Azul Zulu | No | Yes | Yes | Yes | Yes | https://www.azul.com/downloads/zulu/ |
BellSoft Liberica | No | Yes | Yes | Yes | Yes | https://bell-sw.com/java.html |
IBM | No | No | Yes | Yes | Yes | https://www.ibm.com/developerworks/java/jdk |
jClarity | No | No | Yes | Yes | Yes | https://www.jclarity.com/adoptopenjdk-support/ |
OpenJDK | Yes | Yes | Yes | No | Yes | https://adoptopenjdk.net/upstream.html |
Oracle JDK | No | Yes | No | Yes | No | https://www.oracle.com/technetwork/java/javase/downloads |
Oracle OpenJDK | Yes | Yes | No | No | Yes | https://jdk.java.net |
ojdkbuild | Yes | Yes | No | No | Yes | https://github.com/ojdkbuild/ojdkbuild |
RedHat | Yes | Yes | Yes | Yes | Yes | https://developers.redhat.com/products/openjdk/overview |
SapMachine | Yes | Yes | Yes | Yes | Yes | https://sap.github.io/SapMachine |
Microsoft JDK | Yes | Yes | Yes | Yes | Yes | https://learn.microsoft.com/zh-cn/java/openjdk/ |
- Free Builds from Source - 发行版源代码是公开的,人们可以组装自己的构建版本
- Free Binary Distributions - 发行版二进制文件可以公开下载和使用
- Extended Updates - 也被称为LTS(长期支持),指的是发布周期超过6个月的公开更新。
- Commercial Support - 一些提供商为满足条件的付费客户提供扩展更新和客户支持,例如Oracle JDK(详情)。
- Permissive License - 软件许可证是非保护性的 (non-protective),例如Apache 2.0
3. JDK 选择参考(个人向)
一般根据生产/测试环境选择,例如 AWS 环境就选择 Amazon Corretto;当没有生产环境限制时,选择 JDK 可以综合考虑 LTS 版本、第三方要求(例如Spring)、开源可商用以及维护者实力等因素。
- adoptium: https://adoptium.net/temurin/releases/
- Microsoft: https://docs.microsoft.com/zh-cn/java/openjdk/download
3.1. 选择 adoptium 主要参考
- adoptium 由 Eclipse 基金会提供支持和维护,具有一定的稳定性。
- adoptium 的口碑一直相对优秀。
3.2. 选择 Microsoft OpenJDK 主要参考
Microsoft Build of OpenJDK 二进制文件基于 OpenJDK 源代码,遵循 Eclipse Adoptium 项目使用的相同生成脚本,并根据 Eclipse Adoptium 质量保证套件(包括 OpenJDK 项目测试)进行了测试。我们正式发布的二进制文件已通过 Java 技术兼容性工具包 (TCK) 的测试,该工具包用于验证与 Java 规范的兼容性。Microsoft Build of OpenJDK 是 Java 生态系统中可用的任何其他 OpenJDK 分发版的普适性替代产品。
https://learn.microsoft.com/zh-cn/java/openjdk/overview
- Microsoft OpenJDK 由 Microsoft 提供维护,具有一定的稳定性。
- Microsoft OpenJDK 下载比较稳定且方便,在一些紧急情况,例如给他人或陌生环境部署,会更加合适;(adoptium 有时下载速度较慢,Redhat 需要注册才能下载)
3.3. 扩展
- Redhat 对于 JDK 长期维护的支持与声明,mi-openjdk-datasheet-f17057cs-201908-a4-zh.pdf: https://www.redhat.com/rhdc/managed-files/mi-openjdk-datasheet-f17057cs-201908-a4-zh.pdf
3.4. JDK 安装
环境:Windows 11
- 选择并下载合适版本的压缩包(我一般选择 zip 压缩包,方便自己配置)
- 解压到自己常用的 JDK 安装目录中即可
- 在系统/用户环境变量中设置
JAVA_HOME
MAVEN
等程序需要JAVA_HOME
所以不建议省略
- 将
bin
目录添加到系统/用户环境变量的Path
中
3.5. JDK 验证
在 cmd/powershell
中运行以下命令
java --version
返回参考(长时间无响应,或者查找不到命令,则表明配置错误)
openjdk 21.0.2 2024-01-16 LTS
OpenJDK Runtime Environment Temurin-21.0.2+13 (build 21.0.2+13-LTS)
OpenJDK 64-Bit Server VM Temurin-21.0.2+13 (build 21.0.2+13-LTS, mixed mode, sharing)
运行以下命令
javac --version
返回参考
javac 21.0.2
4. 参考
- Oracle Java SE 支持路线图 |甲骨文中国: https://www.oracle.com/cn/java/technologies/java-se-support-roadmap.html
- java - OpenJDK 和 Adoptium/AdoptOpenJDK 之间的区别 - stackoverflow: https://stackoverflow.com/questions/52431764/difference-between-openjdk-and-adoptium-adoptopenjdk
- OpenJDK, an open source alternative to Oracle JDK: https://www.redhat.com/en/resources/build-of-openjdk-datasheet
- What Does Long-Term Support Mean for OpenJDK? | Java Code Geeks - 2021: https://www.javacodegeeks.com/2019/07/long-term-support-mean-openjdk.html
- ID: E5-V4+1.0.0
- 原文:https://blog.cc01cc.cn/2024/04/05/java-jdk-version-lts-install-verify/
- 署名:零一/cc01cc(zeo): https://github.com/cc01cc/
- 本作品采用署名-相同方式共享 4.0 国际(CC BY-SA 4.0 DEED)许可证进行许可,转载请标明源地址,谢谢