OpenJDK 近期新闻:密钥派生、作用域值、紧凑对象头、JFR 方法计时与跟踪

  • 2025-05-21
    北京
  • 本文字数:1744 字

    阅读完需:约 6 分钟

JDK 25 的目标 JEP

两个 JEP 从 Proposed to Target 状态进入到 Targeted 状态,目标版本为 JDK 25。

JEP 510(密钥派生函数 API),相关公告见这里,提议在经过一轮预览后最终确定该特性,没有发生变更。这一轮预览为在 JDK 24 中交付的 JEP 478(密钥派生函数 API(预览))。该特性引入了一个用于密钥派生函数(KDF)的 API。KDF 是一种从密钥和其他数据派生额外密钥的加密算法,目标包括:允许安全提供者在 Java 或本地代码中实现 KDF 算法,并在 JEP 452(密钥封装机制)的实现中使用 KDF。

JEP 506(作用域值),相关公告见这里,提议在经过四轮预览后最终确定该特性,没有发生变更。这四轮预览分别是:在 JDK 24 中交付的 JEP 487(作用域值(第四轮预览));在 JDK 23 中交付的 JEP 481(作用域值(第三轮预览));在 JDK 22 中交付的 JEP 464(作用域值(第二轮预览));在 JDK 21 中交付的 JEP 446(作用域值(预览));以及在 JDK 20 中交付的 JEP 429(作用域值(孵化))。该特性以前叫作 扩展本地变量(孵化),支持在同一个线程内以及跨线程共享不可变数据。这比线程局部变量更好,尤其是在使用大量虚拟线程时。

JDK 25 的提议目标 JEP

四个 JEP 从 Candidate 状态进入到 Proposed to Target 状态,目标版本为 JDK 25。

JEP 519(紧凑对象头)从 JEP Draft 8354672 状态进入到 Candidate 状态,然后是 Proposed to Target,目标版本为 JDK 25(相关公告分别在这里这里)。该 JEP 提议将该特性从实验性阶段提升为正式产品特性。受 Project Lilliput 的启发,该特性可以“将 HotSpot JVM 中的对象头大小从 96 到 128 位减少到 64 位,适用于 64 位架构”。关于 JEP 450 的更多详细信息,可以参考 InfoQ 的新闻报道

JEP 515(提前方法分析,相关公告见这里)提议“在 HotSpot JVM 启动时可以立即使用应用程序之前运行时收集的方法执行分析结果”,以此来缩短应用程序的预热时间。这使得 JIT 编译器能够在应用程序启动时立即生成本地代码,无需等待收集分析结果。

JEP 514(提前命令行易用性,相关公告见这里)提议简化 JEP 483(提前类加载和链接)中描述的创建提前缓存的过程,该过程可以通过“简化常见用例所需的命令”来加速 Java 应用程序的启动。

JEP 507(模式、instanceof 和 switch 中的原始类型(第三轮预览),相关公告见这里)提议进行第三轮预览,以便从之前的两轮预览中获得更多经验和反馈。前面两轮预览分别为:在 JDK 24 中交付的 JEP 488(模式、instanceof 和 switch 中的原始类型(第二轮预览))和在 JDK 23 中交付的 JEP 455(模式、instanceof 和 switch 中的原始类型(预览))。该特性源于 Project Amber,允许在所有模式上下文中使用原始类型模式,并让 instanceof 和 switch 支持所有原始类型,从而增强了模式匹配。更多详细信息可以参考Aggelos Biboudis(Oracle 首席技术成员)编写的草案规范

它们各自的评审在 2025 年 5 月 22 日结束。

新的候选 JEP

JEP 520(JFR 方法计时与跟踪)已从 JEP Draft 8328610 状态进入到 Candidate 状态,相关公告见这里。该 JEP 提议使用字节码 Instrumentation 接口扩展 JDK Flight Recorder 的方法计时和跟踪功能。

JDK 25 的特性集(迄今为止)和发布计划

由 Oracle Java 平台团队首席架构师 Mark Reinhold 批准的 JDK 25 发布计划如下:

  • 第一阶段降速(从主线分支):2025 年 6 月 5 日

  • 第二阶段降速:2025 年 7 月 17 日

  • 初始候选版本:2025 年 8 月 7 日

  • 最终候选版本:2025 年 8 月 21 日

  • 正式发布:2025 年 9 月 16 日

距离计划的第一阶段降速不到三周的时间,届时 JDK 25 的功能集将被冻结,目前包含以下 13 个 JEP:

JDK 25 被指定为继 JDK 21、JDK 17、JDK 11 和 JDK 8 之后的下一个长期支持(LTS)版本。

原文链接

https://www.infoq.com/news/2025/05/jdk-news-roundup-may12-2025/