当前位置: 首页 > news >正文

JDK 26 正式发布:十一大新特性深度解读

欢迎关注公众号【拿客】,星标公众号获取最新技术内容,内容聚焦低延迟架构、AI智能体、高并发系统设计领域。


JDK 26 正式发布:十一大新特性深度解读

Oracle 已于 2026 年 3 月 17 日正式发布 JDK 26,这是Java平台继JDK 25之后的半年一次快速迭代的非LTS版本。从OpenJDK官网信息来看,本次发布按照预定计划准时交付,功能特性在发布前已完全冻结,目前进入Bug修复稳定阶段。

作为持续演进中的一个过渡版本,JDK 26虽然不是LTS,但在云原生适配、性能优化、安全演进三个方向都有重要收获。本文将为大家深度解读全部正式特性,重点关注性能优化、并发模型和协议支持方面的升级。

发布概览

JDK 26 从功能冻结到最终GA经历了数月的稳定期。作为非LTS版本,它主要聚焦于:

  • 预览实验性特性
  • 性能优化打磨
  • 生态清理与演进
  • 云原生场景适配
  • 安全能力升级

核心特性解读

1. JEP 516: AOT 缓存支持任意 GC

问题背景:AOT(Ahead-of-Time)缓存自JDK 24通过JEP 483引入以来,已显著改善了应用启动和预热性能(例如,启动速度提升可达40%左右1)。但此前AOT缓存只能与特定GC配合使用,无法在ZGC等低延迟收集器上生效。

新特性:JEP 516让AOT缓存能够与任意垃圾收集器协同工作。核心改进是将缓存对象以GC无关的逻辑索引格式存储,启动时通过后台线程流式加载到堆中,而非之前GC特定的内存映射方式。这意味着你可以在使用G1、ZGC、Shenandoah等现代垃圾收集器的同时,依然享受AOT带来的启动速度优势。这对于Serverless和微服务场景尤其重要,启动速度直接影响弹性扩缩容效率。

关键收益:

  • AOT缓存优化现在可在ZGC等所有GC上使用,兼顾低启动延迟与低延迟GC
  • 冷启动场景下,流式加载可隐藏磁盘IO延迟
  • 不影响应用峰值吞吐性能

注:JEP 编号(如 JEP 516)基于 JDK 26 公开讨论中的预计分配,最终编号以 OpenJDK 官方发布为准。

JVM启动

AOT缓存加载

选择GC

Serial GC

G1 GC

ZGC

Shenandoah

2. JEP 517: HTTP/3 标准化支持

HTTP/3在JDK 24通过JEP 473以孵化器模块的形式首次引入,经过两个版本的打磨,JDK 26通过JEP 517将其正式纳入标准API。HTTP/3基于QUIC协议,带来:

  • 握手延迟更低,TLS 1.3结合QUIC 0-RTT握手
  • 队头阻塞问题彻底解决
  • 多路复用性能更好
  • 移动网络下连接迁移更顺畅

开发者现在可以直接通过标准java.net.httpAPI使用HTTP/3,通过.version(HttpClient.Version.HTTP_3)即可启用。值得注意的是,HTTP/3不会成为默认协议,JDK团队考虑到HTTP/3尚未完全普及,默认仍使用HTTP/2,但会透明降级到HTTP/1.1。

// 启用HTTP/3(默认不会自动使用)varclient=HttpClient.newBuilder().version(HttpClient.Version.HTTP_3).build();

3. JEP 525: 结构化并发(第六次预览)

结构化并发自JDK 19首次预览以来,在JDK 26中进入了第六轮预览(JEP 525)。这是一种处理多线程编程的新方式,将不同线程中运行的相关任务组视为一个工作单元,能够:

  • 自动处理任务取消和超时传播
  • 确保线程资源不泄漏
  • 错误处理更清晰
  • 可观测性更好(线程dump显示清晰的父子关系树)

JDK 26主要变更(较小的API调整):

  • 新增Joiner.onTimeout()方法:超时过期时可返回默认结果
  • Joiner::allSuccessfulOrThrow()现在返回结果列表而非Stream
  • 静态工厂方法open()参数从Function改为UnaryOperator
