Skip to content

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语句,支持模式匹配。

Released under the MIT License.