详情介绍
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
下载地址
人气软件
Fish Shell Mac版 for Mac V3.1.2 苹果电脑版
Java SE Development Kit(JDK) 21 LTS for Mac v21.0.7 官方正式
IntelliJ IDEA 社区版 v2025.1 Mac中文正式免费版(附安装教程)
Myeclipse for Mac V2014 苹果电脑版(附破解工具及破解教程)
JDK11(Java SE Development Kit 11) for Mac v11.0.27 x64 官方
Navicat for MySQL 11 for Mac V11.2.18 苹果电脑版
Mathematica for Mac 11.3 中文特别版(附注册机+激活方法)
IntelliJ IDEA 旗舰版 v2025.1 Mac中文完整正式版(附安装教程)
Jetbrains Clion、PyCharm、WebStorm、PhpStorm等万能破解注册机
SvnX(SVN客户端软件) for Mac V1.3 苹果电脑版
相关文章
- Java SE Development Kit 24(JDK) v24.0.1 for Mac 最新正式版
JDK是一款Java开发工具包,包含Java运行环境(java运行库),Java开发套件和Java基础类库源代码,JDK24是Java开发套件非LTS长期支持版本,引入了许多令人兴奋的新特性,不仅...
- CodeAsk for mac(代码分析工具) v1.0.4 苹果电脑版
CodeAsk是一款基于大模型的代码分析工具,通过提示词可提供智能的代码梳理与分析、安全漏洞检测、代码质量评估等功能,还能生成有趣的prompt,助力开发者高效理解和维护代...
- 鲸鱼积木编程(无人机)for Mac V1.0.7 苹果电脑版
鲸鱼积木编程是一款适用于无人机的编程软件,支持同步生成Python和C语言代码,提供图形化编程工具和趣味教学方式,适合编程启蒙,软件包含多种传感器、逻辑、数学和AI功能...
- 鲸鱼无线积木编程 V1.5.1 苹果电脑版
鲸鱼无线积木编程基于鲸鱼机器人硬件开发,满足3岁至大学生的深度编程语言学习,可同步生成Python、c语言,并使用Python、C语言进行编程,本站提供的是这款软件的mac版本...
- 开源AI编程助手 Continue v1.1.24 Mac 官方免费版
Continue 是一款开源 AI 代码助手,提供了多种接入 AI 模型的方法来实现多种场景下的功能,可以通过 vscode 和 jetbrains 来自动补全,推演代码,主要特点是通过AI辅助来提...
- Codeium Windsurf(AI编程工具) v1.7.0 Mac 官方免费版
Windsurf是一款由Codeium公司匠心打造的AI辅助编程工具,集成了多种强大功能的IDE,Windsurf 支持多文件编辑、自然语言命令执行、上下文感知等智能化功能,对多种AI模型的...
下载声明
☉ 解压密码:www.jb51.net 就是本站主域名,希望大家看清楚,[ 分享码的获取方法 ]可以参考这篇文章
☉ 推荐使用 [ 迅雷 ] 下载,使用 [ WinRAR v5 ] 以上版本解压本站软件。
☉ 如果这个软件总是不能下载的请在评论中留言,我们会尽快修复,谢谢!
☉ 下载本站资源,如果服务器暂不能下载请过一段时间重试!或者多试试几个下载地址
☉ 如果遇到什么问题,请评论留言,我们定会解决问题,谢谢大家支持!
☉ 本站提供的一些商业软件是供学习研究之用,如用于商业用途,请购买正版。
☉ 本站提供的Java SE Development Kit(JDK) 21 LTS for Mac v21.0.7 官方正式版资源来源互联网,版权归该下载资源的合法拥有者所有。