Java 27 来了!

Java 27 来了!

💡 原文英文,约2200词,阅读约需8分钟。
📝

内容提要

Oracle发布JDK 27,包含9项JEP,涵盖TLS 1.3混合密钥交换、加密编码API、模式匹配增强、G1成为默认垃圾收集器、紧凑对象头、惰性常量、结构化并发、向量API及JFR脱敏等预览或孵化特性,并改进性能、安全与诊断。Helidon 27和JavaFX 27同步更新,OCI率先支持。

🔎

延伸解读

默认垃圾收集器变更的影响

JDK 27将G1设为所有环境下的默认垃圾收集器,而不再仅限于服务器环境。这意味着在未指定收集器时,HotSpot JVM总是选择G1。对于之前默认使用Serial收集器的场景,官方表示吞吐量、延迟、内存占用和启动时间等性能指标不应显著下降。开发者应关注实际表现,必要时可显式指定收集器。

紧凑对象头默认化的收益

紧凑对象头成为HotSpot JVM的默认对象头布局,在64位架构上将对象头从96位减少到64位。这有助于减小堆大小、提高部署密度并改善数据局部性。对于内存敏感或高密度部署的应用,可能带来资源效率提升,但具体效果取决于工作负载。

预览与孵化特性的使用注意

JDK 27包含四个预览特性和一个孵化特性,如模式匹配增强、结构化并发和向量API。这些特性已完全指定和实现,但尚未永久化,旨在收集开发者反馈。它们可能在后续版本中变化,因此不建议在生产环境中依赖,但可用于评估和反馈。

安全与诊断的增强

JDK 27通过TLS 1.3混合密钥交换、加密编码API和JFR脱敏等提升安全性。混合密钥交换默认应用于javax.net.ssl API,无需代码更改即可防御未来量子计算攻击。JFR在记录中脱敏命令行参数、环境变量和系统属性,防止敏感信息通过诊断数据泄露。

Q&A

JDK 27 有哪些主要的新特性?

JDK 27 包含 9 项 JEP,涵盖:TLS 1.3 混合密钥交换、加密编码 API、模式匹配增强、G1 成为默认垃圾收集器、紧凑对象头、惰性常量、结构化并发、向量 API 以及 JFR 脱敏。其中 4 项为预览特性,1 项为孵化特性。

JDK 27 在安全方面有哪些改进?

JDK 27 通过实现 TLS 1.3 混合密钥交换算法来抵御未来量子计算攻击,使用 javax.net.ssl API 的应用默认受益。新增加密编码 API,可将密钥、证书和 CRL 编码为 PEM 格式。还更新了 ML-KEM 和 ML-DSA 私钥编码,提升了 ML-KEM、ML-DSA、X25519 和 Ed25519 算法的性能,并新增 jcmd VM.security_properties 命令用于查看安全属性。

G1 垃圾收集器在 JDK 27 中有什么变化?

在 JDK 27 中,G1 垃圾收集器成为所有环境的默认收集器,而不仅仅是服务器环境。当命令行未指定垃圾收集器时,HotSpot JVM 将始终选择 G1。在之前选择 Serial 收集器的场景中,吞吐量、延迟、内存占用和启动时间等性能指标不应显著下降。

JDK 27 中的紧凑对象头是什么?有什么好处?

紧凑对象头是 HotSpot JVM 中默认的对象头布局。在 64 位架构上,它将对象头从 96 位减少到 64 位,从而减少堆大小、提高部署密度并改善数据局部性。

JDK 27 的结构化并发 API 有什么作用?

结构化并发 API 将不同线程中运行的相关任务组视为一个工作单元,简化并发编程,并帮助减少取消和关闭时常见的风险,如线程泄漏和取消延迟。它特别有利于提高 AI 和云原生工作负载的可扩展性和弹性。

JDK 27 的向量 API 能带来什么性能提升?

向量 API 表达向量计算,在支持的 CPU 架构上可靠地编译为最优向量指令,从而加速数据分析、AI 推理和科学计算工作负载。它使开发者能够获得优于等效标量计算的性能,常用于 AI 推理和计算场景。

JDK 27 的 JFR 脱敏功能是什么?

JDK 27 增强了 JDK Flight Recorder (JFR),可在记录中脱敏命令行参数以及环境变量和系统属性的初始值。这些数据在离开进程之前被脱敏,有助于防止敏感信息通过诊断数据泄露。

Helidon 27 和 JavaFX 27 与 JDK 27 有什么关系?

Helidon 27 和 JavaFX 27 与 JDK 27 同步发布,并遵循 OpenJDK 的发布节奏。Helidon 27 是 Oracle 支持的云原生 Java 微服务和 AI 应用框架,构建在现代 Java 能力(如虚拟线程)之上。JavaFX 27 提供现代 Java 客户端应用框架,亮点包括 macOS 上的 Metal 渲染管道、更丰富的文本编辑控件和可访问性改进。两者都属于 Oracle Java Verified Portfolio。

JDK 27 的支持周期是多久?

Oracle 将为 JDK 27 提供更新,直到 2027 年 3 月,届时将被 Oracle JDK 28 取代。JDK 27 是通过六个月发布周期按时交付的第 18 个特性版本。

哪些云提供商率先支持 JDK 27?

OCI(Oracle Cloud Infrastructure)是第一个支持 Oracle JDK 27 的云提供商。在 OCI 上部署 Java 可提高创新、性能、效率和成本节约,且 Oracle Java SE 和 Java Management Service 等高级功能不额外收费。

🏷️

标签

➡️

继续阅读