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

ProviderFree Builds from SourceFree Binary DistributionsExtended UpdatesCommercial SupportPermissive LicenseWebsite
Adopt Open JDK/AdoptiumYesYesYesNoYeshttps://adoptopenjdk.net
Amazon CorrettoYesYesYesNoYeshttps://aws.amazon.com/corretto
Azul ZuluNoYesYesYesYeshttps://www.azul.com/downloads/zulu/
BellSoft LibericaNoYesYesYesYeshttps://bell-sw.com/java.html
IBMNoNoYesYesYeshttps://www.ibm.com/developerworks/java/jdk
jClarityNoNoYesYesYeshttps://www.jclarity.com/adoptopenjdk-support/
OpenJDKYesYesYesNoYeshttps://adoptopenjdk.net/upstream.html
Oracle JDKNoYesNoYesNohttps://www.oracle.com/technetwork/java/javase/downloads
Oracle OpenJDKYesYesNoNoYeshttps://jdk.java.net
ojdkbuildYesYesNoNoYeshttps://github.com/ojdkbuild/ojdkbuild
RedHatYesYesYesYesYeshttps://developers.redhat.com/products/openjdk/overview
SapMachineYesYesYesYesYeshttps://sap.github.io/SapMachine
Microsoft 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 主要参考

  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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/593435.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里 对象存储OSS 云存储服务

1.简介 对象存储服务(Object Storage Service ,OSS) 是一种 海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。 2.如何使用。参考文档 看文档,说的…

elsint报错Delete `␍`eslintprettier/prettier

一,原因 这篇博客写得很清楚:解决VSCode Delete ␍eslint(prettier/prettier)错误_vscode 删除cr-CSDN博客 还有这篇文章,解决办法很详细:滑动验证页面 二,解决办法 根目录下新建.prettierrc.js文件 module.exports…

【国信华源2024年首场春季校园招聘面试会举办】

阳春三月,春意盎然,北京国信华源科技有限公司2024年校园招聘活动如期展开。4月2日,成功举办了“国信华源2024年首场春季校园招聘面试会”。 国信华源公司人力资源部热情接待了前来参加面试的同学们,并亲自陪同他们深入探访了企业。…

Redis中的Sentinel(一)

Sentinel 概述 Sentinel(哨岗、哨兵)是Redis的高可用性(high availability)解决方案:由一个或多个Sentinel实例(instance)组成的Sentinel系统(system)可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时&#xff0…

DIY蓝牙键盘(1) - 理解 键盘报文(免费)

DIY蓝牙键盘(1) - 理解键盘报文 1. 键盘报文体验 一个键盘对于用户的体验是,用户按按键A他能看到字母A会在主机上显示出来。那这是如何实现的? 其实很简单,只要键盘发送下面的两个报文给主机,字母A就能在主机上显示出来。 (1)…

JS详解-手写Promise!!!

前言: 针对js的深入理解,作者学习并撰写以下文章,由于理解认知有限难免存在偏差,请大家指正!所有定义来自mdn。 Promise介绍: 对象表示异步操作最终的完成(或失败)以及其结果值. 描…

python-基础篇-字符串、列表、元祖、字典-字符串

文章目录 2.3字符串、列表、元祖、字典2.3.1字符串2.3.1.1字符串介绍2.3.1.1.1python中字符串的格式:2.3.1.1.2字符串在内存中的存储方式 2.3.1.2字符串的输入输出2.3.1.2.1字符串输出2.3.1.2.2字符串输入2.3.1.2.3组字符串的方式 2.3.1.3下标和切片2.3.1.3.1下标索…

挖一挖:PostgreSQL Java里的double类型存储到varchar精度丢失问题

前言 大概故事是这样的,PostgreSQL数据库,表结构: create table t1(a varchar);然后使用标准的Java jdbc去插入数据,其基本代码如下: import java.sql.*; public class PgDoubleTest {public static void main(Stri…

聊聊测试用例评审流程

测试人员将需求熟悉完成后,开始编写相应的测试用例,待测试用例编写完成后只是测试用例完成前的第一步,后边的流程需要组织线上或线下评审会议等等。 首先要了解测试用例评审的最终目的是什么:提高测试用例的质量和覆盖率&#xff…

学浪里面的视频怎么保存到本地

很多人都在学浪里面买了课程,可是却找不到下载学浪课程的方法,这里Leo小黑教大家如何把学浪里购买的视频课程下载下来 注意:此方法不可以下载直播回放 1.解压我给大家准备的小浪助手.exe 2.打开小浪助手.exe 3.要是有抖音账号和学浪绑定的手机账号一样那就可以直接…

3.6k star, 免费开源跨平台的数据库管理工具 dbgate

3.6k star, 免费开源跨平台的数据库管理工具 dbgate 分类 开源分享 项目名: dbgate -- 免费开源跨平台的数据库管理工具 Github 开源地址: GitHub - dbgate/dbgate: Database manager for MySQL, PostgreSQL, SQL Server, MongoDB, SQLite and others. Runs under…

Python如何解决“滑动拼图”验证码(8)

前言 本文是该专栏的第67篇,后面会持续分享python爬虫干货知识,记得关注。 做过爬虫项目的同学,或多或少都会接触到一些需要解决验证码才能正常获取数据的平台。 在本专栏之前的文章中,笔者有详细介绍通过python来解决多种“验证码”(点选验证,图文验证,滑块验证,滑块…