小易说IT 小易说IT

Java JDK 8 ~ 26 各版本核心功能特性总览

Java 自 JDK 8 起形成稳定的半年迭代节奏,其中 JDK 8 / 11 / 17 / 21 / 25 为长期支持(LTS)版本,是企业生产环境的主流选型;其余为特性版本,用于快速落地新能力预览与迭代。以下按版本顺序梳理核心特性:


JDK 8(2014,LTS)

Java 生态最经典的基准版本,奠定现代函数式编程范式。

  • 语言特性

    • Lambda 表达式 + 函数式接口,正式引入函数式编程能力

    • 接口支持默认方法、静态方法,解决接口演进兼容性问题

    • 方法引用 / 构造器引用,简化 Lambda 写法

    • 重复注解、类型注解扩展注解能力

  • 核心 API

    • Stream API:声明式集合流处理,原生支持串行 / 并行计算

    • Optional:空值安全容器,从编码层面降低空指针风险

    • 全新日期时间 API(java.time 包),替代设计缺陷的 Date/Calendar

    • CompletableFuture:完善异步编程模型

    • 原生 Base64 编解码支持

  • JVM 与性能

    • 永久代(PermGen)正式移除,替换为元空间(Metaspace)

    • HashMap 引入红黑树优化,哈希冲突严重时性能大幅提升

  • 其他

    • 内置 Nashorn JavaScript 引擎,支持 JVM 直接运行 JS 代码


JDK 9(2017)

模块化里程碑版本,Project Jigsaw 正式落地。

  • 语言特性

    • 接口支持私有方法

    • try-with-resources 支持直接复用已有变量,无需重新声明

    • 钻石操作符(<>)兼容匿名内部类

  • 核心 API

    • 集合工厂方法:List.of() / Set.of() / Map.of(),一行创建不可变集合

    • Flow API:响应式流标准接口,为异步流处理提供统一规范

    • Optional、Stream、InputStream 等工具类能力增强

  • JVM 与工具

    • Java 平台模块系统(JPMS)落地,实现代码模块化与强封装

    • G1 垃圾回收器成为默认 GC

    • jlink 工具:可裁剪生成定制化 JRE,大幅减小部署体积

    • 支持多版本兼容 JAR 包

  • 变更

    • Applet API 进入废弃流程,Java Web Start 逐步淘汰


JDK 10(2018)

语法简化与性能优化版本。

  • 语言特性

    • 局部变量类型推断(var 关键字),简化局部变量声明

  • 核心 API

    • Optional.orElseThrow() 成为首选无参抛异常方法

    • 集合新增 copyOf 方法,快速创建不可变副本

  • JVM 与性能

    • G1 实现并行 Full GC,显著降低 Full GC 停顿时间

    • 应用类数据共享(AppCDS)正式开源,提升应用启动速度

    • 实验性 Graal JIT 编译器,支持纯 Java 实现的 JIT 编译

  • 其他

    • 根证书集统一开源,抹平 OpenJDK 与 Oracle JDK 差异


JDK 11(2018,LTS)

企业级长期支持版本,Spring Boot 2.x 核心适配基线。

  • 语言特性

    • Lambda 表达式参数支持使用 var 声明

  • 核心 API

    • HttpClient 正式发布,替代老旧的 HttpURLConnection,原生支持 HTTP/2

    • String 新增实用方法:isBlank()lines()strip()repeat()

    • Files 新增 readString / writeString,简化文本文件读写

  • JVM 与性能

    • ZGC 低延迟垃圾回收器(实验性),目标停顿时间 < 10ms

    • Epsilon 无操作 GC,用于性能压测与短生命周期应用

  • 移除与废弃

    • 移除 Java EE、CORBA 相关模块

    • Nashorn 引擎标记为废弃

    • JavaFX 剥离为独立开源项目稀土掘金


JDK 12(2019)

语法预览与 GC 持续迭代。

  • 语言特性

    • Switch 表达式(第一预览):支持箭头语法,无需 break,可直接返回值

  • 核心 API

    • Collectors.teeing():支持同时对两个收集器结果做合并处理

    • String 新增 indent()transform() 方法

  • JVM 与性能

    • Shenandoah 低延迟 GC(实验性,RedHat 贡献)

    • G1 GC 支持可中断混合收集,优化停顿控制

    • 正式引入 JMH 微基准测试框架


JDK 13(2019)

