Java 按照半年发布周期于 2026 年 9 月 15 日推出 27 版本,其中包含九项 JEP 倡议,其中四项已成为稳定功能,另外四项仍处于预览阶段,还有一项 API 处于孵化阶段。JetBrains 表示,IntelliJ IDEA 从第一天起便支持 Java 27,包括该版本的稳定功能和预览功能。
已成为稳定功能的主要内容
最重要的运行时变化,是在所有 HotSpot JVM 环境中默认采用 G1 垃圾收集器。在以前的版本中,配备一个或更少处理器,或内存少于 1,792 MB 的设备会使用 Serial GC。随着 G1 得到改进,即使在这些环境中,它也成为默认选项;如有需要,仍可使用 -XX:+UseSerialGC 选项手动选择 Serial GC。
Java 27 还在 TLS 1.3 中加入了后量子计算混合密钥交换。该变化旨在应对“现在收集、以后解密”模式:攻击者可以记录当前加密的数据,并在未来具备足够的量子计算能力后尝试解密。
压缩对象头也成为 HotSpot JVM 中的默认选项。在 64 位架构上,这一变化会将对象头大小从 96 位降低至 64 位,从而可能减少内存消耗、提高部署密度并改善数据局部性,尤其适用于创建大量对象的应用。JetBrains 指出,其开发环境在使用这一功能时观察到了稳定的内存节省。
第四项稳定改进为 JDK Flight Recorder 增加了在记录离开进程之前,对命令行参数、环境变量初始值和系统属性进行清理的能力,以减少敏感信息泄漏。
预览功能与孵化功能
Java 27 继续开发惰性常量、instanceof 和 switch 中的基本类型模式、结构化并发以及加密对象的 PEM 编码。这些功能尚未最终确定,在正式采用前可能发生变化。因此,IntelliJ IDEA 仅允许在启用语言级别 27(Preview)并使用当前 JDK 版本时使用它们。
Vector API 仍处于孵化模块阶段,它支持表达可编译为受支持处理器适用指令的向量运算。要使用它,必须通过 --add-modules jdk.incubator.vector 选项显式添加该模块,这也表明它目前还不适合稳定的生产环境使用。
对开发者而言,实际有哪些变化?
可以从 IntelliJ IDEA 的设置中下载 JDK 27,或关联已安装的开发环境;使用 SDKMAN! 或 asdf 时,该程序还能够读取 .sdkmanrc 和 .tool-versions 文件,以自动设置 JDK 版本。相关支持还包括在编辑器中突出显示预览功能,帮助团队识别依赖可变接口的位置。
Java 27 还包含一项修复调试期间导航变慢问题的改进,JetBrains 已将该修复移植到 JetBrains Runtime 25。对于尚不想迁移到 Java 27 的团队,这意味着可以通过 JBR 25,或包含该修复的 JDK 25 版本,获得这一改进。
Java 27 并非长期支持版本,但其中的稳定变化涉及内存管理、通信安全和记录数据安全,而不仅仅是语言新增功能。另一方面,预览功能和孵化功能仍不适合用于最终的生产决策;此外,将 G1 设为默认并不意味着无需测试受资源限制的应用,因为这些应用可能从 Serial GC 中受益。