JDK 版本历史全览:从 JDK 6 到 Java 26
Java 自 1996 年发布以来,经历了多次重大版本更新。本文整理了从 JDK 6 到最新版本 Java 26 的完整版本历史,包括发布时间、LTS 状态、主要特性及商用许可信息。
JDK 版本历史总览表
| 版本 | 代码名称 | 发布时间 | LTS | 主要特性更新 | 商用许可状态 | Premier Support | Extended Support | 关键说明 |
|---|---|---|---|---|---|---|---|---|
| JDK 6 | Mustang | 2006-12-11 | 否 | Scripting API (JSR 223)、JDBC 4.0、Compiler API、JAX-WS 2.0、JAXB 2.0、SwingWorker、Nimbus L&F | BCL 许可,公开更新 2013 年结束 | 2013-02 | - | 最后一个 Sun Microsystems 主导版本,引入 G1 GC (实验性) |
| JDK 7 | Dolphin | 2011-07-28 | 否 | try-with-resources、菱形运算符 <>、switch 支持字符串、Fork/Join 框架、invokedynamic、NIO.2、TWR 增强 | BCL/OTN 许可,公开更新 2015 年结束 | 2015-04 | - | 首个 Oracle 主导版本,支持动态语言的关键基础 |
| JDK 8 | - | 2014-03-18 | 是 | Lambda 表达式、Stream API、Optional、java.time (新日期时间 API)、默认方法、方法引用、重复注解、Nashorn JavaScript 引擎 | OTN 许可,个人/开发免费,商用需订阅 | 2022-03 | 2030-12 | 最广泛使用的 LTS 版本,Lambda 是 Java 历史最大语言变革 |
| JDK 9 | - | 2017-09-21 | 否 | 模块化系统 (JPMS/jigsaw)、JShell (REPL)、私有接口方法、改进的 try-with-resources、不可变集合工厂方法、多版本 JAR | OTN 许可 | 2018-03 | - | 首个 6 个月发布周期的版本,模块化是重大架构变革 |
| JDK 10 | - | 2018-03-20 | 否 | var 局部变量类型推断、并行 Full GC (G1)、应用类数据共享 (AppCDS)、线程局部握手、Heap Allocation on Alternative Memory Devices | OTN 许可 | 2018-09 | - | 首个短期支持版本,类型推断首次引入 Java |
| JDK 11 | - | 2018-09-25 | 是 | HTTP Client API (标准)、var 用于 Lambda 参数、Flight Recorder 开源、ZGC (实验性)、Epsilon GC、嵌套访问控制、单文件程序执行 | OTN 许可,商用需订阅 | 2023-09 | 2032-01 | 首个移除 Java EE 和 CORBA 模块的版本,Nashorn 被弃用 |
| JDK 12 | - | 2019-03-19 | 否 | Switch 表达式 (预览)、JVM 常量 API、微基准测试套件、Shenandoah GC (实验性)、默认 CDS 归档 | OTN 许可 | 2019-09 | - | Switch 表达式现代化开始 |
| JDK 13 | - | 2019-09-17 | 否 | 文本块 (预览)、Switch 表达式增强 (yield)、动态 CDS 归档、Socket API 重构、ZGC 支持归还内存 | OTN 许可 | 2020-03 | - | 文本块让多行字符串更易读 |
| JDK 14 | - | 2020-03-17 | 否 | Records (预览)、Pattern Matching for instanceof (预览)、打包工具 (jpackage)、JFR 事件流、NUMA 感知内存分配 | OTN 许可 | 2020-09 | - | Records 开启 Java 数据类时代,switch 表达式正式版 |
| JDK 15 | - | 2020-09-15 | 否 | 文本块正式版、Records 二次预览、密封类 (预览)、隐藏类、ZGC 正式版、Eden 区内存对齐 | OTN 许可 | 2021-03 | - | Nashorn JavaScript 引擎被移除 |
| JDK 16 | - | 2021-03-16 | 否 | Records 正式版、密封类二次预览、Pattern Matching for instanceof 正式版、Vector API (孵化)、Foreign Linker API (孵化)、Records 序列化支持 | OTN 许可 | 2021-09 | - | Records 成为正式特性,强封装 JDK 内部 API |
| JDK 17 | - | 2021-09-14 | 是 | 密封类正式版、Pattern Matching for instanceof 正式版、新的 macOS渲染管道 (Metal)、随机数生成器增强、Foreign Function & Memory API (孵化) | OTN 许可,个人/开发免费 | 2026-09 | 2029-09 | 最后一个免费 OTN LTS 版本,Applet API 弃用 |
| JDK 18 | - | 2022-03-22 | 否 | 默认 UTF-8、Simple Web Server、代码片段 API (JEP 413)、WebAssembly 支持 (预览)、Foreign Function & Memory API 二次孵化 | OTN 许可 | 2022-09 | - | 终结了 25 年的默认编码问题 |
| JDK 19 | - | 2022-09-20 | 否 | 虚拟线程 (预览,Project Loom)、结构化并发 (孵化)、作用域值 (孵化)、Vector API 四次孵化、Foreign Function & Memory API 正式版 | OTN 许可 | 2023-03 | - | 虚拟线程是并发编程革命性特性 |
| JDK 20 | - | 2023-03-21 | 否 | 虚拟线程二次预览、作用域值二次孵化、记录模式 (预览)、switch 模式匹配 (预览)、结构化并发二次孵化 | OTN 许可 | 2023-09 | - | 模式匹配持续演进 |
| JDK 21 | - | 2023-09-19 | 是 | 虚拟线程正式版、分代 ZGC、记录模式正式版、switch 模式匹配正式版、字符串模板 (预览)、序列化集合、分代 Shenandoah | NFTC 免费许可 (All Users) | 2028-09 | 2031-09 | 首个 NFTC 免费 LTS,虚拟线程正式发布,并发编程新纪元 |
| JDK 22 | - | 2024-03-19 | 否 | 未命名变量和模式 (_)、隐式声明类、外部函数和内存 API 正式版、Stream Gatherers、未命名类和实例主方法 | NFTC 免费许可 | 2024-09 | - | 让 Java 初学者更易上手 |
| JDK 23 | - | 2024-09-17 | 否 | 原始类型模式匹配 (预览)、模块导入声明、灵活构造器体、Markdown 文档注释、隐式声明类增强、Primitive Types in Patterns | NFTC 免费许可 | 2025-03 | - | 文档注释支持 Markdown |
| JDK 24 | - | 2025-03-18 | 否 | 分代 Shenandoah 正式版、值类型 (预览,Project Valhalla)、作用域值正式版、灵活构造器体增强、Compact Object Header | NFTC 免费许可 | 2025-09 | - | 值类型重大突破 |
| JDK 25 | - | 2025-09-16 | 是 | 待定 (预计包含值类型增强、模式匹配改进) | NFTC 免费许可 (All Users) | 2030-09 | 2033-09 | 最新 LTS,2026年9月后更新转 OTN 许可 |
| JDK 26 | - | 2026-03-17 | 否 | 待定 | NFTC 免费许可 | 2026-09 | - | 最新版本,非 LTS |
早期版本回顾 (JDK 1.0 - JDK 5)
| 版本 | 代码名称 | 发布时间 | 主要特性 | 历史意义 |
|---|---|---|---|---|
| JDK 1.0 | Oak | 1996-01-23 | 核心语言特性、AWT、Applet、I/O、网络库 | Java 语言诞生 |
| JDK 1.1 | - | 1997-02-19 | 内部类、JavaBeans、JDBC、RMI、反射、JIT (Windows)、国际化 | 企业级特性基础 |
| J2SE 1.2 | Playground | 1998-12-08 | Swing、Collections、strictfp、JIT 编译器、Java Plug-in、Java IDL (CORBA) | Java 2 品牌确立,平台规模扩大 3 倍 |
| J2SE 1.3 | Kestrel | 2000-05-08 | HotSpot JVM、JNDI、JPDA、JavaSound、动态代理类 | HotSpot 成为性能标杆 |
| J2SE 1.4 | Merlin | 2002-02-06 | assert 关键字、正则表达式、NIO、Logging API、XML 解析器、JAXP、JAAS、Java Web Start | 首个 JCP 管理版本,现代 Java 基础 |
| J2SE 5.0 | Tiger | 2004-09-30 | 泛型、注解、自动装箱/拆箱、枚举、可变参数、增强 for 循环、静态导入、java.util.concurrent | 语言变革最大版本,现代 Java 语法确立 |
关键概念详解
LTS (Long-Term Support) 长期支持版本
Oracle 每 2 年发布一个 LTS 版本,提供长期支持:
| LTS 版本 | 发布日期 | Premier Support 截止 | Extended Support 截止 | Sustaining Support |
|---|---|---|---|---|
| JDK 8 | 2014-03 | 2022-03 | 2030-12 | 无限期 |
| JDK 11 | 2018-09 | 2023-09 | 2032-01 | 无限期 |
| JDK 17 | 2021-09 | 2026-09 | 2029-09 | 无限期 |
| JDK 21 | 2023-09 | 2028-09 | 2031-09 | 无限期 |
| JDK 25 | 2025-09 | 2030-09 | 2033-09 | 无限期 |
| JDK 29 (计划) | 2027-09 | 2032-09 | 2035-09 | 无限期 |
支持级别说明:
- Premier Support: 完整支持,包括更新、安全补丁、Bug 修复
- Extended Support: 扩展支持,需额外付费
- Sustaining Support: 仅限已有补丁的重发布,无新修复
商用许可状态详解
| 许可类型 | 全称 | 适用版本 | 个人/开发 | 商用 |
|---|---|---|---|---|
| BCL | Binary Code License | JDK 6 及之前 | 免费 | 免费 |
| OTN | Oracle Technology Network License | JDK 7-17 | 免费 | 需订阅 |
| NFTC | No-Fee Terms and Conditions | JDK 21+ (LTS) | 免费 | 免费 |
重要时间点:
- 2019-04: JDK 8 商用更新开始收费
- 2021-09: JDK 17 发布,仍为 OTN 许可
- 2023-09: JDK 21 首个 NFTC 免费 LTS
- 2026-09: JDK 25 更新将转为 OTN 许可
OpenJDK 替代选择
Oracle JDK 并非唯一选择,OpenJDK 构建版本提供免费商用支持:
| 发行版 | 提供商 | 特点 |
|---|---|---|
| Eclipse Temurin | Eclipse Adoptium | 社区驱动,广泛使用 |
| Amazon Corretto | AWS | AWS 优化,免费长期支持 |
| Azul Zulu | Azul Systems | 企业级支持,多种平台 |
| Microsoft Build of OpenJDK | Microsoft | Azure 优化 |
| Alibaba DragonWell | Alibaba | 阿里优化,国内友好 |
| 华为毕昇 JDK | Huawei | 鲲鹏优化 |
| 腾讯 Kona JDK | Tencent | 云环境优化 |
重要特性演进时间线
语言特性
| 特性 | 引入版本 | 正式版 | 说明 |
|---|---|---|---|
| 泛型 | JDK 5 | JDK 5 | 类型安全的集合 |
| 注解 | JDK 5 | JDK 5 | 元数据标记 |
| 枚举 | JDK 5 | JDK 5 | 类型安全的常量 |
| Lambda 表达式 | JDK 8 | JDK 8 | 函数式编程 |
| 模块化系统 | JDK 9 | JDK 9 | JPMS/Jigsaw |
| var 类型推断 | JDK 10 | JDK 10 | 局部变量类型推断 |
| Records | JDK 14 (预览) | JDK 16 | 简洁数据类 |
| 密封类 | JDK 15 (预览) | JDK 17 | 限制继承 |
| 文本块 | JDK 13 (预览) | JDK 15 | 多行字符串 |
| Switch 表达式 | JDK 12 (预览) | JDK 14 | 表达式形式 switch |
| 模式匹配 | JDK 14 (预览) | JDK 21 | 类型模式匹配 |
| 虚拟线程 | JDK 19 (预览) | JDK 21 | 轻量级线程 |
| 字符串模板 | JDK 21 (预览) | - | 字符串插值 |
| 值类型 | JDK 24 (预览) | - | Project Valhalla |
JVM 垃圾收集器演进
| GC | 引入版本 | 正式版 | 特点 |
|---|---|---|---|
| Serial GC | JDK 1.3 | JDK 1.3 | 单线程,适合客户端 |
| Parallel GC | JDK 4 | JDK 4 | 吞吐量优先 |
| CMS | JDK 5 | JDK 5 | 低延迟,JDK 9 弃用,JDK 14 移除 |
| G1 GC | JDK 6u14 (实验) | JDK 7u4 | 分区收集,平衡延迟与吞吐 |
| Shenandoah GC | JDK 12 (实验) | JDK 15 | 低延迟,<10ms 停顿 |
| ZGC | JDK 11 (实验) | JDK 15 | 低延迟,<10ms 停顿,支持 TB 级堆 |
| 分代 ZGC | JDK 21 | JDK 21 | 更好的分代收集效率 |
| 分代 Shenandoah | JDK 24 | JDK 24 | 分代 Shenandoah |
版本选择建议
按使用场景推荐
| 场景 | 推荐版本 | 理由 |
|---|---|---|
| 企业生产环境 (保守) | JDK 8 / JDK 11 | 稳定成熟,广泛兼容 |
| 企业生产环境 (现代化) | JDK 17 / JDK 21 | LTS + 现代特性 |
| 新项目启动 | JDK 21 | 免费 LTS,虚拟线程 |
| 微服务/云原生 | JDK 21 | 虚拟线程 + 低启动时间 |
| 大数据/机器学习 | JDK 17 / JDK 21 | 性能优化 + Foreign Memory API |
| Android 开发 | JDK 11 / JDK 17 | Android Gradle 兼容性 |
| 遗留系统维护 | JDK 8 | 最大兼容性 |
| 学习/实验新特性 | JDK 26 (最新) | 最新语言特性 |
升级路径建议
JDK 8 → JDK 11 → JDK 17 → JDK 21 → JDK 25
↓ ↓ ↓ ↓
保守 保守 稳健 推荐
参考资料
- Oracle Java SE Support Roadmap
- OpenJDK 官方网站
- Java Version History (Wikipedia)
- JEP 列表
- Eclipse Adoptium (Temurin)
本文最后更新于 2026年4月13日
附录:版本发布节奏
自 2017 年 9 月起,Java 采用每 6 个月一个新版本的发布节奏:
年份 3月 9月
─────────────────────────
2017 JDK 9
2018 JDK 10 JDK 11 (LTS)
2019 JDK 12 JDK 13
2020 JDK 14 JDK 15
2021 JDK 16 JDK 17 (LTS)
2022 JDK 18 JDK 19
2023 JDK 20 JDK 21 (LTS)
2024 JDK 22 JDK 23
2025 JDK 24 JDK 25 (LTS)
2026 JDK 26 JDK 27
2027 JDK 28 JDK 29 (LTS, 计划)
规律:
- 3 月: 非 LTS 特性版本
- 9 月: LTS 年份发布 LTS 版本(每 2 年)
- LTS 版本:8 → 11 → 17 → 21 → 25 → 29...