JDK版本详解(含LTS)以及安装校验

2024-04-05 · 1257 字 · 约 4 分钟

# 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)、开源可商用以及维护者实力等因素。

# 3.1. 选择 adoptium 主要参考

  1. adoptium 由 Eclipse 基金会提供支持和维护,具有一定的稳定性。
  2. 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

  1. Microsoft OpenJDK 由 Microsoft 提供维护,具有一定的稳定性。
  2. Microsoft OpenJDK 下载比较稳定且方便,在一些紧急情况,例如给他人或陌生环境部署,会更加合适;(adoptium 有时下载速度较慢,Redhat 需要注册才能下载)

# 3.3. 扩展

  1. 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

  1. 选择并下载合适版本的压缩包(我一般选择 zip 压缩包,方便自己配置) adoptium-jdk
  2. 解压到自己常用的 JDK 安装目录中即可
  3. 在系统/用户环境变量中设置 JAVA_HOME
    1. MAVEN 等程序需要 JAVA_HOME 所以不建议省略
  4. 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. 参考

  1. Oracle Java SE 支持路线图 |甲骨文中国: https://www.oracle.com/cn/java/technologies/java-se-support-roadmap.html
  2. java - OpenJDK 和 Adoptium/AdoptOpenJDK 之间的区别 - stackoverflow: https://stackoverflow.com/questions/52431764/difference-between-openjdk-and-adoptium-adoptopenjdk
  3. OpenJDK, an open source alternative to Oracle JDK: https://www.redhat.com/en/resources/build-of-openjdk-datasheet
  4. What Does Long-Term Support Mean for OpenJDK? | Java Code Geeks - 2021: https://www.javacodegeeks.com/2019/07/long-term-support-mean-openjdk.html