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

简介: Oracle Java SE 支持路线图显示,JDK 8(LTS)支持至2030年,非LTS版本如9-11每6个月发布且支持有限。JDK 11(LTS)支持至2032年,而JDK 17及以上版本现在提供免费商用许可。LTS版本提供长达8年的支持,每2年发布一次。Oracle JDK与OpenJDK有多个社区和公司构建版本,如Adoptium、Amazon Corretto和Azul Zulu,它们在许可证、商业支持和更新方面有所不同。个人选择JDK时,可考虑稳定性、LTS、第三方兼容性和提供商支持。

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-jdkg
  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

相关文章
|
3天前
|
弹性计算 运维 Java
一键安装二进制JDK
【4月更文挑战第30天】
6 0
|
3天前
|
关系型数据库 MySQL 应用服务中间件
centos7在线安装jdk1.8+tomcat+mysql8+nginx+docker
现在,你已经成功在CentOS 7上安装了JDK 1.8、Tomcat、MySQL 8、Nginx和Docker。你可以根据需要配置和使用这些服务。请注意,安装和配置这些服务的详细设置取决于你的具体需求。
20 2
|
4天前
|
小程序 Java 程序员
【Java探索之旅】我与Java的初相识(二):程序结构与运行关系和JDK,JRE,JVM的关系
【Java探索之旅】我与Java的初相识(二):程序结构与运行关系和JDK,JRE,JVM的关系
15 0
|
5天前
|
Java Windows
java——安装JDK及配置解决常见问题
java——安装JDK及配置解决常见问题
|
8天前
|
关系型数据库 MySQL Java
Linux 安装 JDK、MySQL、Tomcat(图文并茂)
Linux 安装 JDK、MySQL、Tomcat(图文并茂)
28 2
|
8天前
|
网络协议 Java 应用服务中间件
记录_centos7离线环境和虚拟机共享文件安装jdk和tomcat(配置环境变量)
记录_centos7离线环境和虚拟机共享文件安装jdk和tomcat(配置环境变量)
6 0
|
9天前
|
Java Linux 开发工具
Linux 配置 Java/JDK 环境
Linux 配置 Java/JDK 环境
18 0
|
3月前
|
Java 应用服务中间件 开发工具
最简单JDK安装指南(小白也能一次性安装完成)
最简单JDK安装指南(小白也能一次性安装完成)
|
4月前
|
Java
安装JAVA_JDK快速入门
安装JAVA_JDK快速入门
|
24天前
|
Java Linux 开发工具
linux jdk的安装
linux jdk的安装
18 0