Java 作为一种广泛使用的编程语言,从 1995 年首次发布以来经历了多次重大版本更新。本文档详细介绍了 Java 各主要版本的演进历程、关键特性和技术创新,帮助开发者了解 Java 的发展脉络和各版本的主要区别。
| 版本 | 发布时间 | 代号 | 主要贡献者 |
|---|
| JDK 1.0 | 1996年1月23日 | Oak | Sun Microsystems |
| JDK 1.1 | 1997年2月19日 | - | Sun Microsystems |
| J2SE 1.2 | 1998年12月8日 | Playground | Sun Microsystems |
| J2SE 1.3 | 2000年5月8日 | Kestrel | Sun Microsystems |
| J2SE 1.4 | 2002年2月6日 | Merlin | Sun Microsystems |
| J2SE 5.0 (1.5) | 2004年9月30日 | Tiger | Sun Microsystems |
| Java SE 6 | 2006年12月11日 | Mustang | Sun Microsystems |
| Java SE 7 | 2011年7月28日 | Dolphin | Oracle (收购Sun后) |
| Java SE 8 | 2014年3月18日 | Spider | Oracle |
| Java SE 9 | 2017年9月21日 | Modularity | Oracle |
| Java SE 10 | 2018年3月20日 | - | Oracle |
| Java SE 11 | 2018年9月25日 | - | Oracle |
| Java SE 12 | 2019年3月19日 | - | Oracle |
| Java SE 13 | 2019年9月17日 | - | Oracle |
| Java SE 14 | 2020年3月17日 | - | Oracle |
| Java SE 15 | 2020年9月15日 | - | Oracle |
| Java SE 16 | 2021年3月16日 | - | Oracle |
| Java SE 17 | 2021年9月14日 | - | Oracle |
| Java SE 18 | 2022年3月22日 | - | Oracle |
| Java SE 19 | 2022年9月20日 | - | Oracle |
| Java SE 20 | 2023年3月21日 | - | Oracle |
| Java SE 21 | 2023年9月19日 | - | Oracle |
| Java SE 22 | 2024年3月19日 | - | Oracle |
| Java SE 23 | 2024年9月17日 | - | Oracle |
| Java SE 24 | 2025年3月18日 | - | Oracle |
| Java SE 25 | 2025年9月16日 | - | Oracle |
| 版本 | 发布时间 | 核心特性 | 基础库 | 运行时 |
|---|
| JDK 1.0 | 1996年 | 类、接口、异常处理、线程、包机制 | AWT 图形库、I/O 类、集合(Vector、Hashtable) | JVM、JRE |
| JDK 1.1 | 1997年 | 内部类(Inner Classes) | JDBC、RMI、Java Beans | - |
| J2SE 1.2 | 1998年 | - | 集合框架、Swing 图形库、Java Plug-in、JFC、JavaSound | JIT 编译器 |
| J2SE 1.3 | 2000年 | - | JNDI、JavaSound 完善、数学库增强 | HotSpot JVM |
| J2SE 1.4 | 2002年 | 断言(Assertions) | 正则表达式、NIO、日志 API、XML 解析(JAXP 1.2)、Java Web Start | 链式异常 |
| 版本 | 发布时间 | 代号 | 主要特性 | 类型 |
|---|
| J2SE 5.0 (1.5) | 2004年9月30日 | Tiger | 泛型、枚举类型、注解、自动装箱/拆箱、可变参数、增强型for循环、静态导入、并发API增强、JDBC 3.0 | 重大语言增强 |
| Java SE 6 | 2006年12月11日 | Mustang | 脚本引擎支持、JDBC 4.0、JAXB 2.0、Web服务支持改进、Java Compiler API、可插拔注解处理API、Desktop API、增强的安全性 | 功能增强 |
| Java SE 7 | 2011年7月28日 | Dolphin | 字符串在switch语句中、二进制字面量、数字字面量下划线、try-with-resources语句、多重捕获异常、泛型实例创建的类型推断、NIO.2、Fork/Join框架 | 语法增强 |
| Java SE 8 | 2014年3月18日 | Spider | Lambda表达式、函数式接口、流式API、默认方法和静态接口方法、方法引用、新的日期时间API、类型注解、Optional类、Nashorn JavaScript引擎、CompletableFuture、并行数组操作 | 革命性更新 |
| Java SE 9 | 2017年9月21日 | Modularity | Project Jigsaw(Java平台模块化系统)、模块系统、JShell、HTTP/2客户端、Process API增强、私有接口方法、集合工厂方法、Stream API增强、改进的Javadoc | 模块化系统 |
| Java SE 10 | 2018年3月20日 | - | 局部变量类型推断(var关键字)、GC改进、线程局部握手、备用内存设备支持 | 功能增强 |
| Java SE 11 | 2018年9月25日 | - | HTTP客户端标准化、String API增强、文件API增强、集合API增强、ZGC垃圾收集器、Epsilon垃圾收集器、移除Java EE和CORBA模块 | LTS版本 |
| Java SE 12 | 2019年3月19日 | - | Switch表达式预览、JVM常量API、微基准测试套件、Shenandoah垃圾收集器 | 功能增强 |
| Java SE 13 | 2019年9月17日 | - | 文本块预览、Switch表达式标准、动态CDS存档 | 功能增强 |
| Java SE 14 | 2020年3月17日 | - | 记录类型预览、模式匹配的instanceof预览、文本块2.0、ZGC并发线程堆栈处理 | 功能增强 |
| Java SE 15 | 2020年9月15日 | - | 记录类型标准、封闭类预览、模式匹配的instanceof标准、隐藏类 | 功能增强 |
| Java SE 16 | 2021年3月16日 | - | 模式匹配的instanceof正式版、记录类型正式版、封闭类第二预览、ZGC默认GC、外部内存访问API、向量API孵化 | 功能增强 |
| Java SE 17 | 2021年9月14日 | - | 封闭类正式版、模式匹配的instanceof正式版、记录类型正式版、删除实验性AOT和JIT编译器、增强的伪随机数生成器、弃用安全管理器 | LTS版本 |
| Java SE 18 | 2022年3月22日 | - | 默认UTF-8字符集、简单Web服务器、向量API第三次孵化、代码片段 | 功能增强 |
| Java SE 19 | 2022年9月20日 | - | 虚拟线程预览、结构化并发预览、模式匹配的switch预览、外部函数和内存API预览 | 功能增强 |
| Java SE 20 | 2023年3月21日 | - | 虚拟线程第二预览、结构化并发第二预览、模式匹配的switch第二预览、记录模式预览 | 功能增强 |
| Java SE 21 | 2023年9月19日 | - | 虚拟线程正式版、模式匹配的switch正式版、记录模式预览、未命名变量和模式、作用域值预览、外部函数和内存API正式版 | LTS版本 |
| Java SE 22 | 2024年3月19日 | - | 模式匹配的switch扩展、字符串模板预览、隐式声明的类和实例主方法预览、分代ZGC、作用域值第二预览 | 功能增强 |
| Java SE 23 | 2024年9月17日 | - | 模式匹配的instanceof增强、字符串模板第二预览、作用域值正式版、结构化并发第二预览、向量API第五孵化、未命名模式和变量 | 功能增强 |
| Java SE 24 | 2025年3月18日 | - | 作用域值增强、结构化并发第三预览、向量API第六孵化、类文件API第二预览、原始类型特化预览 | 功能增强 |
| Java SE 25 | 2025年9月16日 | - | 结构化并发正式版、向量API正式版、原始类型特化第二预览、JEP 503移除32位x86端口、JEP 506作用域值稳定 | LTS版本 |
| 周期类型 | 时间范围 | 发布频率 | 特点 | 代表版本 |
|---|
| 早期周期 | 1996-2006 | 1-2年 | 发布周期较长,功能更新幅度大 | JDK 1.0-J2SE 6 |
| 过渡周期 | 2007-2017 | 2-3年 | 发布周期逐渐稳定,功能更新中等 | Java SE 7-9 |
| 新周期 | 2018至今 | 6个月 | 每年3月和9月发布新版本,功能更新频繁 | Java SE 10-22 |
| 长期支持版本(Long-Term Support,LTS) | 2018至今 | 2年 | 每两年9月发布一个LTS版本,提供长期支持 | Java SE 11, 17, 21, 25 |
| 版本 | 启动时间 | 内存占用 | 吞吐量 | 延迟 | GC改进 | 适用场景 |
|---|
| Java 8 | 较慢 | 较高 | 中等 | 中等 | G1作为默认GC | 传统企业应用 |
| Java 11 | 中等 | 中等 | 较高 | 较低 | Epsilon GC, ZGC实验性 | 微服务、云原生 |
| Java 17 | 较快 | 较低 | 高 | 低 | ZGC生产就绪 | 高性能应用 |
| Java 21 | 最快 | 最低 | 最高 | 最低 | 分代ZGC, 虚拟线程 | 高并发、低延迟系统 |
| Java 25 | 最快 | 最低 | 最高 | 最低 | 分代ZGC, 向量API正式版, 结构化并发正式版 | 高并发、AI应用、低延迟系统 |
| 改进领域 | Java 8 | Java 11 | Java 17 | Java 21 | Java 25 |
|---|
| 启动性能 | 基准 | +15% | +25% | +40% | +50% |
| 内存效率 | 基准 | +10% | +20% | +35% | +45% |
| 吞吐量 | 基准 | +12% | +22% | +38% | +50% |
| 延迟优化 | 基准 | -18% | -30% | -45% | -55% |
- JDK 1.3:引入 HotSpot JVM,性能显著提升
- JDK 8:优化 JIT 编译,G1 垃圾收集器成为默认选项
- JDK 11:ZGC 垃圾收集器(延迟小于 10ms)
- JDK 14+:Shenandoah 垃圾收集器(低延迟)
- JDK 21+:虚拟线程显著提高并发性能
| 应用场景 | 推荐版本 | 理由 | 注意事项 |
|---|
| 新企业级应用 | Java 21/25 | LTS版本,长期支持,性能优秀 | 需要评估第三方库兼容性 |
| 现有Java 8应用 | Java 11/17/21 | 平稳升级路径,性能提升 | 需要充分测试,注意模块化 |
| 微服务/云原生 | Java 21/25 | 容器优化,低延迟,高吞吐 | 评估虚拟线程适用性 |
| 大型单体应用 | Java 17/21 | 稳定性好,性能平衡 | 注意GC选择和调优 |
| 高性能计算 | Java 25 | 最新优化,虚拟线程,向量API,分代ZGC | 需要评估新特性稳定性 |
| AI/ML应用 | Java 25 | 向量API正式版,原生AI支持 | 需要评估AI库兼容性 |
| 学习/教学 | Java 21 | LTS版本,特性丰富稳定 | 避免使用过于实验性特性 |
| 旧系统维护 | Java 8/11 | 兼容性好,生态成熟 | 考虑安全更新和长期支持 |
| 当前版本 | 推荐升级路径 | 升级难度 | 关键检查点 |
|---|
| Java 8 | Java 11 → Java 17 → Java 21 | 中等 | 模块化兼容性,第三方库支持 |
| Java 11 | Java 17 → Java 21 → Java 25 | 低 | 新特性采用,GC配置优化 |
| Java 17 | Java 21 → Java 25 | 低 | 虚拟线程评估,性能测试 |
| Java 21 | Java 25 | 低 | 向量API评估,AI特性测试 |
| Java 9/10 | Java 11 → Java 17 → Java 21 | 高 | 模块系统重构,API变更 |
| Java 12-16 | Java 17 → Java 21 | 中等 | 预览特性标准化,API调整 |
| Java 18-20 | Java 21 → Java 25 | 低 | 虚拟线程正式版评估 |
| Java 22-24 | Java 25 | 低 | LTS版本特性评估 |
| 发展方向 | 预计时间 | 主要内容 | 影响 |
|---|
| 语言特性增强 | 持续进行 | 模式匹配、记录类型、值对象、原始类型特化 | 提高开发效率,减少样板代码 |
| 并发模型演进 | 持续进行 | 虚拟线程、结构化并发 | 简化并发编程,提高系统吞吐量 |
| 内存管理优化 | 持续进行 | 分代ZGC、外部内存API | 降低延迟,提高内存使用效率 |
| 云原生支持 | 持续进行 | 轻量级容器、快速启动、低内存占用 | 优化云环境部署和运行 |
| AI/ML集成 | 中长期 | 原生向量API、张量操作 | 提高Java在AI领域的竞争力 |
| 安全性增强 | 持续进行 | 更强的默认安全设置、加密算法更新 | 提高应用安全性 |
| 版本 | 预计发布时间 | 主要特性 | 状态 |
|---|
| Java 23 | 2024年9月 | 模式匹配增强、字符串模板第二预览、作用域值正式版、结构化并发第二预览、向量API第五孵化、未命名模式和变量 | 已发布 |
| Java 24 | 2025年3月 | 作用域值增强、结构化并发第三预览、向量API第六孵化、类文件API第二预览、原始类型特化预览 | 已发布 |
| Java 25 | 2025年9月 | 结构化并发正式版、向量API正式版、原始类型特化第二预览、JEP 503移除32位x86端口、JEP 506作用域值稳定 | 已发布 |
| Java 26 | 2026年3月 | 值对象预览、模式匹配增强、字符串模板正式版 | 规划中 |
| Java 27 | 2026年9月 | 原始类型特化正式版、值对象第二预览 | 规划中 |
| Java 28 | 2027年3月 | 待定 | 规划中 |
| Java 29 | 2027年9月 | 值对象正式版 | 规划中 |
| 时代 | 版本范围 | 主要特点 | 代表性贡献 | 影响 |
|---|
| 起源期 | 1.0-1.1 | 基础语法、核心API | 跨平台理念、"一次编写,到处运行" | 奠定Java基础 |
| 发展期 | 1.2-1.4 | 企业级功能、稳定性提升 | 集合框架、Swing、JDBC 2.0 | 扩展应用领域 |
| 成熟期 | 5.0-8 | 重大语言增强、生态完善 | 泛型、注解、Lambda表达式 | 提高开发效率 |
| 创新期 | 9-17 | 模块化、快速迭代、性能优化 | 模块系统、新发布周期、ZGC | 适应现代开发需求 |
| 未来期 | 18- | 云原生、高性能、AI集成 | 虚拟线程、向量API、云优化 | 拓展应用边界 |
| 转折点 | 版本 | 意义 | 后续影响 |
|---|
| 企业级应用支持 | J2SE 1.2 | 引入企业级API | 确立企业市场地位 |
| 语法现代化 | J2SE 5.0 | 引入泛型、注解等 | 提高代码质量和开发效率 |
| 函数式编程 | Java SE 8 | 引入Lambda表达式 | 简化代码,支持函数式范式 |
| 模块化系统 | Java SE 9 | 引入JPMS | 解决类路径问题,提高可维护性 |
| 快速发布周期 | Java SE 10 | 6个月发布周期 | 加速创新,快速响应需求 |
| 虚拟线程 | Java SE 21 | 引入轻量级线程 | 简化并发编程,提高吞吐量 |
| 因素 | 具体表现 | 价值 |
|---|
| 向后兼容性 | 旧代码在新版本运行 | 保护投资,降低迁移成本 |
| 社区生态 | 开源项目、框架、工具 | 丰富的解决方案,降低开发难度 |
| 企业支持 | Oracle、IBM等大公司支持 | 确保长期发展和稳定性 |
| 性能优化 | 持续的JVM改进 | 满足高性能应用需求 |
| 标准化 | JSR、JCP流程 | 确保规范性和兼容性 |
| 跨平台性 | 一次编写,到处运行 | 降低部署和维护成本 |