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/CalendarCompletableFuture:完善异步编程模型
原生 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/2String 新增实用方法:
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 与 switchJavadoc 支持 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,转载请注明出处。
原文链接
欢迎访问