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

Java21下载

  • 软件大小:364MB
  • 软件语言:简体中文
  • 软件类型:国产软件
  • 软件授权:免费软件
  • 软件类别:开发软件
  • 应用平台:Mac平台
  • 更新时间:2025-04-17
  • 网友评分:
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 开发工具包 21.0.7 (JDK 21.0.7)
4月 15, 2025

此更新版本的完整版本字符串为 21.0.7+8(其中“+”表示“内部版本”)。 版本号为 21.0.7。此 JDK 符合 Java SE 规范 (JSR 396, 2023-09-19) 的版本 21。

IANA TZ 数据 2025a
JDK 21.0.7 包含 IANA 时区数据 2025a,其中包含以下更改:

巴拉圭从 2024 年春季开始采用永久性 -03。
改进菲律宾 1991 年之前的数据。
Etc/Unknown 现在已保留。

使 JDK 保持最新状态

Oracle 建议使用每个重要补丁更新来更新 JDK。 为了确定某个版本是否为最新版本,Security Baseline (安全基线) 页面可以 用于确定哪个版本是每个版本系列的最新版本。

包含安全漏洞修复的关键补丁更新会提前一年公布 重要补丁更新、安全警报和公告。 不建议在计划下一次关键补丁更新后使用此 JDK(版本 21.0.7) 2025 年 7 月 15 日。

Java 管理服务可供所有用户使用,可帮助您在系统中找到易受攻击的 Java 版本。在 Oracle Cloud 中运行的 Java SE 订户和客户可以使用 Java 管理服务更新 Java 运行时并进行进一步的安全审查,例如识别 Java 程序使用的潜在易受攻击的第三方库。现有 Java 管理服务用户单击此处登录到您的仪表板。Java 管理服务文档提供了可供所有人使用的功能列表,以及仅可供客户使用的功能列表。了解有关使用 Java 管理服务监控和保护 Java 安装的更多信息。

新功能

security-libs/javax.crypto:pkcs11
➜ SunPKCS11 提供程序中的传统机制检查通过服务类型进行了增强 (JDK-8293345)
支持解密但不支持加密或签名验证但不支持签名的本机 PKCS11 机制被视为旧版,默认情况下处于禁用状态。SunPKCS11 提供程序中的传统机制检查通过服务类型进行了增强。例如,在此修复之前,支持加密、解密和验证但不支持签名的机制被视为旧机制,根本不能使用。修复此漏洞后,由于支持加密和解密,因此可以使用使用此机制的相应 Cipher 服务。但是,相应的 Signature 服务不是,因为仅支持验证。要绕过传统机制检查,请将 PKCS11 提供程序配置属性“allowLegacy”设置为 true。默认值为 false。请注意,调用方有责任确保 legacy 机制不用于不支持的功能。

其他说明

安全库/javax.net.ssl
➜ 不信任由 Camerfirma 根证书锚定并在 2025 年 4 月 15 日之后颁发的 TLS 服务器证书 (JDK-8346587)
JDK 将停止信任 2025 年 4 月 15 日之后颁发并由 Camerfirma 根证书锚定的 TLS 服务器证书,这与 Google、Mozilla、Apple 和 Microsoft 宣布的类似计划一致。

在 2025 年 4 月 15 日或之前颁发的 TLS 服务器证书将继续受信任,直到过期。在该日期之后颁发并由下表中的任何证书颁发机构锚定的证书将被拒绝。

这些限制在 Java 安全套接字扩展 (JSSE) API 的 JDK 实现(提供程序)中强制执行。如果服务器的证书链由下表中的任何证书颁发机构锚定,并且证书是在 2025 年 4 月 15 日之后颁发的,则不会协商 TLS 会话。SunJSSE

应用程序将收到一个异常,并显示一条消息,指示信任锚不受信任,例如:

"TLS Server certificate issued after 2025-04-15 and anchored by a distrusted legacy Camerfirma root CA: CN=Chambers of Commerce Root - 2008, O=AC Camerfirma S.A.,

SERIALNUMBER=A82743287, L=Madrid (see current address at www.camerfirma.com/address), C=EU"

可以通过从配置文件的 security 属性中删除 “CAMERFIRMA_TLS” 来将 JDK 配置为再次信任这些证书。jdk.security.caDistrustPoliciesjava.security

您还可以使用 JDK 中的实用程序打印出证书链的详细信息,如下所示:keytool

keytool -v -list -alias <your_server_alias> -keystore <your_keystore_filename>

如果链中的任何证书由上表中的根 CA 之一颁发,则输出中列出了该证书,则需要更新证书或联系管理该服务器的组织。

core-svc/tools
➜ JarInputStream 将具有多个清单的已签名 JAR 视为无符号 (JDK-8337494(未公开))
现在,如果该类在 JAR 文件的前两个条目中检测到第二个清单,则该类会将已签名的 JAR 视为未签名。如果设置了系统属性 ,则会记录一条警告消息。JarInputStream"WARNING: Multiple MANIFEST.MF found. Treat JAR file as unsigned."-Djava.security.debug=jar

