
最近,OpenJDK 生态系统迎来了一波活动热潮,八个新的 JEP 从草案状态提升为候选状态。其中四个将在各自的预览阶段后最终确定下来。
JEP 512(紧凑源文件和实例主方法)已从 JEP 草案 8344699 状态进入候选状态。这个 JEP 之前叫作“简单源文件和实例主方法”,提议在经过四轮预览后最终确定特性,这四轮预览分别是:在 JDK 24 中发布的 JEP 495(简单源文件和实例主方法(第四次预览));在 JDK 23 中发布的 JEP 477(隐式声明类和实例主方法(第三次预览));在 JDK 22 中发布的 JEP 463(隐式声明类和实例主方法(第二次预览));以及在 JDK 21 中发布的 JEP 445(无名类和实例主方法(预览))。该特性旨在“进化 Java 语言,让学生可以在不需要理解为大型程序设计的语言特性的情况下就能编写他们的第一个程序。”该 JEP 推进了 2022 年 9 月由 Oracle Java 语言架构师Brian Goetz撰写的博文“铺设入门之路”。Oracle 技术委员会成员Gavin Bierman已发布该特性的规范文档初稿,供 Java 社区评审。关于 JEP 445 的更多细节,可参见 InfoQ 的新闻报道。
JEP 511(模块导入声明)已从 JEP 草案 8344700 状态进入候选状态。该 JEP 提议在经过两轮预览后最终确定特性,这两轮预览分别是:在 JDK 24 中发布的 JEP 494(模块导入声明(第二次预览))以及在 JDK 23 中发布的 JEP 476(模块导入声明(预览))。该特性将使 Java 编程语言能够简洁地导入模块导出的所有包,目标是简化模块化库的重用,而无需将代码置于模块中。
JEP 510(密钥派生函数API)已从 JEP 草案 8353275 状态进入到候选状态。该 JEP 提议在经过一轮预览后最终确定特性,即在 JDK 24 中发布的 JEP 478(密钥派生函数API(预览))。该特性引入了用于密钥派生函数(KDF)的 API,这是一种加密算法,能够从密钥和数据中派生出额外的密钥,目标是允许安全提供者在 Java 或本地代码中实现 KDF 算法,并在 JEP 452(密钥封装机制)的实现中启用 KDF 的使用。
JEP 509(JFR CPU时间分析(实验性))已从 JEP 草案 8337789 状态进入候选状态。这个实验性的 JEP 提议增强 JDK Flight Recorder(JFR),以便在 Linux 操作系统上捕获 CPU 时间分析信息。
JEP 508(向量API(第十次孵化))已从 JEP 草案 8353296 状态进入候选状态。该 JEP 提议在 JDK 25 中进行第十次孵化,自 JDK 24 以来,没有 API 的变更和重大实现更新。此前经过九轮孵化,分别是:在 JDK 24 中发布的 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,用于“表达向量计算,这些计算可以在运行时可靠地编译为受支持的 CPU 架构的最优向量指令,从而实现优于等效标量计算的性能。”向量 API 将继续孵化,直到Valhalla项目提供必要的特性并作为预览特性向用户发布。届时,向量 API 团队将调整向量 API 及其实现来使用这些特性,并将向量 API 从孵化状态提升为预览状态。
JEP 507(模式、instanceof和switch中的原始类型(第三次预览))已从 JEP 草案 8349215 状态进入候选状态。在Amber项目的指导下,该 JEP 提议进行第三轮预览,以便从前两轮预览中获得更多经验和反馈,前两轮预览分别是:在 JDK 24 中发布的 JEP 488(模式、instanceof和switch中的原始类型(第二次预览))和在 JDK 23 中发布的 JEP 455(模式、instanceof和switch中的原始类型(预览))。该特性允许在所有模式上下文中使用原始类型模式,并扩展 instanceof 和 switch,让其支持所有原始类型,以此来增强模式匹配能力。更多细节可在草案规范中找到,该规范由 Oracle 首席技术委员会成员Aggelos Biboudis撰写。
JEP 506(作用域值)已从 JEP 草案 8352695 状态进入候选状态。这个 JEP 之前叫作“范围局部变量(孵化)”,提议在经过四轮预览后最终确定特性,这四轮预览分别是:在 JDK 24 中发布的 JEP 487(作用域值(第四次预览));在 JDK 23 中发布的 JEP 481(作用域值(第三次预览));在 JDK 22 中发布的 JEP 464(作用域值(第二次预览));在 JDK 21 中发布的 JEP 446(作用域值(预览));以及在 JDK 20 中发布的 JEP 429(作用域值(孵化))。该特性允许在线程内和跨线程共享不可变数据。与线程局部变量相比,这在使用大量虚拟线程时更为高效。
JEP 505(结构化并发(第五次预览))已从 JEP 草案 8340343 状态进入候选状态。该 JEP 提议进行第五轮预览,并做出了一些 API 调整,以便从前四轮预览中获得更多反馈,前四轮预览分别是:在 JDK 24 中发布的 JEP 499(结构化并发(第四次预览));在 JDK 23 中发布的 JEP 480(结构化并发(第三次预览));在 JDK 22 中发布的 JEP 462(结构化并发(第二次预览));以及在 JDK 21 中发布的 JEP 453(结构化并发(预览))。该特性通过引入结构化并发简化并发编程,将“在不同线程中运行的关联任务组视为一个工作单元,从而简化错误处理和取消操作,提高可靠性并增强可观测性。”其中一个提议的 API 涉及通过静态工厂方法而非公共构造函数来开放StructuredTaskScope接口。
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 的功能集即将被锁定。截至目前,已确定包含以下两个 JEP:
JEP 503:移除32位x86移植版本
JEP 502:稳定值(预览)
尽管 JEP 508(向量API(第十次孵化))尚未正式确定,但已经确定它将被包含在 JDK 25 的功能集中。
原文链接:
https://www.infoq.com/news/2025/04/jdk-news-roundup-apr14-2025/
评论