
每六个月一更的 Java,如今来到了 Java 26 版本。
本次 Java 26 是一个短期版本,官方提供六个月的支持。


主要新特性概览
JDK 26 官方包含 10 项 Java Enhancement Proposal(JEP)功能,具体包括:
1. 模式匹配中的原始类型、instanceof 与 switch(第四次预览)
这一功能旨在增强模式匹配的表达能力:
允许在任何模式上下文中使用原始类型(如 int, double 等)。
扩展 instanceof 和 switch 以支持所有原始类型。
这是第四次预览功能,此前在 JDK 23、24、25 中也已提供预览。目标包括:
支持统一的数据探索,让所有类型都能使用类型模式。
将类型模式与 instanceof 对齐,并实现安全类型转换。
允许模式匹配在嵌套模式和顶层模式中使用原始类型。
提供简单易用的语法,避免因不安全类型转换丢失信息。
扩展 switch 功能,可处理任意原始类型值。
第四次预览的改进包括无条件精确性定义增强,以及 switch 构造中更严格的支配性检查,帮助编译器发现更多潜在错误。对于 AI 场景,这使得 AI 与业务逻辑的集成更简单。
2. AOT 对象缓存
HotSpot JVM 通过 AOT 对象缓存可以提升启动和预热速度,适用于包括低延迟 ZGC 在内的任意垃圾回收器。原理是将 Java 对象以中立、与垃圾回收器无关的格式顺序加载到内存,而不是映射到 GC 专用格式。
此功能的目标包括:
使所有垃圾回收器与 Project Leyden 引入的 AOT 缓存兼容顺畅。
将 AOT 缓存与 GC 实现细节解耦。
保证使用 AOT 缓存不会显著增加启动时间。
对于 AI 应用,这意味着任何 GC 都可以通过 AOT 缓存快速启动,加快模型加载和计算准备时间。
3. Vector API(第十一轮孵化)
JDK 26 引入了 Vector API 第十一轮孵化版本,提供了一个用于表达向量计算的 API,能够在支持的 CPU 上可靠地编译成最优向量指令,从而实现比等效标量计算更高的性能。
这个孵化中的 Vector API 最早出现在 JDK 16(2021 年 3 月发布),设计目标是语法清晰简洁、平台无关、在 x64 与 AArch64 CPU 上具有可靠性能,并能在不支持向量指令的平台上优雅降级。
Vector API 的长期目标是利用 Project Valhalla 对 Java 对象模型的增强,使得 Java 在处理大规模计算和 AI 场景时性能进一步提升。
4. 惰性常量(第二轮预览)
JDK 26 还带来了惰性常量(Lazy Constants)API 的新预览,此前通过 JDK 25 的 stable values 功能已提供首次预览。
惰性常量是持有不可变数据的对象,在 JVM 内部被视为真正的常量,从而可以享受与声明 final 字段相同的性能优化。与 final 字段相比,惰性常量提供了更灵活的初始化时机,同时在 AI 应用中有利于高效的数据共享。
5. PEM(隐私增强邮件)编码的加密对象(第二轮预览)
PEM(隐私增强邮件)编码 API 的第二次预览允许将表示加密密钥、证书以及证书吊销列表的对象编码为 PEM 格式,并从该格式解码回对象。
第二次预览对 API 做了若干改进,包括将 PEMRecord 类重命名为 PEM,新增了 decode() 方法以返回解码后的 Base64 内容,同时将 EncryptedPrivateKeyInfo 类的 encryptKey 方法改名为 encrypt,并支持 DEREncodable 对象而非仅 PrivateKey 对象,从而可以加密 KeyPair 和 PKCS8EncodedKeySpec 对象。
6. 结构化并发(第六次预览)
结构化并发 API 通过将不同线程中运行的相关任务组视作单个工作单元,简化了并发编程。它优化了错误处理和任务取消流程,提高了可靠性和可观察性。这一特性鼓励一种更安全的并发编程风格,能够避免常见的线程泄漏、取消延迟等问题,并提升 AI 并发计算的表现。
7. 深度反射修改 final 字段的使用警告
JDK 26 还引入了对深度反射修改 final 字段的警告,为未来版本做好准备,使得 final 字段默认不可修改,从而保证程序完整性,提高安全性和性能。
开发者可以通过有选择地启用修改权限,在必要时绕过当前警告和未来限制。
8. G1 垃圾回收器同步优化以提升吞吐量
在垃圾回收方面,G1 GC 的优化提案旨在减少应用线程与 GC 线程间的同步,从而提升吞吐量。
目标包括降低 G1 GC 的同步开销、减少写屏障插入代码大小,并保持 G1 的整体架构不变。
G1 作为 HotSpot JVM 默认的垃圾回收器,设计上兼顾延迟和吞吐,但在某些场景下,相比以吞吐为导向的 Parallel 和 Serial GC,其性能会有所折中。
G1 GC 的改进意味着应用线程与 GC 线程共享 CPU 并协调执行,这种同步既影响吞吐量,也可能增加延迟,但总体上优化了并发处理和 GC 暂停时间。
9. Client API 支持 HTTP/3
HTTP/3 支持使 Java 库和应用能够以最少代码修改与 HTTP/3 服务器交互。
JDK 26 更新了 HTTP Client API,使其能够发送和接收 HTTP/3 请求和响应。开发者可以选择使用 HTTP/3,而无需改变默认协议版本(HTTP/2)。
HTTP/3 是 Web 通信协议的重大版本,基于 IETF QUIC(Quick UDP Internet Connections)协议,支持流控、低延迟连接建立、网络路径迁移和增强安全性。
10. 移除 Java Applet API
JDK 26 还正式移除了 Java Applet API,该 API 在 JDK 17(2021 年)已标记为弃用。由于最新的 JDK 版本和现代浏览器均不再支持 Applet,这一 API 已毫无实际用途,因此从 JDK 26 开始被彻底移除。
除了这些主要 JEP 功能,JDK 26 还包含一些小型增强功能,例如混合公钥加密、在使用 jlink 工具交叉链接时更严格的版本检查、扩展 HTTP 客户端请求超时以覆盖响应体,以及虚拟线程在等待其他线程执行类初始化器时自动从承载线程解绑。这些改进虽然规模较小,但进一步完善了 Java 的整体功能和性能。
目前,JDK 26 可以从 Oracle 官网下载,更多特性细节可查阅:https://jdk.java.net/26/
来源:https://www.infoworld.com/article/4050993/jdk-26-the-new-features-in-java-26.html
