新特性总览
由 Oracle 主导的 Java 标准计划更新版本 Java Development Kit 27(JDK 27),其候选版本将于 8 月 6 日发布,首个候选发布版本(RC)阶段也定于这一天开启。目前,JDK 27 已进入第二阶段的稳定期,功能特性集已冻结。在 JDK 27 的参考实现中,共列出了九项特性。前五项分别是:将 Garbage-First(G1)设为默认垃圾回收器、为 TLS 1.3 引入后量子混合密钥交换、引入惰性常量、支持结构化并发,以及在模式匹配、`instanceof` 和 `switch` 中支持基本数据类型。后四项特性为:紧凑对象头、JDK Flight Recorder(JFR)进程内数据编辑、向量 API,以及为加密对象提供 Privacy-Enhanced Mail(PEM)编码。
发布时间安排
JDK 27 的最终候选发布版本阶段将于 8 月 20 日开启,正式版预计于 9 月 15 日全面发布。JDK 27 的早期访问版本可在 jdk.java.net 上获取。
各特性详细解读
- **默认垃圾回收器变更**:在 JDK 27 中,G1 将在所有环境而非仅服务器环境中成为默认垃圾回收器。其目标是确保 HotSpot JVM 始终选择 G1,同时保证吞吐量、延迟、内存占用和启动时间等性能指标不会显著下降。
- **TLS 1.3 后量子混合密钥交换**:该特性旨在通过实现混合密钥交换算法,增强需要安全网络通信的 Java 应用程序的安全性。这些算法将抗量子算法与传统算法相结合,以抵御未来量子计算攻击。
- **惰性常量特性**:为存储不可变数据的对象引入了一个 API。JVM 将惰性常量视为真正的常量,从而实现与声明 `final` 字段相同的性能优化。不过,与 `final` 字段相比,惰性常量在初始化时机上具有更大的灵活性。该特性已是第三次预览。
- **模式匹配支持基本数据类型**:旨在通过允许在所有模式上下文中使用基本数据类型来增强模式匹配功能,并扩展 `instanceof` 和 `switch` 以支持所有基本数据类型。这是该特性的第五次预览。
- **结构化并发特性**:通过引入一个 API,将在不同线程中运行的相关任务组视为一个工作单元,从而简化并发编程。其目标包括简化错误处理和取消操作、提高可靠性以及增强可观测性。这是该特性的第七次预览。
- **紧凑对象头**:JDK 27 将紧凑对象头设为 HotSpot JVM 中的默认对象头布局。在 64 位架构上,紧凑对象头将对象头从 96 位缩减至 64 位,从而减少堆大小、提高部署密度并增强数据局部性。
- **JFR 进程内数据编辑**:允许用户在 JFR 记录中编辑命令行参数、环境变量和系统属性的初始值。JFR 记录文件可能包含敏感数据,如命令行参数中的机密信息、环境变量中的访问令牌以及系统属性中的密码。在数据离开进程之前,这些敏感数据可(可选)被编辑,以防止信息泄露。
- **向量 API**:引入了一个用于表达向量计算的 API,该 API 能在运行时可靠地编译为受支持 CPU 上的最优向量指令,从而实现比等效标量计算更好的性能。这是该孵化 API 的第 12 次孵化。
- **加密对象的 PEM 编码**:引入了一个 API,用于将表示加密密钥、证书和证书撤销列表的对象编码为 PEM 传输格式,并将 PEM 格式的数据解码回对象。这是一个预览 API。
版本性质与支持周期
JDK 27 是一个短期特性版本(非长期支持版本),Oracle 将为其提供六个月的支持。其前一个版本 JDK 26 也是短期版本,于 3 月 17 日全面发布。