多行字符串与 Switch 语法打磨。

  • 语言特性

    • Switch 表达式(第二预览):引入 yield 关键字用于分支返回值

    • 文本块(第一预览):原生支持多行字符串,告别转义与拼接

  • 核心 API

    • String 新增 formatted() 方法

    • Socket API 底层重构,提升性能与跨平台兼容性

  • JVM 与性能

    • ZGC 最大支持堆内存扩展至 16TB

    • 支持动态 CDS 归档,简化类数据共享使用


JDK 14(2020)

模式匹配与记录类首次亮相。

  • 语言特性

    • Switch 表达式正式发布

    • instanceof 模式匹配(第一预览):自动类型强转,简化类型判断代码

    • 记录类 Records(第一预览):自动生成构造器、getter、equals 等模板代码

  • JVM 与体验

    • ZGC 正式支持 macOS / Windows 平台

    • 正式移除 CMS 垃圾回收器

    • 空指针异常提示增强,精准定位空值变量

  • 工具

    • 应用打包工具 jpackage 进入孵化器,支持生成 exe /dmg 等安装包


JDK 15(2020)

文本块转正,密封类登场。

  • 语言特性

    • 文本块正式发布

    • 密封类 Sealed Classes(第一预览):限制类的继承范围,完善模式匹配体系

    • Records、instanceof 模式匹配进入第二预览

  • 核心 API

    • 隐藏类(Hidden Classes):支持运行时生成不可见的工具类

    • 对外内存访问 API(第二孵化器)

  • JVM 与性能

    • ZGC、Shenandoah 均转为正式特性

    • 默认禁用偏向锁,推进后续移除计划

  • 移除

    • 移除 Solaris 与 SPARC 平台支持

    • 废弃 RMI 激活机制


JDK 16(2021)

多项预览特性转正,强封装全面落地。

  • 语言特性

    • Records 记录类正式发布

    • instanceof 模式匹配正式发布

    • 密封类进入第二预览

  • 核心 API

    • Stream 新增 toList() 便捷方法

    • Vector API(第一孵化器):可移植的 SIMD 向量计算支持

    • 外部链接器 API(孵化器)

  • JVM 与性能

    • ZGC 实现并发线程栈处理,进一步压缩停顿时间

    • 弹性元空间,减少元空间内存浪费

  • 变更

    • 默认开启 JDK 内部 API 强封装,禁止非法反射访问

    • jpackage 打包工具正式发布

    • 原生支持 Alpine Linux 与 musl libc


JDK 17(2021,LTS)

当前企业主流升级目标,Spring Boot 3.x 基准版本。

  • 语言特性

    • 密封类 Sealed Classes正式发布

    • Switch 模式匹配(第一预览):支持类型模式、守卫模式

    • 伪随机数生成器(PRNG)增强,新增可插拔接口

  • JVM 与性能

    • 分代 ZGC 进入实验阶段

    • Shenandoah GC 持续优化停顿表现

    • 移除实验性 AOT 编译功能

  • 移除与废弃

    • 正式移除 RMI 激活机制

    • Applet API 标记为待移除

    • 内部 API 强封装成为默认且不可关闭稀土掘金


JDK 18(2022)

基础体验全面优化。

  • 核心变更

    • 默认字符集统一为 UTF-8,彻底解决跨平台乱码问题

    • 内置简单 Web 服务器 jwebserver,用于静态文件快速托管

  • API 增强

    • JavaDoc 支持嵌入代码片段,附带语法高亮

    • 互联网地址解析 SPI,支持自定义域名解析逻辑

  • JVM

    • finalize() 方法进一步标记废弃,推进移除计划

    • 反射调用性能优化


JDK 19(2022)

Project Loom 并发革命开启。

  • 语言特性

    • 记录模式 Record Patterns(第一预览):支持记录类的解构匹配

    • Switch 模式匹配(第二预览)

  • 并发特性

    • 虚拟线程 Virtual Threads(第一预览,Project Loom 核心):轻量级线程,单应用可支撑百万级并发

    • 结构化并发 Structured Concurrency(第一孵化器):简化多任务并行编程模型

  • API

    • 外部函数与内存 API(第一预览,Project Panama 核心):安全高效替代 JNI,调用原生代码

    • Vector API 第四孵化器

  • 平台

    • 正式支持 Linux RISC-V 架构


JDK 20(2023)

并发特性持续打磨迭代。

  • 语言特性

    • 记录模式(第二预览)

    • Switch 模式匹配(第三预览)

  • 并发特性

    • 虚拟线程(第二预览):性能与稳定性全面优化

    • 作用域值 Scoped Values(第一孵化器):替代 ThreadLocal,适配虚拟线程的上下文传递

    • 结构化并发(第二孵化器)

  • API

    • 外部函数与内存 API(第二预览)


