9月15日,Oracle Java平台组首席架构师Mark Reinhold宣布,JDK 27正式达到通用可用性(GA)。该版本参考实现包含九项增强提案(JEP),涵盖预览版与孵化器阶段功能,旨在提升平台在企业负载及新兴场景下的表现。

相比JDK 27本身的更新,备受关注的Leyden项目进展更为显著。该项目聚焦于更快的启动速度、更短的预热时间及更低的内存占用。其核心技术依赖于“训练运行”:在代表性负载下捕获类加载、链接、分析数据及部分编译代码,随后在生产环境中加载这些预处理状态。该方法在保留完整Java动态模型的同时,避免了生成完全静态二进制文件带来的灵活性丧失。

从训练运行到生产落地

Leyden的核心逻辑在于利用AOT(提前编译)缓存优化启动流程。JVM在训练阶段观察类加载与方法调用频率,将信息写入缓存;后续启动时直接读取缓存,避免重复工作。早期基准测试显示,此举可将启动时间减少70%。

为解决缓存兼容性问题,针对JDK 26的JEP 516引入了适用于任何垃圾回收器(GC)的提前对象缓存,打破了早期版本与特定GC绑定的限制。SoftwareMill的测试表明,在引入ZGC后,Spring Petclinic样本在保持缓存规模相当的前提下,获得了显著的性能收益与灵活性。

当前原型正探索在缓存中存储由JIT生成的机器代码,以进一步缩短预热时间。但这涉及便携性权衡:针对特定微架构优化的代码在迁移时会损失部分优势。开发者需在激进优化与广泛兼容性之间做出选择。

框架层面已开始集成实验。Quarkus团队结合Red Hat与IBM的贡献,将最小应用启动时间从370毫秒降至80毫秒,大型应用从3秒降至1秒以内。这些数据源自真实应用而非合成基准。Quarkus已于今年三月披露集成细节,并持续跟踪premain分支以获取新功能。

Oracle官方亦强调Leyden在改善启动时间、峰值性能达成速度及内存占用方面的价值,并将其与Project Valhalla并列。Valhalla已进入JDK 28早期预览,其Value类旨在为AI、分析及金融负载提供更紧凑的数据布局。两者共同应对Java性能曲线的两端。

JDK 27的其他关键更新

JDK 27本身提供了扎实的基础设施更新:G1成为所有平台的默认垃圾回收器;TLS 1.3支持后量子混合密钥交换;Lazy常量进入第三次预览;结构化并发进入第七次预览;Vector API仍处于孵化器阶段。这些更新强化了安全性并简化了并发代码,但未直接解决微服务与无服务器部署中的冷启动惩罚问题。

冷启动痛点正是Leyden吸引Netflix、Spring团队及云运营商的关键。Netflix工程师在2026年的一次演讲中透露,其系统运行成千上万个JVM,自动扩缩容或故障恢复时,每一秒的启动与预热都至关重要。Leyden的增量式方法允许企业在不重写部署管道或放弃动态类加载的前提下逐步采用。

目前,早期访问构建版本已在GitHub的Leyden仓库及jdk.java.net/leyden提供,支持Linux、macOS及有限的Windows环境。项目团队欢迎关于缓存大小、训练稳定性及行为差异的反馈,邮箱为[email protected]。

尽管前景广阔,风险依然存在。基于特定训练运行的缓存可能遗漏生产环境的边缘情况,反射与动态代理需谨慎处理。为此,Leyden团队增加了可检查工具,帮助开发者洞察缓存内容及决策逻辑。未来路线图包括迭代训练,即允许应用所有者在基础缓存之上叠加自有数据。

Oracle Java平台高级副总裁Georges Saab表示,JDK 27延续了为企业工作负载及创新AI、后量子加密能力提供稳定基础的传统。Leyden符合这一路径,通过交付具体的JEP累积可衡量的收益,而非进行花哨的重构。

未来六个月值得关注:JDK 28早期访问版将预览更多Valhalla内容,Leyden可能以某种形式添加AOT代码编译,框架供应商也将扩展支持。生产部署将开始量化冷启动与训练缓存运行之间的实际差异。完整的GA通知及JEP列表已归档于OpenJDK,供社区查阅。