Java SE Development Kit(JDK) 21 LTS for Mac v21.0.12.1 官方正式版

Java21下载

  • 软件大小:366MB
  • 软件语言:简体中文
  • 软件类型:国产软件
  • 软件授权:免费软件
  • 软件类别:开发软件
  • 应用平台:Mac平台
  • 更新时间:2026-08-20
  • 网友评分:
360通过 腾讯通过 金山通过

情介绍

Java 21 / JDK 21 已正式发布了,这是继 JDK 17 后的长期支持版本 (LTS),此版本带来了备受关注和瞩目的Virtual Threads,就是虚拟线程功能,根据官方介绍,虚拟线程的出现,确实是开启了并发编程的新纪元,轻量且高效,用更少的开销,处理更多的任务。

Java SE Development Kit(jdk) 21 Windows正式版:点击下载

Oracle 将为其提供至少八年的技术支持和更新。

根据 Oracle 免费条款和条件 (NFTC),JDK 21 二进制文件可在生产中免费使用,也可免费再分发。

JDK 21 将根据 NFTC 接受更新,直至 2026 年 9 月,即下一个 LTS 发布一年后。JDK 21 的后续更新将根据 Java SE OTN License (OTN) 授权,超出 OTN License 有限免费授权范围的生产使用将需要付费。

正式稳定功能

JEP 444:虚拟线程
JEP 431:序列集合
JEP 440:记录模式
JEP 441:switch 模式匹配
JEP 439:分代 ZGC
JEP 449:弃用 Windows 32 位 x86 移植
JEP 451:准备禁止动态加载代理
JEP 452:密钥封装机制 API

预览阶段功能

JEP 442:外部函数和内存 API(第三次预览)

JEP 446:作用域值(预览)

JEP 453:结构化并发(预览)

JEP 430:字符串模板(预览)

JEP 443:未命名模式和变量(预览)

JEP 445:未命名类和实例主方法(预览)

孵化阶段功能

JEP 448:Vector API(孵化器第六阶段)

主要新功能

1. 语言特点

➜ 记录模式

使用记录模式增强 Java 编程语言以解构记录值。可以嵌套记录模式和类型模式,以实现功能强大、声明性和可组合形式的数据导航和处理。

➜ 开关模式匹配

通过表达式和语句的模式匹配来增强 Java 编程语言。扩展模式匹配允许针对多个模式测试表达式,每个模式都有一个特定的操作,以便可以简洁安全地表达复杂的面向数据的查询。

1.1 语言功能预览

➜ 字符串模板(预览版)

使用字符串模板增强 Java 编程语言。字符串模板通过将文字文本与嵌入式表达式和模板处理器耦合来补充 Java 现有的字符串文字和文本块,以产生专门的结果。这是一个预览语言功能和 API。

➜ 未命名模式和变量(预览版)

使用未命名的模式(与记录组件匹配而不说明组件的名称或类型)和未命名变量(可以初始化但不使用)来增强 Java 语言。两者都由下划线字符 表示。这是一项预览语言功能。_

➜ 未命名类和实例主方法(预览版)

改进 Java 语言,以便学生可以编写他们的第一个程序,而无需了解为大型程序设计的语言功能。学生远非使用单独的Java方言,而是可以为单类程序编写简化的声明,然后随着技能的增长无缝扩展他们的程序以使用更高级的功能。这是一项预览语言功能。

2. 库改进

➜ 虚拟线程

将虚拟线程引入 Java 平台。虚拟线程是轻量级线程,可显著减少编写、维护和观察高吞吐量并发应用程序的工作量。

➜ 排序集合

引入新接口来表示具有定义的遭遇顺序的集合。每个这样的集合都有一个明确定义的第一个元素、第二个元素,依此类推,直到最后一个元素。它还提供统一的 API,用于访问其第一个和最后一个元素,以及以相反的顺序处理其元素。

“生活只能倒着理解;但它必须向前生活。
— 克尔凯郭尔

➜ 密钥封装机制接口

介绍密钥封装机制 (KEM) 的 API,这是一种使用公钥加密保护对称密钥的加密技术。

2.1 库改进预览和孵化器

➜ 外部函数和内存 API(第三预览版)

引入一个 API,通过该 API,Java 程序可以与 Java 运行时之外的代码和数据进行互操作。通过有效地调用外部函数(即JVM外部的代码)和安全地访问外部内存(即不由JVM管理的内存),API使Java程序能够调用本机库并处理本机数据,而不会像JNI那样脆弱和危险。这是一个预览版 API。

➜ 结构化并发(预览版)

通过引入结构化并发 API 来简化并发编程。结构化并发将在不同线程中运行的相关任务组视为单个工作单元,从而简化错误处理和取消,提高可靠性并增强可观测性。这是一个预览版 API。

➜ 作用域值(预览版)

