Java 开发者必备:JDK 版本详解与选择策略(含安装与验证)
1. JDK 版本 (Oracle Java SE 支持路线图)
数据来源:Oracle Java SE 支持路线图 | 甲骨文中国: https://www.oracle.com/cn/java/technologies/java-se-support-roadmap.html
版本GA DatePremier Support UntilExtended 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 OpenJDKOracle 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
ProviderFree Builds from SourceFree Binary DistributionsExtended UpdatesCommercial SupportPermissive LicenseWebsiteAdopt Open JDK/AdoptiumYesYesYesNoYeshttps://adoptopenjdk.netAmazon CorrettoYesYesYesNoYeshttps://aws.amazon.com/correttoAzul ZuluNoYesYesYesYeshttps://www.azul.com/downloads/zulu/BellSoft LibericaNoYesYesYesYeshttps://bell-sw.com/java.htmlIBMNoNoYesYesYeshttps://www.ibm.com/developerworks/java/jdkjClarityNoNoYesYesYeshttps://www.jclarity.com/adoptopenjdk-support/OpenJDKYesYesYesNoYeshttps://adoptopenjdk.net/upstream.htmlOracle JDKNoYesNoYesNohttps://www.oracle.com/technetwork/java/javase/downloadsOracle OpenJDKYesYesNoNoYeshttps://jdk.java.netojdkbuildYesYesNoNoYeshttps://github.com/ojdkbuild/ojdkbuildRedHatYesYesYesYesYeshttps://developers.redhat.com/products/openjdk/overviewSapMachineYesYesYesYesYeshttps://sap.github.io/SapMachineMicrosoft JDKYesYesYesYesYeshttps://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.htmljava - OpenJDK 和 Adoptium/AdoptOpenJDK 之间的区别 - stackoverflow: https://stackoverflow.com/questions/52431764/difference-between-openjdk-and-adoptium-adoptopenjdkOpenJDK, an open source alternative to Oracle JDK: https://www.redhat.com/en/resources/build-of-openjdk-datasheetWhat 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)许可证进行许可,转载请标明源地址,谢谢
促进的意思
小米手环哪款性价比最高?2025年全新对比解析!