Java 增强提案包括语言增强和性能优化,从 JDK 25 中的稳定值 API 开始。
随着JDK(Java 开发工具包)24刚刚全面上市,Oracle 提前透露了不久的将来即将推出的 Java 功能,包括增强原始装箱到空限制值类类型。
3 月 18 日,Oracle 列出了即将发布的 Java 版本所准备的五项功能,其中包括稳定值,该 API 已正式确定为将于今年 9 月发布的JDK 25版本。
另外两项功能包括值类和对象以及派生记录创建。所有五项功能的 JDK 增强提案 (JEP) 均已发布,目前处于预览阶段:
Enhanced primitive boxing 增强的原始装箱使用装箱来支持将原始类型更像引用类型的语言增强功能。目标包括允许在原始值用作字段访问、方法调用或方法引用的"接收者"时对其进行装箱,以及在覆盖具有引用类型返回的方法时允许未装箱的返回类型。此外,原始类型将作为类型参数受到支持。
Null-restricted value class types 空值限制值类类型允许将存储值对象的变量类型排除在外null,从而实现更紧凑的存储和运行时的其他优化。空值限制值类类型正在作为语言功能和虚拟机功能进行预览。
Value classes and objects 值类和值对象通过值对象增强了 Java 平台,值对象是仅具有final字段且缺乏对象标识的类实例。目标包括允许开发人员选择简单值的编程模型,其中对象仅通过其字段值来区分。该提案还将最大限度地提高 JVM 以改进内存占用、局部性和垃圾收集效率的方式对简单值进行编码的自由度。
Derived record creation 派生记录创建增强了语言从现有记录创建新记录的能力。一个目标是提供一种简洁的方法来从现有记录值派生出新记录值。另一个目标是通过消除提供显式凋零方法(即 setter 方法的不可变模拟)的需要来简化记录类的声明。
Stable values 稳定值是保存不可变数据的对象。由于 JVM 将稳定值视为常量,因此它们允许通过声明字段来实现相同的性能优化final。同时,它们在初始化时间方面提供了更大的灵活性。该提案的目标包括通过打破应用程序状态的整体初始化来改进 Java 应用程序的启动。