首页 > 基础资料 博客日记
【汇总JDK的各个版本特性以及未来版本规划】
2024-07-18 02:00:05基础资料围观177次
曾梦想执剑走天涯,我是程序猿【AK】
目录
简述概要
持续与OpenJDK官网进行定期更新,方便学习,方便查阅,也希望让各位感觉浏览官网慢,不知道魔法的小伙伴,能随时浏览学习。
知识图谱
Java Development Kit (JDK) 8 是一个重要的版本,因为它引入了许多新特性和改进,这些特性在后续版本中继续得到发展。以下是 JDK 8 及其之后版本的一些关键特性和更新:
https://openjdk.org/projects/jdk/
JDK 8
-
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
-
模块系统(Jigsaw):引入了模块化特性,允许开发者将应用程序分割成独立的模块,提高了代码的可维护性和可扩展性。
-
JShell:一个新的交互式命令行工具,允许开发者逐行执行 Java 代码,并立即看到结果。
-
改进的 Stream API:增加了新的中间操作和终端操作,使得 Stream API 更加强大。
-
集合工厂方法:在
java.util.Collections
中增加了一些新的静态工厂方法,用于创建不可修改的集合。 -
处理进程:引入了
java.lang.ProcessHandle
类,提供了对操作系统进程的更细粒度控制。
JDK 10
-
局部变量类型推断:在 JDK 10 中,局部变量的类型推断(var 关键字)被引入,这使得代码更加简洁。
-
改进的垃圾回收器:引入了新的垃圾回收器,如 G1 垃圾回收器的改进版本,以及实验性的 ZGC(Z Garbage Collector)。
-
HTTP 客户端 API:提供了一个新的 HTTP 客户端 API,用于简化 HTTP 请求的发送和处理。
JDK 11
-
长期支持(LTS)版本:JDK 11 是继 JDK 8 之后的又一个长期支持版本,提供了更长时间的安全更新和维护。
-
移除 Nashorn 引擎和 CORBA 模块:这两个特性在 JDK 11 中被移除,以减少 JDK 的体积和复杂性。
-
Flight Recorder:引入了 Flight Recorder,这是一个低开销的事件记录系统,用于监控和诊断 JVM 的性能问题。
-
Epsilon 垃圾回收器:作为一个实验性的垃圾回收器,Epsilon GC 旨在为某些特定的应用场景提供更好的性能。
-
改进的 AArch64(ARM64)支持:JDK 11 对 ARM64 架构提供了更好的支持,使得 Java 应用程序可以在更多的设备上运行。
JDK 12 及以后
-
Switch 表达式:在 JDK 12 中引入了 Switch 表达式,它提供了一种更简洁的方式来处理多分支的逻辑。
-
Shenandoah 垃圾回收器:这是一个低暂停时间的垃圾回收器,旨在减少垃圾回收对应用程序性能的影响。
-
JVM 常量 API:提供了一个新的 API,允许在运行时读取和修改 JVM 常量。
-
JFR(Java Flight Recorder)事件流:JFR 的事件流功能允许实时监控和分析 JVM 的性能。
-
ZGC(Z Garbage Collector):在 JDK 15 中,ZGC 成为了正式特性,它是一个可伸缩的、低延迟的垃圾回收器,适用于大型堆内存。
-
模式匹配:在 JDK 16 中,引入了模式匹配的预览特性,这将使得代码更加简洁和表达力更强。
-
密封类:在 JDK 16 中,引入了密封类(Sealed Classes),这是一种新的类类型,它限制了类的继承,有助于提高代码的安全性。
截至我的知识更新日期(2023年3月),JDK 16 是最新的长期支持(LTS)版本。在 JDK 16 之后,Oracle 继续发布了新的版本,包括 JDK 17 和 JDK 18。以下是这些版本的一些关键特性和更新:
JDK 17 (LTS)
JDK 17 是继 JDK 16 之后的下一个长期支持版本,它在 2021 年 9 月发布。JDK 17 主要包含了一些新特性和改进,以及对现有功能的增强。以下是 JDK 17 的一些亮点:
-
密封类(Sealed Classes):这是 JDK 16 中引入的预览特性,在 JDK 17 中成为了正式特性。密封类提供了更严格的类继承控制,有助于提高代码的安全性和可维护性。
-
模式匹配(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
JDK 18 是在 JDK 17 之后的下一个版本,它在 2022 年 3 月发布。JDK 18 包含了一些新特性和对现有特性的改进。以下是 JDK 18 的一些亮点:
-
Vector API:JDK 18 引入了 Vector API 的预览特性,这是一个用于处理向量计算的库,它提供了对 SIMD(单指令多数据)指令的支持,可以提高数值计算的性能。
-
弃用 Nashorn JavaScript 引擎:JDK 18 计划在后续版本中移除 Nashorn JavaScript 引擎,这是 JDK 中的轻量级 JavaScript 运行时。
-
弃用 Applet API:JDK 18 计划在后续版本中移除 Applet API,这是用于在浏览器中运行 Java 小程序的 API。
-
垃圾回收器的改进:JDK 18 继续对垃圾回收器进行优化,特别是对 ZGC 和 Shenandoah GC 的改进。
-
其他增强:JDK 18 还包含了对 Java 语言和库的其他增强,如对
java.net
包的改进、对java.util
包的增强等。
JDK 19
405: Record记录模式(预览)
422: Linux/RISC-V 端口
424: 外部函数和内存 API(预览版)
425: 虚拟线程(预览)
426: Vector API(第四孵化器)
427: 开关的模式匹配(第三次预览)
428: 结构化并发(孵化器)
JDK 20
429: Scoped Values范围值(孵化器)
432: Record记录模式(第二次预览)
433: 开关的模式匹配(第四次预览)
434: 外部函数和内存 API(第二预览版)
436: 虚拟线程(第二预览版)
437: 结构化并发(第二个孵化器)
438: Vector API(第五孵化器)
JDK 21 (LTS)
430: 字符串模板(预览)
431: 有序集合
439: 世代ZGC
440: 记录模式
441: 开关的模式匹配
442: 外部函数和内存 API(第三次预览版)
443: 未命名模式和变量(预览)
444: 虚拟线程
445: 未命名类和实例主要方法(预览)
446: 范围值(预览)
448: Vector API(第六个孵化器)
449: 弃用 Windows 32 位 x86 端口以进行删除
451: 准备禁止动态加载代理
452: 密钥封装机制API
453: 结构化并发(预览版)
JDK 22 (development)
日程
2023/12/07 减速第一阶段 (从主线分叉)
2024/01/18 减速第二阶段
2024/02/08 初始候选版本
2024/02/22 最终候选版本
2024/03/19
一般可用性
特征
423: G1 的区域固定
447: super(…) 之前的语句(预览)
454: 外部函数和内存 API
456: 未命名变量和模式
457: 类文件 API(预览版)
458: 启动多文件源代码程序
459: 字符串模板(第二次预览)
460: Vector API(第七个孵化器)
461: 流收集器(预览)
462: 结构化并发(第二预览版)
463: 隐式声明的类和实例主要方法(第二预览版)
464: 范围值(第二次预览版)
JDK 23 (development)
特征
到目前为止,JEP 针对 JDK 23
455: 模式、instanceof 和 switch 中的基本类型(预览)
---- 永不磨灭的番号:我是AK
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签: