Java 25正式发布

Source: InfoQ - Backend

甲骨文(Oracle)发布"了Java编程语言和虚拟机的第25版。作为自JDK 21"以来的第一个长期支持(LTS)版本,最终特性集包括18个JEP(Java增强提案),其中7个已经最终确定。这些特性中有9个专注于性能和运行时。这个最终特性集中的JEP包括:

JEP 470:PEM编码的加密对象(预览")

JEP 502:稳定值(预览)"

JEP 503:移除32位x86移植版本"

JEP 505:结构化并发(第五次预览)"

JEP 506:作用域值"

JEP 507:模式、instanceof和switch中的原始类型(第三次预览)"

JEP 508:向量API(第十轮孵化)"

JEP 509:JFR CPU-Time剖析(实验性)"

JEP 510:密钥派生函数API"

JEP 511:模块导入声明"

JEP 512:紧凑源文件和实例主方法"

JEP 513:灵活的构造函数体"

JEP 514:提前编译命令行人体工程学"

JEP 515:提前编译方法分析"

JEP 518:JFR协同抽样"

JEP 519:紧凑对象头"

JEP 520:JFR方法计时与跟踪"

JEP 521:代际Shenandoah"

其中七个,作用域值、密钥派生函数API、模块导入声明、紧凑源文件和实例主方法、灵活的构造函数体、紧凑对象头和代际Shenandoah,在经历了各自的孵化和预览后最终确定,后两个是JDK 24中是实验特性。

这个版本还专注于性能和运行时,因为这些JEP中有九个是在Project Leyden"和HotSpot JVM"的支持下进行的。这包括两个JEP,提前编译命令行人体工程学和提前编译方法分析,它们加入了JEP 483,提前编译类加载和链接",这是Project Leyden在JDK 24中交付的第一个功能。

下图展示了自JDK 8以来每个Java版本中的JEP数量,如甲骨文博客文章"中所示。

我们将研究其中的一些JEP,讨论JDK 25的启动事件,并更新对JDK 26中可能包含功能的预测。

JFR方法计时与跟踪

JEP 520,JFR方法计时与跟踪",提议通过字节码`Instrumentation` 接口扩展JFR,增加方法计时和跟踪的功能。两个新的JFR事件, jdk.MethodTiming 和 jdk.MethodTrace ,分别在 MethodTimingEvent 和 MethodTraceEvent 类中使用,接受一个过滤器来选择适当的方法进行计时和跟踪。

紧凑对象头

JEP 519,紧凑对象头",提议将这个功能从实验级别提升到产品级别。受Project Lilliput"启发,这个功能“将HotSpot JVM中对象头的大小从96到128位减少到64位”。关于JEP 519的更多细节可以在这篇InfoQ新闻"中找到。

JFR合作采样

JEP 518,JFR协同抽样",提议“提高JDK飞行记录器 Flight Recorder(JDK Flight Recorder,JFR)异步采样Java线程栈时的稳定性。”这是通过在安全点(safepoint)遍历调用栈来实现的,即线程在定义良好的代码位置暂停的点。

提前编译(AOT)方法分析

JEP 515,提前编译方法分析",提议通过“使应用程序的前一次运行中的方法执行配置文件在HotSpot JVM启动时立即可用”来提高应用程序的预热时间。这允许JIT编译器在应用程序启动时立即生成本地代码,而不是等待收集配置文件。

提前编译(AOT)命令行人体工程学

JEP 514,提前编译命令行人体工程学",提议简化创建提前编译(AOT)缓存的过程,如JEP 483,提前编译类加载和链接"中所述,这可能通过“简化常见用例所需的命令”来加速Java应用程序的启动。

JFR cpu时间剖析(实验性)

JEP 509,JFR CPU-Time剖析(实验性)",是这个版本中唯一的新实验性功能,提议增强JFR以利用Linux内核CPU计时器,准确地测量CPU周期消耗。这将提供捕获Java应用程序CPU时间分析信息的能力。

JDK 25发布活动

JDK 25发布活动"于2025年9月16日在加利福尼亚州红木海岸的Oracle网站进行了直播,内容包括:与Oracle Java虚拟机高级总监Mikael Vidstedt"一起进行JDK 21到JDK 25的性能更新;Oracle高级产品经理Poonam Parhar"对JDK 21到JDK 25的安全更新;与Oracle Java开发者关系副总裁Chad Arimura"一起介绍Java AI库的发展;与Oracle的Java架构师Paul Sandoz"一起进行用于AI的Java示例演示,包括异构加速器工具包(Heterogeneous Accelerator Toolkit,HAT");与Oracle Java平台组软件开发高级副总裁Georges Saab"一起发展Java平台。还有大量示例演示,展示了Ana-Maria Mihalceanu"、Billy Korando"和Nicolai Parlog"在JDK 25中的新功能,他们是Oracle的Java开发倡导者和直播主持人。

JDK 26

预计在2026年3月进行正式版本发布,目前有三个JEP(JDK增强提案)被确定为JDK 26"的目标。然而,根据许多JEP候选提案和草案,尤其是那些已经提交的,我们可以推测还有哪些JEP有可能包含在JDK 26中。

JEP 522,G1 GC:通过减少同步来提高吞吐量",已被确定为JDK 26的目标。这个JEP提议减少G1垃圾收集器的开销,以改善应用程序线程和GC线程之间的同步。

JEP 517,HTTP/3 for the HTTP Client API",已被确定为JDK 26的目标。这个JEP提议“更新HTTPClient API以支持HTTP/3协议,以便库和应用程序可以与HTTP/3服务器交互,而只需最小的代码更改”。

JEP 504,移除Applet API",已被确定为JDK 26的目标。这个JEP提议移除在JDK 17中已被弃用的Applet API,因为Web浏览器已不再支持Applet,它将一直过时。

JEP草案8358541,TLS 1.3的后量子混合密钥交换",提议使用正在由互联网工程任务组(IETF)起草的TLS 1.3规范中的混合密钥交换",来增强RFC 8446,传输层安全(TLS)协议版本1.3"的实现,与JEP 496,量子抗性模块-基于块格的密钥封装机制",一起使用,该机制已在JDK 24中交付。

请注意,JEP草案可能随时会发生变化。

JDK 26"的正式发布日期预计将在2026年3月,很快将由Oracle Java平台组首席架构师Mark Reinhold"提出。开发者可以期待在2025年12月初进行特性冻结。

有关JDK 25中发布的其他JEP以及其他草案JEP和候选提案的更多详细信息,可以在这篇更详细的InfoQ新闻"中找到。

JDK 25现在可以从Oracle"下载,预计其他供应商的二进制文件将在未来几天内提供。

原文链接:

https://www.infoq.com/news/2025/09/java25-released/"