-
JDK 8(2014年发布):
- Lambda表达式:允许在Java中使用函数式编程风格,简化代码并提高可读性。
- Stream API:提供了一种新的数据处理方式,支持函数式编程和并行处理。
- 接口的默认方法和静态方法:允许在接口中定义具有实现的方法,提高了接口的灵活性。
- 新的日期和时间API:引入了java.time包,提供了更简单、更强大的日期和时间处理功能。
- Nashorn JavaScript引擎:允许在Java应用程序中执行JavaScript代码。
-
JDK 9(2017年发布):
- 模块系统(Project Jigsaw):引入了模块化编程,使得代码更易于组织和维护。
- JShell:交互式Java REPL(Read-Eval-Print Loop),方便开发者快速测试和验证代码片段。
- HTTP/2客户端:提供了一个新的HTTP/2客户端API,支持现代Web通信协议。
- 多分辨率图像API:支持在不同分辨率的设备上显示图像。
- 工厂方法创建不可变集合:java.util.List、Set和Map接口中添加了静态工厂方法,方便创建不可变集合。
-
JDK 10(2018年发布):
- 局部变量类型推断(var关键字):简化局部变量的声明,提高代码可读性。
- 并行全垃圾回收器(G1):改进了垃圾回收性能,减少了暂停时间。
- 应用程序类数据共享(AppCDS):提高了应用程序的启动速度和内存使用效率。
- 新的实验性JIT编译器(Graal):引入了一个新的实验性JIT编译器,用于提高Java程序的性能。
-
JDK 11(2018年发布,LTS版本):
- 新的HTTP客户端API:提供了一个新的HTTP客户端API,支持HTTP/2和WebSocket。
- Epsilon垃圾回收器:一种无操作的垃圾回收器,用于测试和性能分析。
- Flight Recorder:一种低开销的数据收集框架,用于诊断和性能分析。
- ZGC(Z Garbage Collector):一种新的实验性垃圾回收器,旨在减少暂停时间并提高系统响应速度。
-
JDK 12(2019年发布):
- Switch表达式(预览):引入了一种新的switch表达式语法,简化了条件逻辑的处理。
- Shenandoah垃圾回收器:一种新的低暂停时间垃圾回收器。
- JVM常量API:允许在编译时和运行时访问和操作Java类文件中的常量。
- 默认的CDS归档:提高了应用程序的启动速度。
-
JDK 13(2019年发布):
- 文本块(预览):引入了一种新的文本块语法,简化了多行字符串的处理。
- 动态CDS归档:进一步提高了应用程序的启动速度。
- ZGC的并发类卸载:改进了ZGC垃圾回收器的性能。
- 重新实现了套接字API:提供了一个新的、更简单的套接字API。
-
JDK 14(2020年发布):
- instanceof模式匹配(预览):引入了一种新的instanceof语法,支持模式匹配。
- 记录(预览):引入了一种新的记录类型,简化了数据类的定义。
- Switch表达式(第二次预览):继续改进switch表达式的语法。
- 非易失性映射内存(JEP 352):提供了一种新的API,用于访问非易失性内存(如Intel Optane DC持久内存)。
-
JDK 15(2020年发布):
- 密封类(预览):引入了一种新的密封类语法,限制类的继承。
- 文本块(正式版):正式引入了文本块语法。
- ZGC的并发线程处理:改进了ZGC垃圾回收器的性能。
- 已弃用的嵌套访问控制:移除了对嵌套类访问控制的支持。
-
JDK 16(2021年发布):
- 记录(正式版):正式引入了记录类型。
- instanceof模式匹配(正式版):正式引入了instanceof模式匹配语法。
- 密封类(第二次预览):继续改进密封类的语法。
- 强封装JDK内部:加强了JDK内部模块的封装,提高了JDK的可维护性和稳定性。
-
JDK 17(2021年发布,LTS版本):
- 密封类(正式版):正式引入了密封类语法。
- 强化伪随机数生成器(PRNG):提供了更好的API,使得生成随机数更加简单、灵活和可扩展。
- macOS的新渲染管道:引入了一个新的渲染管道,用于在macOS上改进Java 2D图形性能。
- Foreign Function & Memory API(孵化器):引入了一个新的API,用于在Java程序中调用本地代码(如C或C++)和操作本地内存。
- macOS/AArch64端口:为macOS上的AArch64架构(如Apple M1芯片)提供了一个新的端口。
- 弃用安全管理器:宣布了对Java安全管理器的弃用,计划在未来的Java版本中将其移除。