JDK 21(2023,LTS)

并发编程划时代版本,虚拟线程正式落地。

  • 语言特性

    • 虚拟线程 Virtual Threads正式发布:大幅降低高并发编程门槛,海量线程近乎零额外开销

    • 记录模式正式发布

    • Switch 模式匹配正式发布:支持类型模式、null 安全处理、守卫模式

  • 并发与 API

    • 有序集合 Sequenced Collections:新增 SequencedCollection / SequencedMap 接口,统一集合首尾操作

    • 结构化并发(预览版)

    • 作用域值 Scoped Values(预览版)

  • JVM 与性能

    • 分代 ZGC正式发布,兼顾低停顿与高吞吐量

    • 分代 Shenandoah 进入实验阶段


JDK 22(2024)

语法与原生交互能力全面升级。

  • 语言特性

    • 未命名变量与模式正式发布:用 _ 表示未使用变量,简化代码

    • 灵活构造体(预览):允许在 super() / this() 前执行语句

  • 核心 API

    • Stream Gatherers(第一预览):扩展 Stream API,支持滑动窗口、折叠等自定义操作

    • 外部函数与内存 API正式发布,JNI 替代方案落地

    • 支持直接运行多文件源码程序,无需手动编译

  • JVM 与性能

    • G1 GC 实现 Region Pinning,减少 GC 停顿

    • 类文件 API(预览):标准化字节码操作,可替代 ASM 等第三方库


JDK 23(2024)

Project Leyden 启动预热。

  • 语言特性

    • 基元类型模式匹配(第一预览):int / long 等基本类型可直接用于 instanceof 与 switch

    • Javadoc 支持 Markdown 语法(预览)

    • 模块导入声明(预览):import module 直接导入整个模块

  • JVM 与性能

    • 分代 ZGC 成为默认运行模式

    • 紧凑对象头进入实验阶段,减小对象内存占用

    • Project Leyden 正式启动,推进 AOT 编译与启动速度优化

  • 变更

    • 正式撤回字符串模板特性,重新设计方案


JDK 24(2025)

安全与 AI 场景适配增强。

  • 语言特性

    • 基元类型模式匹配(第二预览)

    • 模块导入声明(第二预览)

  • 安全特性

    • 抗量子密码算法(预览):支持 ML-KEM 密钥封装、ML-DSA 数字签名

  • API 与性能

    • Class-File API 正式发布

    • Stream Gatherers 第三预览

    • 虚拟线程优化:减少线程 Pinning,提升并发性能

    • AOT 类加载落地,Project Leyden 取得阶段性进展

    • 正式移除非分代 ZGC 模式OpenJDK


JDK 25(2025,LTS)

最新长期支持版本,并发与启动速度全面升级。

  • 语言特性

    • 紧凑源文件与实例主方法正式发布:大幅简化入门程序写法

    • 灵活构造体正式发布

    • 基元类型模式匹配(第三预览)

  • 并发特性

    • Scoped Values 作用域值正式发布:虚拟线程场景下的安全上下文传递方案

    • 结构化并发持续迭代优化

  • JVM 与性能

    • 分代 Shenandoah GC正式发布

    • 紧凑对象头正式落地,降低对象内存开销

    • AOT 编译自适应调优,启动速度显著提升(Project Leyden 成果)

    • JFR 飞行记录器新增多项采样与分析能力

  • 安全

    • 后量子密码 API 持续完善


JDK 26(2026,当前最新特性版)

Project Valhalla 开始落地,性能与表达力进一步提升。

  • 语言特性

    • 基元类型模式匹配(第四预览):完善基本类型在模式匹配中的全场景支持

    • 惰性常量 Lazy Constants(第二预览):延迟初始化的常量,兼顾性能与初始化灵活性

    • 值类 Value Classes(预览,Project Valhalla 核心):扁平化内存布局,消除装箱拆箱开销

  • JVM 与性能

    • G1 GC 减少同步开销,吞吐量显著提升

    • Project Leyden:支持任意 GC 的提前对象缓存,进一步加快应用启动

  • 移除与变更

    • Applet API 正式移除

    • 持续优化 AI 推理场景的运行性能


本文原创作者:易君召,详见:https://www.yijunzhao.cc/about,转载请注明出处。

原文链接 https://www.yijunzhao.cc/archives/java-jdk-8-to-26-version-features-overview

欢迎访问 https://www.yijunzhao.cc/

https://www.yijunzhao.cc/