Java 25 正式发布

  甲骨文(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 LeydenHotSpot 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 MihalceanuBilly KorandoNicolai 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/