Java 开发者必备:JDK 版本详解与选择策略(含安装与验证)

Java 开发者必备:JDK 版本详解与选择策略(含安装与验证)

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

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: H1-W5+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)许可证进行许可,转载请标明源地址,谢谢

相关风暴

简单易学的火柴人画法教程,轻松掌握绘制技巧
亚洲365bet备用

简单易学的火柴人画法教程,轻松掌握绘制技巧

🌀 06-29 🌊 阅读 3384
爱奇艺播放卡顿怎么解决
亚洲365bet备用

爱奇艺播放卡顿怎么解决

🌀 07-04 🌊 阅读 2295
赣州是哪个省?赣州:江西的璀璨明珠,等你来探索!
office365个人邮箱

赣州是哪个省?赣州:江西的璀璨明珠,等你来探索!

🌀 07-04 🌊 阅读 1428
华为HCIP认证题库在哪找?华为HCIP认证备考资源攻略
365bet注册送36

华为HCIP认证题库在哪找?华为HCIP认证备考资源攻略

🌀 06-30 🌊 阅读 8064