https://zhuanlan.zhihu.com/p/700147085
JDK不同版本的特性介绍
JDK 1.0 (1996)
- 基础特性:面向对象编程基础、基本数据类型、核心API库(如java.lang、http://java.io)。
- 图形用户界面:AWT(Abstract Window Toolkit)。
- 网络编程:支持简单的网络通信和Applet。
JDK 1.1 (1997)
- 增强特性:内部类、JavaBeans组件模型。
- 数据库连接:引入JDBC(Java Database Connectivity)。
- RMI:远程方法调用,支持分布式计算。
JDK 1.2 (1998)
- Java 2平台:引入Swing GUI工具包,提供更丰富的图形界面组件。
- 集合框架:新的集合类(如ArrayList、HashMap)。
- 增强的安全性:引入Java Plug-in和Java IDL/CORBA。
JDK 1.3 (2000)
- 性能优化:改进了JVM的性能。
- 新特性:Java Naming and Directory Interface (JNDI)、JavaSound API。
JDK 1.4 (2002)
- 新IO(NIO):改进的I/O处理能力。
- 断言机制:通过assert关键字进行调试和测试。
- 日志记录:引入Java Logging API。
- XML处理:集成了XML解析和XSLT处理。
JDK 5.0 (2004)
- 泛型:类型安全的集合和更多类型检查。
- 增强的for循环:简化数组和集合的遍历。
- 自动装箱/拆箱:自动进行基本类型和包装类型之间的转换。
- 枚举类型:更安全和强大的枚举类。
- 注解:元数据注解,用于生成文档和代码分析。
JDK 6 (2006)
- 脚本语言支持:通过JDK中的javax.script包。
- Web服务支持:集成了Java API for XML Web Services (JAX-WS)。
- 性能改进:JVM和类库的性能优化。
- 桌面应用增强:改进的Swing、Java 2D和Java SE 6 GUI。
JDK 7 (2011)
- Project Coin:小语言改进(如switch中使用字符串、二进制字面量、泛型类型推断)。
- try-with-resources:自动资源管理。
- Fork/Join框架:支持并行处理的框架。
- NIO.2:增强的文件系统API,支持异步I/O操作。
JDK 8 (2014)
- Lambda表达式:简化代码的函数式编程风格。
- Stream API:用于集合操作的强大工具。
- 新日期和时间API:java.time包,替代旧的日期和时间类。
- 默认方法:接口中的默认实现。
JDK 9 (2017)
- 模块化系统:Project Jigsaw,模块化JDK和用户代码。
- JShell:交互式编程工具(REPL)。
- 增强的Stream API:添加了许多实用方法。
- 多版本兼容JAR:支持单个JAR文件包含多个版本的类。
JDK 10 (2018)
- 局部变量类型推断:使用var关键字进行局部变量类型推断。
- G1垃圾收集器改进:提高了G1 GC的性能和可预测性。
JDK 11 (2018)
- LTS版本:长期支持版本。
- 新的字符串方法:如repeat、strip、isBlank等。
- HTTP Client API:标准化的HTTP客户端API。
- 移除和弃用:移除了Java EE和CORBA模块。
JDK 12 (2019)
- Switch表达式(预览特性):改进的switch语法。
- Shenandoah GC:低暂停时间的垃圾收集器(实验性)。
JDK 13 (2019)
- 文本块(预览特性):多行字符串文字。
- 增强的动态类数据共享(CDS):提高启动时间和性能。
JDK 14 (2020)
- 记录(Records)(预览特性):简化的数据载体类。
- NullPointerException增强:更详细的空指针异常信息。
JDK 15 (2020)
- 文本块:正式发布,简化多行字符串文字。
- 封闭类(Sealed Classes)(预览特性):限制哪些类可以扩展或实现。
JDK 16 (2021)
- 记录(Records):正式发布,用于数据封装。
- 模式匹配:instanceof操作符的模式匹配简化。
JDK 17 (2021)
- LTS版本:长期支持版本。
- 封闭类(Sealed Classes):正式发布。
- 增强的Random API:提供更多的随机生成器实现。
JDK 18 (2022)
- 简单的Web服务器:适合用于原型开发和测试。
- UTF-8默认字符集:JDK内和标准Java API中默认使用UTF-8。
JDK 19 (2022)
- 虚拟线程(Virtual Threads)(预览):改进的线程模型,便于并发编程。
- 结构化并发(预览):简化多线程的错误处理和取消操作。
JDK 20 (2023)
- 记录模式(预览):在模式匹配中更好地支持记录类。
- 模式匹配switch表达式(预览):增强的switch语句,支持模式匹配。