热点/GC
➜ 并行 GC 在堆完全扩展之前引发 OOM (JDK-8328744))
现有错误可能阻止了完全使用由 command line flag 分配的 Java 堆。JDK-8328744 已修复该错误。作为此修复的副作用,在使用 Parallel GC 时,安装可能会遇到堆使用量增加的情况。如有必要,客户应调整最大堆大小。-Xmx

安全库/javax.security
➜ 仅 POST OCSP 请求的回退选项 (JDK-8328638))
JDK 17 引入了一项性能改进,使 OCSP 客户端可以无条件地对小请求使用 GET 请求,而对其他所有请求执行 POST 请求。RFC 5019 和 RFC 6960 明确允许和推荐这样做。但是,我们已经看到 OCSP 响应程序尽管有 RFC 要求,但无法很好地处理 GET 请求。

此版本引入了一个新的 JDK 系统属性,以允许客户端回退到仅 POST 行为。这将通过使用 .这修改了引入 GET OCSP 请求的原始更改 (JDK-8179503)。默认行为不会更改;该选项默认为 。将选项设置为禁用 GET OCSP 请求。除 (不区分大小写) 以外的任何值都默认为 。-Dcom.sun.security.ocsp.useget={false,true}truefalsefalsetrue

此选项是非标准的,一旦升级了有问题的 OCSP 响应程序,此选项可能会消失。

Bug 修复

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

➜ 21.0.7 中修复的问题:
#    JBS 公司    组件/子组件    总结
1    型号: JDK-8312518    客户端库/java.awt    [macos13] setFullScreenWindow()在macOS 13及以上版本上显示黑屏
2    JDK-8335468    客户端库/java.awt    [X澳大利亚]调用 java.awt.Robot.getPixelColor 时 JavaFX 挂起
3    JDK-8283214    client-libs/javax.accessibility    [macOS 的]屏幕放大镜不显示 JComboBox 的放大文本
4    JDK-8339728    client-libs/javax.accessibility    [辅助功能,Windows,JAWS]AccessBridge 类的 getKeyChar 方法存在 bug
5    JDK-8332866    客户端库/javax.imageio    启用MEM_STATS时 ImageIO JPEG 解码崩溃
6    JDK-8347911    客户端库/javax.imageio    限制膨胀文本块的长度
7    型号: JDK-8332431    client-libs/javax.swing 中    SwingSet2 的 JTable 中的 NullPointerException
8    型号: JDK-8340824    热点/编译器    C2:类型接口的内存未被 hashcons() 回收
9    JDK-8337660    热点/编译器    C2:只有 BoxLock 节点的基本块被错误地视为空
10    型号: JDK-8340313    热点/编译器    C1 修补后,由于 nmethod 中的无效 oop 而崩溃
11    型号: JDK-8331090    热点/编译器    在取消规范化 CMoves 之前运行 Ideal_minmax
12    JDK-8324655    热点/编译器    识别使用 if 语句创建的整数最小和最大模式
13    JDK-8338100    热点/编译器    C2:assert(!n_loop->is_member(get_loop(lca))) 失败:控件不得返回到循环中
14    JDK-8322957    热点/GC    分代 ZGC:重定位选择必须加入 STS
15    JDK-8170817    热点/GC    G1:从 unsafe_max_tlab_alloc 返回 MinTLABSize 会导致 TLAB 抖动
16    JDK-8328168    热点/GC    Epsilon:分配大于未提交堆大小的对象时过早的 OOM
17    JDK-8328166    热点/GC    Epsilon:'EpsilonHeap::allocate_work' 错误地将参数 'size' 误用为以字节为单位的大小
18    型号: JDK-8315031    热点/GC    YoungPLABSize 和 OldPLABSize 未按 ObjectAlignmentInBytes 对齐
19    JDK-8329570    热点/GC    G1:验证中的 is_obj_dead_cond 调用过多
20    JDK-8329223    热点/GC    Parallel:并行 GC 调整堆大小,即使 -Xms = -Xmx
21    型号: JDK-8330981    热点/GC    ZGC:不应在终结器图中对字符串进行重复数据删除
22    型号: JDK-8330275    热点/GC    XMark::follow_array 崩溃
23    JDK-8329088    热点/GC    具有并发 GC 堆栈迭代的堆栈块解冻争用
24    型号: JDK-8329109    热点/GC    Threads::p rint_on() 尝试打印已终止的 GC 线程的 CPU 时间
25    JDK-8325937    热点/运行时    runtime/handshake/HandshakeDirectTest.java 导致 AArch64 上出现“monitor end should be strictly below the frame pointer”断言失败
26    型号: JDK-8344145    热点/测试    删除任务定义中的 windows_x64_1803_or_later 及其用法
27    JDK-8335288    security-libs/javax.crypto:pkcs11    SunPKCS11 初始化将在不支持的机制上调用 C_GetMechanismInfo
28    型号: JDK-8331959    security-libs/javax.crypto:pkcs11    将 PKCS#11 加密令牌接口更新到 v3.1
29    型号: JDK-8331958    安全库/javax.smartcardio    将适用于 Suse Linux 的 PC/SC Lite 更新到 2.3.0

载地址

下载错误?【投诉报错】

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

      气软件

      关文章

      载声明

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