21.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 表达式:引入了函数式编程的特性,使得代码更加简洁和灵活。Lambda 表达式允许你以一种更简洁的方式表示匿名函数。
Stream API:提供了一种新的抽象,可以让你以声明性方式处理集合数据。Stream API 支持并行操作,可以提高数据处理的效率。
接口的默认方法:允许在接口中定义默认实现,这在之前的版本中是不允许的。这使得可以在不破坏现有实现的情况下向接口添加新方法。
方法引用:可以更简洁地引用方法或构造器。方法引用是 Lambda 表达式的语法糖
新的日期和时间 API:引入了 java.time 包,提供了一套全新的日期和时间处理类,如 LocalDate、LocalTime、LocalDateTime 等,这些类旨在克服旧版 java.util.Date 类的不足。
Nashorn JavaScript 引擎:一个新的轻量级 JavaScript 运行时,允许在 JVM 上执行 JavaScript 代码。
性能改进:JDK 8 在垃圾回收器和 JIT 编译器方面进行了优化,提高了性能。
JDK 9 (2017) 传送门
模块系统(Jigsaw):引入了模块化特性,允许开发者将应用程序分割成独立的模块,提高了代码的可维护性和可扩展性。
JShell:一个新的交互式命令行工具,允许开发者逐行执行 Java 代码,并立即看到结果。
改进的 Stream API:增加了新的中间操作和终端操作,使得 Stream API 更加强大。
集合工厂方法:在 java.util.Collections 中增加了一些新的静态工厂方法,用于创建不可修改的集合。
处理进程:引入了 java.lang.ProcessHandle 类,提供了对操作系统进程的更细粒度控制。
JDK 10 (2018) 传送门
- 局部变量类型推断:使用var关键字进行局部变量类型推断。
- G1垃圾收集器改进:提高了G1 GC的性能和可预测性。
- HTTP 客户端 API:提供了一个新的 HTTP 客户端 API,用于简化 HTTP 请求的发送和处理。
JDK 11 (2018)传送门
- LTS版本:长期支持版本。
- 新的字符串方法:如repeat、strip、isBlank等。
- HTTP Client API:标准化的HTTP客户端API。
- 移除和弃用:移除了Java EE和CORBA模块。
- Flight Recorder:引入了 Flight Recorder,这是一个低开销的事件记录系统,用于监控和诊断 JVM 的性能问题。
- Epsilon 垃圾回收器:作为一个实验性的垃圾回收器,Epsilon GC 旨在为某些特定的应用场景提供更好的性能。
- 改进的 AArch64(ARM64)支持:JDK 11 对 ARM64 架构提供了更好的支持,使得 Java 应用程序可以在更多的设备上运行。
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:提供更多的随机生成器实现。
- 模式匹配(Pattern Matching):JDK 17 引入了模式匹配的预览特性,这允许开发者使用更简洁的语法来检查和提取对象的属性。模式匹配可以用于
instanceof
表达式、switch
语句和if
语句。 - 局部变量类型推断(var 关键字):JDK 17 扩展了局部变量类型推断的使用范围,允许在更复杂的场景中使用
var
关键字。 - 记录(Record):这是 JDK 14 中引入的预览特性,在 JDK 17 中成为了正式特性。记录是一种特殊的类,用于创建不可变的数据载体,它简化了数据结构的创建。
- Foreign Function & Memory API (FFI):JDK 17 引入了 FFI 的预览特性,它允许 Java 程序调用本地库(如 C/C++ 库)的函数,以及更安全地操作本地内存。
- 垃圾回收器的改进:JDK 17 继续对垃圾回收器进行优化,包括对 ZGC 和 Shenandoah GC 的改进。
- 其他语言和库的增强:JDK 17 还包含了对 Java 语言和标准库的一些小的增强,如新的
String
方法、对java.util
包的改进等。
JDK 18 (2022)传送门
- 简单的Web服务器:适合用于原型开发和测试。
- UTF-8默认字符集:JDK内和标准Java API中默认使用UTF-8。
JDK 19 (2022)传送门
- 虚拟线程(Virtual Threads)(预览):改进的线程模型,便于并发编程。
- 结构化并发(预览):简化多线程的错误处理和取消操作。
JDK 20 (2023)传送门
- 记录模式(预览):在模式匹配中更好地支持记录类。
- 模式匹配switch表达式(预览):增强的switch语句,支持模式匹配。
