JDK 8 (发布于2014年3月)
JDK 8 是一个革命性的发布,引入了几个长期期待的新特性和改进:
- Lambda 表达式(Lambda Expressions) :为 Java 添加了函数式编程的能力,允许把函数作为方法参数,或者将代码作为数据对待。
- Stream API:引入了一种新的抽象层,使得对集合的操作更加方便和高效。
- 新的日期时间 API(Date and Time API) :基于 Joda-Time,解决了旧版日期时间 API 的设计问题。
- 接口的默认方法和静态方法(Default and Static Methods in Interfaces) :允许在接口中添加具有实现的方法,而不破坏现有的实现代码。
- Nashorn JavaScript 引擎:一个新的轻量级 JavaScript 引擎,允许在 JVM 上运行 JavaScript 应用。
- 类型注解(Type Annotations) :允许在任何使用类型的地方使用注解,比如在 implements 语句、throws 语句中。
- PermGen 移除:用 Metaspace 替代 PermGen 空间,解决了 PermGen 空间限制问题。
JDK 11 (发布于2018年9月)
JDK 11 是长期支持(LTS)版本之一,带来了许多新特性和改进:
- 新的 HTTP 客户端 API(HTTP Client) :支持 HTTP/2 协议以及 WebSocket。
- 新的垃圾收集器:引入了 ZGC (低延迟垃圾收集器) 和 Epsilon 垃圾收集器(一个实验性的无操作垃圾收集器)。
- Flight Recorder:一个低开销的数据收集框架,用于诊断问题和分析性能。
- 弃用 Nashorn JavaScript 引擎和 Pack200 工具。
- Unicode 10:支持最新的 Unicode 标准。
- 局部变量语法的改进(Local-Variable Syntax for Lambda Parameters) :允许使用 var 在 Lambda 表达式中声明局部变量。
JDK 17 (发布于2021年9月)
JDK 17 也是一个 LTS 版本,它包括了许多重要的新特性和改进:
- 密封类(Sealed Classes) :允许类或接口限制哪些其他类或接口可能继承或实现它们。
- Pattern Matching for switch(预览特性) :增强 switch 语句和表达式的功能,使其能够更灵活地处理复杂的数据结构。
- 强化的 switch 表达式:允许 switch 作为表达式使用,支持多个常量共享同一结果。
- 新的 macOS 渲染管道:为 macOS 提供一个新的 Metal-based 渲染管道,以替代旧的 OpenGL 管道。
- 外部内存访问 API(Foreign Function & Memory API) :(Incubator) 允许 Java 程序安全、高效地访问外部内存和调用本地代码。
- 弃用和移除特性:移除了 Experimental AOT 和 JIT 编译器、Applet API 等。