// JDK 26 简化用法示例try(varscope=StructuredTaskScope.open()){varuser=scope.fork(()->findUser());varorder=scope.fork(()->fetchOrder());scope.join();// 使用 .get() 获取结果时需注意类型处理if(user.state()==Subtask.State.SUCCESS&&order.state()==Subtask.State.SUCCESS){returnnewResponse(user.get(),order.get());}// 任何子任务失败会自动取消其他任务}

对于低延迟系统来说,结构化并发可以减少意外的线程资源泄漏,让并发代码更健壮。

4. JEP 522: G1 GC 吞吐量优化

G1作为默认垃圾收集器,在JDK 26中获得了显著的吞吐量提升。核心改进是引入双卡表(Dual Card Table)机制——通过读写分离消除应用线程与优化器线程之间的同步竞争。

主要改进:

  • 双卡表设计:应用线程无锁更新第一张卡表,优化器线程同时处理第二张卡表,两者互不干扰
  • 写屏障开销降低:通过读写分离减少同步竞争2
  • 吞吐量提升:对高吞吐量场景(如批处理、数据处理)收益明显

这些优化对高吞吐量场景收益明显,同时对大堆应用也是好消息。

5. JEP 496: ML-DSA 后量子密码算法(正式版)

经过多个版本的迭代,JDK 26最终将ML-DSA(Module-Lattice-based Digital Signature Algorithm)后量子签名算法标准化为JEP 496。这是应对未来量子计算对RSA和ECC签名构成潜在威胁的重要一步。

核心要点:

  • ML-DSA是NIST标准化的后量子签名算法,基于格密码理论
  • 在SUN安全提供者中实现,使用AVX2指令集优化x86_64平台性能
  • 相比之前的实验性实现有显著性能提升
  • 现有JVM签名算法不会默认替换为ML-DSA,开发者可显式选用

对于关注安全合规和长期数据保护的系统,这是一个重要进展。后量子密码算法将在未来十年逐步取代传统RSA/ECC。

6. JEP 524: PEM 编码支持(第二次预览)

JDK 26通过JEP 524继续预览PEM(Privacy-Enhanced Mail)编码API,允许将加密密钥、证书和证书吊销列表(CRL)等密码学对象编码为PEM格式,以及从PEM格式解码。PEM是目前最广泛使用的密码学对象传输格式之一,此前Java开发者通常需要依赖第三方库(如Bouncy Castle)来处理PEM编码。

这一特性的标准化将简化密钥和证书管理流程,尤其在DevOps和云原生部署场景中,PEM格式的密钥管理是日常操作。配合ML-DSA新算法,PEM支持让后量子密钥证书管理更加便捷。

7. JEP 504: 移除 Applet API

Applet API的移除经历了漫长的过程:在JDK 9(2017年)通过JEP 289标记为废弃,在JDK 17(2021年)通过JEP 398标记为废弃待移除,最终在JDK 26通过JEP 504彻底移除。这标志着运行在浏览器中的Java小程序时代正式落幕。移除Applet API减少了JDK体积,清除了不再维护的过时代码。

8. JEP 530: 原始类型模式匹配(第四次预览)

模式匹配在JDK 26中通过JEP 530迎来重要增强——instanceof操作符和switch表达式/语句现在支持所有原始类型(int、long、double、float、char、byte、short、boolean)。

核心增强点:

  • instanceof现在可以直接检查原始类型并进行安全转换
  • switch支持long、float、double、boolean(此前只支持byte、short、char、int)
  • 模式匹配支持精确性检查,避免信息丢失
// instanceof原始类型模式匹配inti=1000;if(iinstanceofbyteb){// 仅当int值能安全转换为byte时才匹配System.out.println("安全转换为byte: "+b);}else{System.out.println("值太大,无法转换: "+i);}// switch支持所有原始类型longid=10_000_000_000L;switch(id){case1L->System.out.println("普通用户");case10_000_000_000L->System.out.println("VIP用户");default->System.out.println("其他");}

重要变更(源码不兼容):JEP 530还引入了更严格的Dominance检查,某些之前合法的switch代码现在会报编译错误。例如:

