9月15日,Oracle与OpenJDK社区正式发布Java 27。此次更新在改善默认设置、降低内存占用及增强安全性方面迈出关键一步,且无需开发者重写应用程序。

性能显著跃升

性能是本次更新的核心。Phoronix基于搭载AMD Ryzen处理器和Linux系统的测试平台,对比了从Java 8到最新OpenJDK版本的性能。结果显示,Java 27在数十种工作负载中普遍优于前代产品,经常位居榜首或接近顶端。得益于即时编译器(JIT)、垃圾回收器及运行时的多年优化,部分工作负载实现了两位数的性能飞跃。

默认配置革新:G1回收器与紧凑对象头

Java 27两项变更对实际部署影响深远。首先,JVM在所有环境中默认使用Garbage-First(G1)收集器,取代了以往在小堆或低核心机器上选择的串行GC(Serial GC)。除非命令行另有指定,否则生产运维人员将自动受益。其次,紧凑对象头功能无需任何标志即可启用,将64位系统上的经典96位对象头缩减至64位。

后端工程师Arvind Kumar指出,JDK 27标志着Java不再要求用户“选择加入”良好默认设置,而是直接开启。SPECjbb2015测试显示,该调整使堆空间减少22%,CPU时间减少8%。亚马逊已在数百个生产服务中应用较小的头部结构,SAP也在其SapMachine分支中将其设为默认。

9月24日的Spring Boot 4.1服务内存测试进一步证实了这一收益:在新的默认设置下,活跃集从320 MB降至273 MB,驻留集大小相应下降。这在资源受限的容器中允许运维人员在保留缓冲空间的同时收紧内存限制。尽管在微小单核配置下,G1的本机内存占用略高于Serial,但总体RSS和活跃堆通常更低,吞吐量得以维持。

安全性升级:引入后量子混合密钥交换

Java 27为TLS 1.3添加了后量子混合密钥交换功能,结合经典算法与抗量子算法(如ML-KEM)。使用标准JSSE TLS的应用程序无需更改代码即可获得保护。媒体报道称,软件更改配合特定架构的内部函数带来了显著的吞吐量提升:X25519密钥生成和协商提高49%至54%,Ed25519操作提高46%至49%,混合X25519MLKEM768提升27%至51%。Oracle计划在未来几个月内将类似能力反向移植到长期支持(LTS)版本中。

其他特性与展望

此外,Vector API进入第12个孵化器阶段,惰性常量(Lazy constants)达到第三次预览,结构化并发处于第七次预览,JFR支持在导出前删除敏感数据,加密对象的PEM编码支持进入预览阶段。这些特性旨在给予团队实验时间,无需立即采取行动。

长期来看,Java的性能曲线显示出持续的精细化。虽然许多企业仍停留在Java 8,但现代运行时在几乎不需要应用程序更改的情况下提供了更好的吞吐量、更低的内存占用和更强的安全性。对于容器运维人员而言,更小的堆意味着更高的硬件密度,可预测的GC行为简化了编排流程。尽管紧凑头可能影响依赖确切偏移量的序列化代码,需进行一次性审计,但整体收益似乎超过了调整代价。随着JDK 28早期访问构建版预览Project Valhalla值对象,Java 27为组织提供了一个稳定且高效的今日目标。