JDK 26是自JDK 25发布以来首个非长期支持版本的Java开发工具包。根据Oracle Java平台组首席架构师Mark Reinhold的公告,JDK 26已进入第二版候选版本阶段。在2025年12月初,JDK的主线代码仓库被分离出来,形成了JDK稳定版本仓库,该仓库定义了JDK 26的功能集。对于那些严重的错误或功能缺陷,虽然可能会被修复,但必须通过缺陷提交流程获得批准才能正式纳入代码库。根据发布计划,JDK 26将于2026年3月17日正式发布。

这10项新功能最终被整理成了JEPs形式,这些功能可以归为五个类别:核心Java库HotSpot虚拟机Java语言规范安全库以及客户端库

其中有5项新功能属于核心Java库类别:

  • JEP 500:优化最终版本的稳定性
  • JEP 517:为HTTP客户端API添加HTTP/3支持
  • JEP 525:结构化并发模型(第六次预览版)
  • JEP 526:延迟初始化常量机制(第二次预览版)
  • JEP 529:向量操作API(第十一次测试阶段)

还有2项新功能属于HotSpot虚拟机类别:

  • JEP 516:让任何类型的垃圾回收器都能实现提前对象缓存机制
  • JEP 522:通过减少同步操作来提升G1垃圾回收器的吞吐量

另有1项新功能属于Java语言规范类别:

  • JEP 530:在模式匹配、instanceof运算以及switch语句中支持基本数据类型

还有1项新功能属于安全库类别:

  • JEP 526:使用PEM格式对加密对象进行编码(第二次预览版)

最后,还有1项新功能属于客户端库类别:

  • JEP 504:移除Applet API

下面我们将详细分析这些新功能,并说明它们分别归属于哪些Java项目框架——AmberLoomPanamaValhalla以及Leyden。这些项目旨在开发一系列组件,最终通过有针对性的合并操作将这些组件纳入JDK中。

Amber项目

JEP 530提案对《模式、instanceof操作及switch语句中的基本数据类型》这一功能进行了第四次预览版本修订,此次修订包含两项变更。此前,从JDK 25到JDK 23,这一功能已经经历了三轮预览阶段。这些变更包括:进一步完善无条件精确性的定义;以及在switch结构中加强支配关系检查的功能。

Loom项目

JEP 525提案对《结构化并发编程》这一功能进行了第六次预览版本修订。此前,从JDK 19到JDK 25,这一功能已经经历了五轮预览阶段。该功能通过引入“结构化并发”概念,使并行编程变得更加简单——它“将在不同线程中运行的相关任务视为一个整体单元来处理,从而简化错误处理和取消操作,提高程序的可靠性,并增强其可观测性”。唯一的一项重要变更是在StructuredTaskScope.Joiner接口中添加了onTimeout()方法,这使得该接口的实现能够在超时后返回结果。

Panama项目

JEP 529提案对“向量API”功能进行了第十一次预览版本修订。从JDK 16到JDK 25,这一功能已经经历了十轮预览阶段,但在此期间其实现细节并未发生实质性变化。该功能旨在提供一种API,用于“编写能够可靠地在运行时被编译成相应CPU架构支持的向量指令的代码,从而实现比传统标量计算更高的性能”。未来,当Valhalla项目中的相关功能准备好以预览版本的形式发布时,“向量API”团队将会对其接口及实现方式进行相应的调整,然后将其状态从“孵化阶段”提升为“预览阶段”。

安全库相关更新

JEP 524提案对加密对象的PEM编码格式进行了第二次预览版本修订。在JDK 25中首次发布了相关的预览版本(即JEP 470),此次修订包含一些变更。这些变更包括:将PEMRecord类的名称更改为PEM;同时改进PEMEncoderPEMDecoder类,使其能够支持对KeyPairPKCS8EncodedKeySpec类的加密和解密操作。

热点特性

JEP 522,G1垃圾收集器:通过减少同步操作来提升吞吐量,该提案旨在降低G1垃圾收集器的开销,从而改善应用程序线程与垃圾收集线程之间的同步效率。

JEP 516,适用于任何垃圾收集器的提前加载对象缓存机制,该提案旨在进一步完善JDK 24中发布的JEP 483:类的提前加载与链接技术,从而缩短程序的启动和预热时间,使其能够与任何垃圾收集器配合使用,包括低延迟的Z垃圾收集器。

JDK 27

JDK 27计划于2026年9月正式发布,目前仅有1项JEP被确定为该版本的候选内容。不过,根据众多JEP提案草案以及已经发布的预览版本,我们可以推测哪些JEP有潜力被纳入JDK 27中。

JEP 527,适用于TLS 1.3的后量子混合密钥交换机制,已被明确列为JDK 27的候选内容。该提案旨在利用互联网工程任务组正在制定的TLS 1.3混合密钥交换规范,以及对JDK 24中发布的JEP 496抗量子攻击的模块格基密钥封装机制进行整合,从而完善RFC 8446TLS 1.3协议规范的实施。

JEP 401,Valhalla项目的支持下,旨在为Java语言添加“值对象”这一类型。所谓值对象,是指那些仅包含final字段、没有唯一标识符,并且其唯一区别在于各字段所存储的值的对象。

JEP草案8376595利用ZGC加快应用程序的启动速度及预热过程,旨在改进Z垃圾收集器,使其能够更高效地根据应用程序的实际需求分配内存。通过仅创建一个规模较小的初始堆栈,可以显著减少操作系统的开销,从而缩短应用程序的启动时间。

请注意,这些JEP草案随时都可能发生变更。我们预计,Oracle很快就会为JDK 27挑选更多的JEP项目进行开发。

Comments are closed.