intx=...;switch(x){caseint_->{}// 无条件模式,覆盖所有情况casefloat_->{}// 编译错误:被前面的case dominate}

这是第四次预览,预计将在后续版本中转正。

9. JEP 500: 让 Final 真正意味着不可变

JEP 500是为未来Java版本中真正强制final字段不可变性做准备的过渡性JEP。从JDK 26开始,通过深度反射(如UnsafeMethodHandles)修改final字段的操作将收到警告而非立即拒绝。

关键变化:

  • 默认行为:警告但仍允许修改(--illegal-final-field-mutation=warn
  • 未来版本:将升级为抛出IllegalAccessException--illegal-final-field-mutation=deny
  • 开发者迁移:可使用--enable-final-field-mutation显式启用

需要关注的群体:

  • 序列化库(如Jackson、Gson):应迁移到sun.reflect.ReflectionFactoryAPI
  • 依赖注入/Mocking框架:应避免修改final字段,改用构造函数注入
  • 单元测试框架:如Mockito建议升级到兼容版本
# 识别哪些代码在修改final字段java-XX:StartFlightRecording:filename=recording.jfr... jfr print--eventsjdk.FinalFieldMutation recording.jfr

10. JEP 526: 惰性常量(第二次预览)

惰性常量(Lazy Constants)允许声明延迟初始化的常量字段,这些字段被JVM视为真正的常量,可以获得与final字段相同的性能优化(如常量折叠、内联),但在初始化时机上更加灵活——可以在首次使用时才初始化,而非类加载时。

这对于需要复杂初始化逻辑但又希望获得编译期常量优化收益的场景非常实用。

11. JEP 529: Vector API(第十一次孵化)

Vector API在JDK 26中进入第十一轮孵化(JEP 529),它提供了一种在Java中表达向量计算的方式,能够可靠地编译为CPU上的最优向量指令(如AVX、SSE、NEON等),实现优于等效标量计算的性能。

对于AI推理、科学计算、图像处理等数据密集型场景,Vector API的意义尤为重要——它让Java开发者无需编写JNI代码就能利用CPU的SIMD指令集加速计算。经过多轮孵化,API日趋稳定,值得关注。

架构价值分析

对于关注低延迟高并发架构的开发者,JDK 26有几个值得关注的点:

  1. AOT+任意GC:让AOT缓存优化可在ZGC等所有GC上使用,兼顾低启动延迟与低延迟GC
  2. HTTP/3:基于QUIC协议,对于API网关和微服务间通信,特别适合广域网多链接并发场景
  3. G1吞吐量优化:写屏障开销降低,对高吞吐场景收益明显
  4. ML-DSA后量子密码:Java平台正式迈入后量子密码时代,为长期数据保护提供抗量子计算攻击的签名算法
  5. 结构化并发:编写正确可靠的并发代码更容易,减少线程资源泄漏,降低运维风险
  6. Vector API:无需JNI即可利用CPU SIMD指令加速,对AI推理和科学计算场景意义重大

升级建议

场景升级建议
生产环境LTS继续使用JDK 21 LTS或升级到JDK 25 LTS
技术尝鲜可以在测试环境体验新特性
云原生/Serverless值得升级,AOT+任意GC和HTTP/3收益明显
安全合规/金融可关注ML-DSA后量子密码(JEP 496),提前布局量子安全
密码学应用开发可关注PEM编码支持(JEP 524),减少对第三方库依赖
AI/高性能计算可关注Vector API(JEP 529)的演进进展

回滚策略:如果升级后遇到问题,由于是非LTS版本,建议直接回退到你当前使用的稳定版本。

总结

JDK 26作为一个非LTS版本,延续了Java平台持续演进的节奏,虽然没有惊天动地的大特性,但很多细节打磨对特定场景收益显著。

核心亮点回顾:

特性类型对架构师的意义
JEP 516 AOT+任意GC正式特性云原生/Serverless必关注
JEP 517 HTTP/3正式特性微服务通信性能提升
JEP 496 ML-DSA正式特性后量子密码时代起点
JEP 522 G1优化正式特性吞吐量提升
JEP 500 Final不可变预警性变更关注序列化库兼容性
JEP 525 结构化并发第六次预览预览次数最多,有望转正

JEP 编号说明:本文中的 JEP 编号基于 JDK 26 开发期间的公开讨论,实际编号以 OpenJDK 官方发布页面的最终分配为准。

升级建议:

  • 生产环境:建议使用JDK 21 LTS或JDK 25 LTS(非LTS版本不适合生产)
  • 测试/个人项目:JDK 26值得尝鲜,重点关注HTTP/3和AOT+GC
  • 框架维护者:重点关注JEP 500的影响,提前做好兼容性测试

Java社区坚持半年一个版本的快速迭代已经持续多年,每个版本都在为云原生、低延迟、高并发场景持续优化。这种稳步演进的方式,让Java平台始终保持活力。

你对JDK 26哪个特性最感兴趣?欢迎在评论区留言讨论。


如果你觉得本文有帮助,欢迎点赞、在看、转发给更多开发者朋友


参考资料与数据来源说明:

本文编写时参考了以下来源:

  • OpenJDK 官方 JEP 页面 (https://openjdk.org/jeps/)
  • JDK 26 特性开发讨论邮件列表
  • Oracle 官方 JDK 发布说明

关于性能数据的说明:
本文中的性能测试数据(如启动提速、吞吐量提升百分比等)来源于 JDK 团队公开的基准测试报告或特性设计文档。由于网络限制无法逐一核实原始链接,建议读者在实际项目中自行验证,或参考 OpenJDK 官方发布的详细基准测试报告。

关于 JEP 编号的说明:
JDK 26 的正式 JEP 编号以 OpenJDK 官方发布页面 (https://openjdk.org/projects/jdk/26/) 最终公布为准。


话题标签:
#Java #JDK26 #Java新特性 #低延迟架构 #高并发 #性能优化 #云原生 #架构设计 #后端开发 #技术分享 #后量子密码


  1. 启动性能提升数据来源于 OpenJDK 官方 AOT 缓存特性文档,实际提升取决于应用特性和硬件配置。 ↩︎

  2. 具体性能数据(如写屏障指令数、吞吐量提升百分比)需参考 OpenJDK 官方发布的基准测试报告。 ↩︎

http://www.jsqmd.com/news/520042/

相关文章:

  • 2026年最新最全Java面试题汇总汇一览表!
  • GLM-OCR入门:3步完成CSDN星图GPU平台一键部署与测试
  • 苍穹外卖day02记录
  • 《动手学深度学习》-69BERT预训练实现
  • MiniMax M2.7 完成你的不可能,但缺不认识马嘉祺
  • java毕业设计基于springboot昆嵛山国家级自然保护区林业资源信息管理系统
  • SLAM数据集实战:如何利用TUM、KITTI、EuRoC的真实轨迹文件进行算法评估与优化
  • 二维静态表达到三维动态建模:仓储空间管理能力的结构性升级—— 基于镜像视界“像素即坐标”与轨迹建模的空间智能体系
  • ROS2实战:当CMU自主探索算法遇上Livox MID-360,我是如何搞定实车部署的?
  • Hunyuan-MT-7B-WEBUI问题解决:部署常见错误与一键修复方案
  • 解锁FreeSWITCH隐藏功能:用API实现智能电话会议自动化
  • Activiti审批流避坑指南:SpringBoot整合时${}和#{}的5个易错点
  • CoPaw模型效果深度解析:生成高质量技术文档与代码注释
  • nRF51 SDK超低功耗BLE开发核心架构与实战
  • nlp_structbert_sentence-similarity_chinese-large 服务监控与日志排查指南
  • 用Python重现经典:Theil-Sen与Mann-Kendall分析遥感NPP数据(附完整代码与结果解读)
  • 手写签名提取工具(图片)
  • Kook Zimage真实幻想Turbo从零开始:WebUI界面功能逐项解析
  • 量子测量实战:用Python模拟薛定谔的猫实验(附完整代码)
  • 嵌入式SPI-DAC通用驱动库设计与实践
  • Spring_couplet_generation 模型部署详解:Ubuntu系统环境配置全流程
  • PP-DocLayoutV3入门指南:快速部署镜像,一键分析文档标题正文表格
  • 从“灌水神刊”到“严审阵地”:MDPI与Frontiers系列期刊发文量锐减背后的质量转向
  • R3:重塑 .NET 响应式编程的事件流处理与性能优化实践
  • FireRedASR-AED-L模型跨平台部署:从x86服务器到ARM开发板的尝试
  • Leather Dress Collection惊艳案例:Leather Shirt Skirt通勤风+皮革自然褶皱光影渲染
  • 深入解析DSP系统时钟配置与优化策略
  • SAP押注“按AI用量收费”,但真正的问题不在定价,而在价值
  • Gemma-3-12b-it部署案例:智能制造工厂设备巡检图→异常检测→维修指引
  • 数字化转型的核心引擎——全星研发项目管理软件系统APQP软件系统功能推荐