引入作用域值,这些值可以在不使用方法参数的情况下安全有效地共享到方法。它们优先于线程局部变量,尤其是在使用大量虚拟线程时。这是一个预览版 API。

实际上,作用域值是一个隐式方法参数。“好像”调用序列中的每个方法都有一个额外的、不可见的参数。没有一种方法声明此参数,只有有权访问作用域值对象的方法才能访问其值(数据)。作用域值使通过一系列中间方法将数据从调用方安全地传递到远方被调用方成为可能,这些中间方法不声明数据的参数,并且无法访问数据。

➜ 载体 API(第六孵化器)

引入一个 API 来表达矢量计算,该计算在运行时可靠地编译为支持的 CPU 架构上的最佳矢量指令,从而实现优于等效标量计算的性能。

3. 性能改进

➜ 代代中关村

通过扩展 Z 垃圾回收器 (ZGC) 来提高应用程序性能,以便为年轻对象和旧对象维护不同的代。这将使ZGC能够更频繁地收集年轻物体 - 这些物体往往会英年早逝。

4. 管理权

➜ 准备禁止代理的动态加载

在将代理动态加载到正在运行的 JVM 中时发出警告。这些警告旨在让用户为将来的版本做好准备,该版本默认不允许动态加载代理,以便在默认情况下提高完整性。在启动时加载代理的功能功能工具不会导致在任何版本中发出警告。

详细新功能请参考:https://www.oracle.com/java/technologies/javase/21-relnote-issues.html

更新日志:

Java™ SE Development Kit 21,更新 21.0.12.1 (JDK 21.0.12.1)
上映日期:2026年8月18日

本次更新的完整版本字符串为 21.0.12.1+1(“+” 表示“构建”)。 版本号为 21.0.12.1。该 JDK 符合 Java SE 规范第 21 版(JSR 396 2023-09-19)。

安全基线
JDK 21.0.12.1 发布时,Java 运行环境(JRE)的安全基线为 具体如下表:

Java 家族版本    安全基线(完整版本字符串)
21    21.0.12.1+1
17    17.0.20.1+1
11    11.0.32.1+1
8    1.8.0_503-b01

保持JDK的更新
Oracle 建议每次关键补丁更新时都要更新 JDK。 为了判断某个版本是否为最新,安全基线页面可以 用于确定每个发行家族的最新版本。

关键补丁更新包含安全漏洞修复,通常提前一年宣布 关键补丁更新、安全警报和公告。 不建议在下一次关键补丁更新后使用该 JDK(版本 21.0.12.1) 2026年10月20日。

Java管理服务面向所有用户,可以帮助你在系统中发现易受攻击的Java版本。Java SE 订阅用户和运行在 Oracle Cloud 中的客户可以使用 Java 管理服务更新 Java 运行时,并进行进一步的安全审查,比如识别 Java 程序中使用的潜在易受攻击的第三方库。现有的 Java 管理服务用户,点击这里登录您的仪表盘。Java 管理服务文档提供了一份对所有人开放的功能列表,以及仅对客户开放的功能。了解更多关于使用 Java 管理服务来监控和保护您的 Java 安装的信息。

Oracle JDK 21在NFTC下的可用性
Oracle JDK 21 LTS 于 2023 年 9 月发布,已根据自由 Java 许可证许可,并将持续使用直到后续 LTS 发布一年。Oracle 将 Oracle JDK 25 指定为 2025 年 9 月发布的长期支持(LTS)版本。因此,Oracle JDK 21 的更新版本将在 2026 年 9 月之后切换到 Java SE OTN 许可证,这也是我们提供 Java 8、11 和 17 更新的同一许可证。希望通过免费 Java 许可证接收 Oracle JDK 更新的用户应迁移到 Oracle JDK 25。

类似的许可变更也将适用于2026年9月以后发布的JavaFX 21更新。

修复
本版本包含了Oracle Critical Patch Update中描述的安全漏洞修复。

Java™ SE Development Kit 21,更新 21.0.12 (JDK 21.0.12)
上映日期:2026年7月21日

本次更新的完整版本字符串为 21.0.12+7(“+” 表示“构建”)。 版本号是21.0.12。该 JDK 符合 Java SE 规范第 21 版(JSR 396 2023-09-19)。

IANA TZ 数据 2026b
JDK 21.0.12包含2026b年IANA时区数据,其中包含以下变更:

不列颠哥伦比亚省上一次夏令时变更是在2026年3月8日春季。
更多信息请参阅JRE软件中的时区数据版本。

安全基线
JDK 21.0.12发布时,Java运行环境(JRE)的安全基线为 具体如下表:

Java 家族版本    安全基线(完整版本字符串)
21    21.0.12+7
17    17.0.20+7
11    11.0.32+7
8    1.8.0_501-b08

