写点什么

JDK 24 和 JDK 25:最新进展全知晓

作者:Michael Redlich

  • 2025-03-04
    北京
  • 本文字数:3927 字

    阅读完需:约 13 分钟

JDK 24 和 JDK 25:最新进展全知晓

JDK 24 是自 JDK 21 以来的第三个非长期支持版本。甲骨文公司 Java 平台组首席架构师 Mark Reinhold 宣布,JDK 24 已进入首个候选发布阶段。2024 年 12 月初,主线源代码仓库分支到 JDK 稳定版本仓库(Rampdown 第一阶段),这确定了 JDK 24 的功能集。对于关键漏洞,比如回归问题或严重的功能缺陷,可能会进行修复,但必须通过修复请求流程获得批准。按照发布计划,JDK 24 将于 2025 年 3 月 18 日正式发布 。以 JEP(Java 增强提案)形式呈现的最终 24 项新特性,可分为五大类:核心 Java 库、Java 语言规范、安全库、HotSpot 和 Java 工具。


核心 Java 库(7 项新特性):


  • JEP 472:为限制 JNI 的使用做准备;

  • JEP 484:类文件 API;

  • JEP 485:流收集器;

  • JEP 487:作用域值(第四次预览);

  • JEP 489:向量 API(第九次孵化);

  • JEP 498:使用 sun.misc.Unsafe 中的内存访问方法时发出警告;

  • JEP 499:结构化并发(第四次预览)。


Java 语言规范(4 项新特性):


  • JEP 488:模式、instanceof 和 switch 中的原始类型(第二次预览);

  • JEP 492:灵活的构造函数体(第三次预览);

  • JEP 494:模块导入声明(第二次预览);

  • JEP 495:简单源文件和实例主方法(第四次预览)。


安全库(4 项新特性):


  • JEP 478:密钥派生函数 API(预览);

  • JEP 486:永久禁用安全管理器;J

  • EP 496:基于模块格的抗量子密钥封装机制;

  • JEP 497:基于模块格的抗量子数字签名算法。


HotSpot(8 项新特性):


  • JEP 404:分代 Shenandoah(实验性);

  • JEP 450:紧凑对象头(实验性);

  • JEP 475:G1 的后期屏障扩展;

  • JEP 479:移除 Windows 32 位 x86 端口;

  • JEP 483:提前类加载和链接;

  • JEP 490:ZGC:移除非分代模式;

  • JEP 491:无需固定即可同步虚拟线程;

  • JEP 501:弃用 32 位 x86 端口以便后续移除。


Java 工具(1 项新特性):


  • JEP 493:不使用 JMODs 链接运行时镜像。


我们来审视其中一些新特性,并了解它们在主要 Java 项目(Amber、Loom、Panama、Valhalla 和 Leyden)中的归属。这些项目旨在孵化一系列组件,最终通过精心策划的合并纳入 JDK。

Amber 项目:


