JDK 发展历史及其版本特性
JDK(Java Development Kit,Java开发工具包)是用于开发Java应用程序的核心工具之一。它由Oracle(最初由Sun Microsystems)提供,包含了Java编译器、Java运行环境(JRE)、Java标准类库等。JDK的发展历程反映了Java语言本身的发展演进,下面是JDK各个重要版本的历史和主要特性:
🌱 早期阶段(1996–2006,Sun Microsystems)
JDK 1.0 (1996)
- Java首次发布,支持基本的语言特性。
- 核心包如
java.lang
,java.io
,java.util
等。 - 主要目标是“编写一次,处处运行”。
JDK 1.1 (1997)
- 引入内部类(Inner Classes)
- JavaBeans组件模型
- JDBC(Java Database Connectivity)
- RMI(远程方法调用)
🌳 成熟与广泛使用期(2000–2010)
JDK 1.2 – Java 2 (1998)
- 被称为Java 2平台(J2SE)
- 引入了集合框架(Collections Framework)
- 改进AWT和Swing GUI库
JDK 1.3 (2000)
- 引入Java Sound API
- 改进性能,主要是HotSpot VM集成
JDK 1.4 (2002)
- 引入
assert
关键字 - NIO(新I/O API)
- 正则表达式支持(
java.util.regex
)
JDK 5 (2004)
(原JDK 1.5,正式名称改为Java 5)
- 引入泛型(Generics)
- 增强for循环(for-each)
- 自动装箱/拆箱
- 枚举类型(Enum)
- 注解(Annotations)
- 变量参数(Varargs)
JDK 6 (2006)
- 融合脚本语言(JSR 223)
- Web服务改进(JAX-WS)
- 性能提升
🌟 现代化转型(2011–2017)
JDK 7 (2011)
- 二进制数字字面量(
0b1010
) try-with-resources
语法- 多重catch块、字符串作为switch参数
- Fork/Join框架(并行计算支持)
JDK 8 (2014)
- 引入Lambda表达式(函数式编程)
- Stream API(处理集合的新方式)
- 默认方法(default methods) in 接口
- 新的日期/时间API(
java.time
) - JavaScript引擎Nashorn
🚀 快速发布周期阶段(2017–至今,Oracle和OpenJDK)
Oracle宣布Java将采用6个月发布一个新版本的节奏。
JDK 9 (2017)
- 模块系统(Project Jigsaw)
- JShell(交互式REPL)
- 改进了JVM监控和诊断
JDK 10 (2018)
var
关键字(局部变量类型推断)
JDK 11 (2018) ⭐ 长期支持(LTS)
- 移除Java EE和CORBA模块
- 引入HttpClient API(标准化)
- 垃圾回收器改进(ZGC引入)
JDK 12–16(2019–2021)
- 开始引入诸如:
- Switch表达式(预览)
- Text Blocks(多行字符串)
- Records(简洁数据类)
- Sealed Classes(密封类)
JDK 17 (2021) ⭐ LTS版本
- Sealed Classes正式发布
- 强封装 JDK 内部 API
- 新的macOS渲染器
- Pattern Matching for
instanceof
JDK 18–20(2022–2023)
- 结构化并发(Structured Concurrency)实验性引入
- 外部函数和内存API(Project Panama 相关)
JDK 21 (2023) ⭐ LTS版本
- Virtual Threads(轻量线程,Project Loom)
- String Templates(预览)
- 完善的模式匹配功能(Pattern Matching)
- 更完善的Records和密封类集成
🔮 未来方向
- 项目Loom:全面引入协程风格的并发支持
- 项目Panama:改善Java与本地代码的互操作性
- 项目Valhalla:引入值类型(Value Types)和更高效的数据结构