保持JDK的更新
Oracle 建议每次关键补丁更新时都要更新 JDK。 为了判断某个版本是否为最新,安全基线页面可以 用于确定每个发行家族的最新版本。

关键补丁更新包含安全漏洞修复,通常提前一年宣布 关键补丁更新、安全警报和公告。 不建议在2026年8月18日下一次关键安全补丁更新后使用该JDK(版本21.0.12)。甲骨文正在转向更频繁的安全更新,更多信息请参见最近发布的博客。

Java管理服务面向所有用户,可以帮助你在系统中发现易受攻击的Java版本。Java SE 订阅用户和运行在 Oracle Cloud 中的客户可以使用 Java 管理服务更新 Java 运行时,并进行进一步的安全审查,比如识别 Java 程序中使用的潜在易受攻击的第三方库。现有的 Java 管理服务用户,点击这里登录您的仪表盘。Java 管理服务文档提供了一份对所有人开放的功能列表,以及仅对客户开放的功能。了解更多关于使用 Java 管理服务来监控和保护您的 Java 安装的信息。

Oracle JDK 21在NFTC下的可用性
Oracle JDK 21 LTS 于 2023 年 9 月发布,已根据自由 Java 许可证许可,并将持续使用直到后续 LTS 发布一年。Oracle 将 Oracle JDK 25 指定为 2025 年 9 月发布的长期支持(LTS)版本。因此,Oracle JDK 21 的更新版本将在 2026 年 9 月之后切换到 Java SE OTN 许可证,这也是我们提供 Java 8、11 和 17 更新的同一许可证。希望通过免费 Java 许可证接收 Oracle JDK 更新的用户应迁移到 Oracle JDK 25。

类似的许可变更也将适用于2026年9月以后发布的JavaFX 21更新。

其他注释

security-libs/java.security
➜ 新增WISeKey全球GB和GC根CA证书 (JDK-8372351))

以下根证书已被添加到信任存储中:cacerts

+ WISeKey

  + wisekeyglobalrootgbca
    DN: CN=OISTE WISeKey Global Root GB CA, OU=OISTE Foundation Endorsed, O=WISeKey, C=CH

+ WISeKey
  + wisekeyglobalrootgcca
    DN: CN=OISTE WISeKey Global Root GC CA, OU=OISTE Foundation Endorsed, O=WISeKey, C=CH

security-libs/javax.net.ssl
➜ 在DTLS中包含客户端的主机和端口 (JDK-8373275(非公开))
SunJSSE安全提供商中的DTLS实现已增强,能够根据RFC 6347推荐生成Cookie。要使用此功能,应用程序必须通过API创建。HelloVerifyRequestSSLEngineSSLContext.createSSLEngine(String peerHost, int peerPort)

security-libs/java.security
➜ 限制证书撤销列表(CRL)下载规模 (JDK-8381796(非公开))

新增了一个系统和安全属性,用于限制在CRL分发点证书扩展中通过URI下载的CRL最大长度,以实现路径验证。这些属性的值是DER编码CRL的字节大小。对于能够返回多值响应的协议,如LDAP,大小阈值是从单一搜索查询下载的所有CRL之和。超过此长度的CRL在证书路径验证时不会被处理。该大小限制不适用于通过非网络方式导入的CRL。负值则禁用该大小限制。非数字的数值将被忽略,改用默认大小。默认大小限制是20 MiB。在安全性和系统属性都已设置的情况下,系统属性优先。通过设置启用证书路径日志,将输出当前大小限制并记录任何丢弃的CRL。com.sun.security.crl.maxSizejava.security.debug=certpath

修复
本版本还包含了 Oracle 关键补丁更新中描述的安全漏洞修复。