JEP 495:简单源文件和实例主方法(第四次预览),在经过前三轮预览后,此次发布第四次预览且内容无变化(仅第二次更改了名称)。此前三轮预览分别是:JDK 23 中的 JEP 477“隐式声明类和实例主方法(第三次预览)”;JDK 22 中的 JEP 463“隐式声明类和实例主方法(第二次预览)”;JDK 21 中的 JEP 445“匿名类和实例主方法(预览)”。该特性旨在“改进 Java 语言,让初学者编写第一个程序时,无需理解为大型程序设计的语言特性”。这一 JEP 提案推进了甲骨文公司 Java 语言架构师 Brian Goetz2022 年 9 月发表的博客文章《 Paving the on-ramp》。甲骨文公司技术人员咨询成员 Gavin Bierman 已发布规范文档初稿,供 Java 社区审核。更多关于 JEP 445 的详细信息,可查看[InfoQ 新闻报道](https://www.infoq.com/news/2025/02/java-24-so-far/)。

Loom 项目:


JEP 487:作用域值(第四次预览),原名为“扩展本地变量(孵化)”。经过一轮孵化和三轮预览后,此次推出第四次预览且有一处变动。此前的预览版本分别是:JDK 23 中的 JEP 481“作用域值(第三次预览)”;JDK 22 中的 JEP 464“作用域值(第二次预览)”;JDK 21 中的 JEP 446“作用域值(预览)”;JDK 20 中的 JEP 429“作用域值(孵化)”。该特性支持在线程内部和线程之间共享不可变数据,与线程局部变量相比更具优势,尤其在使用大量虚拟线程时。与上一版预览相比,唯一的变动是从`ScopedValue`类中移除了`callWhere()`和`runWhere()`方法,以使 API 更加流畅。通过`ScopedValue.Carrier`类中定义的`call()`和`run()`方法,可实现使用一个或多个绑定的作用域值的功能。

Panama 项目:


在完成评审后,JEP 489:向量 API(第九次孵化)根据前八轮孵化的反馈意见进行了改进。此前的孵化版本分别是:JDK 23 中的 JEP 469“向量 API(第八次孵化)”;JDK 22 中的 JEP 460“向量 API(第七次孵化)”;JDK 21 中的 JEP 448“向量 API(第六次孵化)”;JDK 20 中的 JEP 438“向量 API(第五次孵化)”;JDK 19 中的 JEP 426“向量 API(第四次孵化)”;JDK 18 中的 JEP 417“向量 API(第三次孵化)”;JDK 17 中的 JEP 414“向量 API(第二次孵化)”;JDK 16 中作为孵化模块发布的 JEP 338“向量 API(孵化)”。原本计划复用最初的孵化状态进行重新孵化,最终决定继续按顺序编号。向量 API 将持续处于孵化阶段,直到 Valhalla 项目 的必要特性作为预览特性推出。届时,向量 API 团队将对向量 API 及其实现进行调整以使用这些特性,并将向量 API 从孵化阶段推进到预览阶段。


Leyden 项目:


JEP 483 提前类加载和链接旨在“通过让应用程序的类在 HotSpot Java 虚拟机启动时,以加载和链接状态即时可用,从而缩短启动时间”。这可以通过在一次运行过程中监控应用程序,并将所有类的加载和链接形式存储在缓存中,以供后续运行使用来实现。该特性将为未来缩短启动时间和预热时间奠定基础。


安全库:


JEP 497 基于模块格的抗量子数字签名算法旨在“通过提供符合 FIPS 204 标准的基于模块格的抗量子数字签名算法(ML-DSA)实现,增强 Java 应用程序的安全性”。这将通过实现 Java 的`KeyPairGenerator`、`Signature`和`KeyFactory`类来达成。


HotSpot:


受 Lilliput 项目 启发,JEP 450 紧凑对象头(实验性)提议“在 64 位架构下,将 HotSpot JVM 中对象头的大小从 96 到 128 位缩减至 64 位”。由于该特性被视为实验性的,默认处于禁用状态,若开发者启用可能会导致意外后果。更多关于 JEP 450 的详细信息,可查看 InfoQ 新闻报道_(__https://www.infoq.com/news/2025/02/java-24-so-far/)_


JEP 404 分代 Shenandoah(实验性)提议提供一种实验性的分代模式,同时不影响非分代的 Shenandoah 垃圾回收器,目标是在未来的 JDK 版本中将分代模式设为默认选项。该 JEP 最初计划用于 JDK 21,但由于“评审过程中发现的风险,以及对如此大量代码贡献进行全面评审的时间不足”,最终从 JDK 21 的最终特性集中移除。当时,Shenandoah 团队决定将目标设定为未来的 JDK 版本,以“尽可能提供最佳的分代 Shenandoah”。#### JDK 25


JDK 25 计划于 2025 年 9 月发布正式版,目前尚无针对 JDK 25 的 JEP 提案。不过,基于一些 JEP 候选提案和草案,尤其是已提交的那些,我们可以推测哪些 JEP 有可能被纳入 JDK 25。甲骨文公司技术人员咨询成员 Gavin Bierman 在给 Java 社区的一封邮件中宣布,他计划在 2025 年 9 月 JDK 25 发布时,敲定 JEP 495“简单源文件和实例主方法(第四次预览)”中所谓的“入门匝道(on-ramp)”特性。截至目前,相关草案尚未创建,但预计很快会有变动。


JEP 502“稳定值(预览)”,原名为“计算常量(预览)”,引入了计算常量的概念,即最多初始化一次的不可变值持有者。它兼具`final`字段的性能和安全优势,同时在初始化时机上更具灵活性。


JEP 草案 8340343“结构化并发(第五次预览)”提议进行第五次预览,对 API 做出几处修改,以从前四轮预览中获取更多反馈。此前的预览版本分别是:即将在 JDK 24 正式版中发布的 JEP 499“结构化并发(第四次预览)”;JDK 23 中的 JEP 480“结构化并发(第三次预览)”;JDK 22 中的 JEP 462“结构化并发(第二次预览)”;JDK 21 中的 JEP 453“结构化并发(预览)”。该特性引入结构化并发,将“在不同线程中运行的相关任务组视为单个工作单元,从而简化错误处理和取消操作,提高可靠性并增强可观测性”,进而简化并发编程。其中一项 API 修改提议是,通过静态工厂方法而非公共构造函数来打开`StructuredTaskScope`接口。


JEP 草案 8326035“CDS 对象流”提议在 Z 垃圾回收器(ZGC)中为类数据共享(CDS)添加对象归档机制,并采用统一的 CDS 对象归档格式和加载器。该特性将把 GC 的实现细节和策略与 CDS 归档对象流机制分开。


JEP 草案 8300911“PEM API(预览)”引入了一种简单直观的 API,用于对隐私增强邮件(PEM)格式进行编码和解码,描述最多可更改一次的值持有者。PEM 格式将用于存储和发送加密密钥及证书。


JEP 草案 8291976“在 HttpClient 中支持 HTTP/3” 提议更新 JDK 11 中发布的 JEP 321“HTTP 客户端”,以支持 HTTP/3 协议。这将使应用程序和库能够与 HTTP/3 服务器交互,并通过最少的代码更改获得 HTTP/3 带来的优势。我们预计甲骨文公司很快就会确定针对 JDK 25 的 JEP。


作者介绍


Michael Redlich,在过去 25 年里,Michael Redlich 始终是 Java 社区的活跃成员。2001 年,他创立了花园州 Java 用户组(前身为 ACGNJ Java 用户组),这个用户组至今仍在持续运营。


从 2016 年开始,Mike(Michael 的昵称)担任 InfoQ 的 Java 社区新闻编辑。在此期间,他每月撰写新闻报道,进行技术内容创作,还参与技术评审工作,为社区贡献颇丰。他曾在诸多重要场合发表演讲,比如甲骨文 Code One 大会、企业新兴技术大会、Trenton 计算机节(TCF)、TCF IT 专业人员大会,以及众多 Java 用户组活动。


在技术规范制定领域,Mike 是 Jakarta NoSQL 和 Jakarta Data 规范的贡献者,积极推动相关技术的发展。同时,他还参与了 Jakarta EE 大使领导委员会,为该技术生态的发展出谋划策。2023 年 4 月,他荣获 Java Champion 称号,这无疑是对他在 Java 领域卓越贡献的高度认可。


Mike 在新泽西州克林顿市的埃克森美孚技术与工程公司工作了长达 33 年半之久,最近刚刚退休。在那里,他积累了丰富的科学实验室和网络应用程序定制化开发经验。此前,他还在 Ai-Logix 公司(现 AudioCodes)担任技术支持工程师,不仅为客户提供专业的技术支持,还负责开发电话应用程序。


原文链接:


https://www.infoq.com/news/2025/02/java-24-so-far/

2025-03-04 14:006148

评论 1 条评论

发布
用户头像
还在用JDK11, 现在已经到了JDK24了。
2025-03-05 10:00 · 广东
回复
没有更多了

从“13天”到“0天”延时,揭秘火山引擎DataLeap SLA保障最佳实践

字节跳动数据平台

大数据 数据治理 数据研发 企业号 3 月 PK 榜

联合解决方案 | 亚信科技AntDB数据库携手浪潮K1 Power赋能关键行业数字化转型,助力新基建

亚信AntDB数据库

数据库 AntDB 国产数据库 AntDB数据库 企业号 3 月 PK 榜

“鼎新杯”案例精选 | 中国联通数字化研发低代码平台为一线赋能

信通院IOMM数字化转型团队

低代码 数字化转型 中国联通

AI脸部美容,一键让你变瘦变美变老变年轻

江户川码农

php Python AI PaddleGAN 人脸编辑

隔离级别+事务+连接池+锁

hasWhere

镭速传输是如何管理大文件跨国传输的

镭速

如何通过Java程序加密或者解密PDF文档

Geek_249eec

Java PDF

两大国际标准正式发布,百度安全深度参与

百度安全

Mybatis Plus最新代码生成器AutoGenerator,更简单更高效!

Java你猿哥

mybatis ssm Java工程师 java Mybatis-Plus

存货库存模型升级始末 | 得物技术

得物技术

java

DTO、VO、BO、PO、DO的用法区别,居然这么多人搞不清楚.....

程序知音

这几个群,程序员可千万不要进!

禅道项目管理

项目管理 程序员 项目管理工具

GPU推理服务性能优化之路 | 得物技术

得物技术

Python

【YonBuilder 移动开发】关于创建 App 是否需要 AVM 的经验分享

YonBuilder低代码开发平台

研发效能怎么分析?方法论、模型、误区都在这里了

思码逸研发效能

研发效能

并发编程详解:从理论基础到案例实战(十三个工具类,十大设计模式)

程序知音

Java 并发编程 设计模式 java架构 后端技术

SpringBoot之如何实现热部署?这你得会 | 超级详细,建议收藏

Java你猿哥

Java spring Spring Boot ssm Java工程师

思码逸任晶磊:ChatGPT 时代的软件研发数据与效能提升

思码逸研发效能

机器学习 研发效能 ChatGPT

基于Mindspore2.0的GPT2预训练模型迁移教程

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 3 月 PK 榜

MQTT 5.0消息发布流程

EMQ映云科技

物联网 IoT mqtt QoS 企业号 3 月 PK 榜

CleanMyMac4.20汉化免费版Mac清理工具

茶色酒

CleanMyMac4.20

【实用类】测试使用ChatGPT开发shell脚本 | 社区征文

Hash拿铁

ChatGPT

万字分享:以Code Review 最佳实践,解答降本增效 or 增加成本之问(上)

极狐GitLab

DevOps Code Review 代码安全 代码评审 安全左移

低代码:助力乡村振兴事业开启“智慧模式”

加入高科技仿生人

低代码 数字化 乡村振兴 农业农村数字化

FL Studio21最新版DAW数字音频工作站

茶色酒

FL Studio FL Studio 21

柏拉图会反对ChatGPT吗?~深度好文| 社区征文

李韧

人工智能 ChatGPT

基于 Flink 流计算实现的股票交易实时资产应用

Apache Flink

大数据 flink 实时计算

web3 NFT代币铸造盲盒抽奖质押dapp游戏系统开发智能合约技术分析

开发微hkkf5566

捷报频传 | 博睿数据签约华润集团,携手共进共创共赢

博睿数据

可观测性 智能运维 博睿数据 签约 华润集团

vivo全球商城:库存系统架构设计与实践

vivo互联网技术

系统架构 电商 库存

JDK 24 和 JDK 25:最新进展全知晓_编程语言_InfoQ精选文章