➜ 21.0.12 修复的问题:
#    JBS    组件/子组件    摘要
1    JDK-8369561    client-libs/2d    sun/java2d/OpenGL/DrawBitmaskImage.java#id0:第一个像素颜色错误(实际上=ff000000)
2    JDK-8378201    client-libs/2d    [OGL] glXMakeContextCurrent() 会丢弃未绑定可绘制对象的缓冲区
3    JDK-8378417    client-libs/2d    打印所有页面会导致1.1 PrintJob的NPE
4    JDK-8375057    client-libs/2d    更新 HarfBuzz 至 12.3.2
5    JDK-8297191    client-libs/2d    [马科斯]打印起始页为1的页面范围>会导致缺页
6    JDK-8376233    client-libs/java.awt    在桌面原生节点中清理代码
7    JDK-8379256    client-libs/java.awt    将GIFlib更新至6.1.1
8    JDK-8380959    client-libs/java.awt    更新 Libpng 至 1.6.56
9    JDK-8380078    client-libs/java.awt    将GIFlib更新至6.1.2
10    JDK-8382047    client-libs/java.awt    更新 Libpng 至 1.6.57
11    JDK-8377526    client-libs/java.awt    更新 Libpng 至 1.6.55
12    JDK-8347826    client-libs/java.beans    Introspector 在8071693后显示错误的方法列表
13    JDK-8286258    client-libs/javax.accessibility    [无障碍,macOS,配音]VoiceOver有时会错误且部分读取旋转器值
14    JDK-8374506    client-libs/javax.swing    Windows L&F 中父 JMenu 中箭头图标位置错误
15    JDK-8365379    client-libs/javax.swing    SU3.applyInsets 可能会产生错误的结果
16    JDK-8377727    client-libs/javax.swing    幽灵转移和焦点出现在不可编辑的文本字段中
17    JDK-8365625    client-libs/javax.swing    无法在 Windows L&F 中更改加速器颜色
18    JDK-8321514    core-libs/java.lang    如果未启用CompactStrings,UTF16字符串将由代码点错误构造
19    JDK-8353698    core-libs/java.net    如果控制台的编码不是 UTF-8,Simple Web Server 的输出会变得杂乱
20    JDK-8376031    core-libs/java.net    HttpsURLConnection.getServerCertificates() 为 HEAD 方法抛出“java.lang.IllegalStateException: connection not yet open”
21    JDK-8304701    core-libs/java.net    在 HTTP/1.1 cxn 上,带超时请求会在 LATER 中止
22    JDK-8378631    核心自由党/java.util.jar    将Zlib数据压缩库更新至1.3.2版本
23    JDK-8348328    core-libs/java.util:i18n    更新IANA语言子标签注册表至2025-05-15版本
24    JDK-8362428    core-libs/java.util:i18n    更新IANA语言子标签注册表至2025-08-25版本
25    JDK-8318509    热点/编译器    x86 count_positives 内在故障,满足 -XX:AVX3Threshold=0
26    JDK-8324345    热点/编译器    在分割内存phi时,C2编译过程中发生堆栈溢出
27    JDK-8373894    热点/网关    G1:统计GC CPU使用中疏散失败的垃圾回收
28    JDK-8322142    热点/JFR    JFR:定期任务不会在录音之间被孤零
29    JDK-8341427    热点/JFR    JFR:调整对象采样器的范围处理
30    JDK-8364190    热点/JFR    JFR:RemoteRecordingStream 枯萎功能不起作用
31    JDK-8382242    热点/JFR    JFR:元数据重建使 java.lang.String 的 ConstantMap 失效
32    JDK-8368670    热点/JFR    JFR在事件寄存器+类加载时的死锁
33    JDK-8380474    热点/运行时    JDK-8323792 后 ThreadIdTable::lazy_initialize 中 SEGV 崩溃
34    JDK-8357086    热点/运行时    OS::xxx 函数返回内存大小应该返回size_t
35    JDK-8368551    热点/运行时    核心导出警告可能会让人困惑
36    JDK-8356868    热点/运行时    并非所有cgroup参数都公开
37    JDK-8338883    热点/运行时    当 CreateCoredumpOnCrash 设置时会显示警告,但核心转储不会发生
38    JDK-8323792    热点/SVC    ThreadSnapshot::initialize 可能导致 Thread::check_for_dangling_thread_pointer 中的断言(可能导致线程指针悬挂)
39    JDK-8357062    security-libs/java.security    将公共后缀列表更新为823beb1
40    JDK-8373690    security-libs/java.security    使用 jdk.crypto.disabledAlgorithms 的意外密钥存储消息
41    JDK-8350749    工具/JSHELL    将JLine升级到3.29.0
42    JDK-8373928    工具/启动器    4 java.c 中的悬挂指针缺陷群

  • Java SE Development Kit(JDK) 21 LTS for Mac v21.0.12.1 官方正式版

载地址

下载错误?【投诉报错】

Java SE Development Kit(JDK) 21 LTS for Mac v21.0.12.1 官方正式版

      它版本

      更多版本

      气软件

      关文章

      载声明

      ☉ 解压密码:www.jb51.net 就是本站主域名,希望大家看清楚,[ 分享码的获取方法 ]可以参考这篇文章
      ☉ 推荐使用 [ 迅雷 ] 下载,使用 [ WinRAR v5 ] 以上版本解压本站软件。
      ☉ 如果这个软件总是不能下载的请在评论中留言,我们会尽快修复,谢谢!
      ☉ 下载本站资源,如果服务器暂不能下载请过一段时间重试!或者多试试几个下载地址
      ☉ 如果遇到什么问题,请评论留言,我们定会解决问题,谢谢大家支持!
      ☉ 本站提供的一些商业软件是供学习研究之用,如用于商业用途,请购买正版。
      ☉ 本站提供的Java SE Development Kit(JDK) 21 LTS for Mac v21.0.12.1 官方正式版资源来源互联网,版权归该下载资源的合法拥有者所有。