本文主要是介绍JDK的版本迭代(JDK9 - JDK24)持续更新中,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 发布时间
发行版本 | 发行时间 | 备注 |
---|---|---|
Java 1.0 | 1996.01.23 | Sun公司发布了Java的第一个开发工具包 |
Java 5.0 | 2004.09.30 | ①版本号从1.4直接更新至5.0;②平台更名为JavaSE、JavaEE、JavaME |
Java 8.0 | 2014.03.18 | 此版本是继Java 5.0以来变化最大的版本。是长期支持版本(LTS) |
Java 9.0 | 2017.09.22 | 此版本开始,每半年更新一次 |
Java 10.0 | 2018.03.21 | |
Java 11.0 | 2018.09.25 | JDK安装包取消独立JRE安装包,是长期支持版本(LTS) |
Java 12.0 | 2019/03/19 | |
Java 13.0 | 2019/09/17 | |
Java 14.0 | 2020/03/17 | |
Java 15.0 | 2020/09/15 | |
Java 16.0 | 2021/03/16 | |
Java 17.0 | 2021/09/14 | |
Java 18.0 | 2022/03/22 | |
Java 19.0 | 2022/09/20 | |
Java 20.0 | 2023/03/21 | |
Java 21.0 | 2023/09/19 | |
Java 22.0 | 2024/03/19 | |
Java 23.0 | in development | |
Java 24.0 | in development | |
规划中 |
2. 版本说明
JDK7
1. 自动资源管理;
2. 改进的通用实例创建类型推断;
3. 数字字面量下划线支持;
4. switch中使用string;
5. 二进制字面量;
6. 简化可变参数方法调用;
7. 引入Java NIO.2开发包
JDK8
-
接口的默认方法
-
Lambda 表达式
-
函数式接口
-
方法与构造函数引用
-
Lambda 作用域
-
访问局部变量
-
访问对象字段与静态变量
-
访问接口的默认方法
-
Date API
-
Annotation 注解
JDK 9
JDK 9 版本说明地址
1. 模块化系统
2. jShell命令
3. 多版本兼容jar包
4. 接口的私有方法
5. 钻石操作符的使用升级
6. 语法改进:try语句
7. 下划线使用限制
8. String存储结构变更
9. 便利的集合特性:of()
10. 增强的Stream API
11. 多分辨率图像 API
12. 全新的HTTP客户端API
13. Deprecated的相关API
14. 智能Java编译工具
15. 统一的JVM日志系统
16. javadoc的HTML 5支持
17. Javascript引擎升级:Nashorn
18. java的动态编译器
JDK10
JDK 10 版本说明地址
1. JEP286,var 局部变量类型推断。
2. JEP296,将原来用 Mercurial 管理的众多 JDK 仓库代码,合并到一个仓库中,简化开发和管理过程。
3. JEP304,统一的垃圾回收接口。
4. EP307,G1 垃圾回收器的并行完整垃圾回收,实现并行性来改善最坏情况下的延迟。
5. JEP310,应用程序类数据 (AppCDS) 共享,通过跨进程共享通用类元数据来减少内存占用空间,和减少启动时间。
6. JEP312,ThreadLocal 握手交互。在不进入到全局 JVM 安全点 (Safepoint) 的情况下,对线程执行回调。优化可以只停止单个线程,而不是停全部线程或一个都不停。
7. JEP313,移除 JDK 中附带的 javah 工具。可以使用 javac -h 代替。
8. JEP314,使用附加的 Unicode 语言标记扩展。
9. JEP317,能将堆内存占用分配给用户指定的备用内存设备。
10. JEP317,使用 Graal 基于 Java 的编译器,可以预先把 Java 代码编译成本地代码来提升效能。
11. JEP318,在 OpenJDK 中提供一组默认的根证书颁发机构证书。开源目前 Oracle 提供的的 Java SE 的根证书,这样 OpenJDK 对开发人员使用起来更方便。
12. JEP322,基于时间定义的发布版本,即上述提到的发布周期。版本号为\$FEATURE.\$INTERIM.\$UPDATE.\$PATCH,分别是大版本,中间版本,升级包和补丁版本。
JDK11
JDK 11 版本说明地址
1. 181:Nest-Based访问控制
2. 309:动态类文件常量
3. 315:改善Aarch64 intrinsic
4. 318:无操作垃圾收集器
5. 320:消除Java EE和CORBA模块
6. 321:HTTP客户端(标准)
7. 323:局部变量的语法λ参数
8. 324:Curve25519和Curve448关键协议
9. 327:Unicode 10
10. 328:飞行记录器
11. 329:ChaCha20和Poly1305加密算法
12. 330:发射一列纵队源代码程序
13. 331:低开销堆分析
14. 332:传输层安全性(Transport Layer Security,TLS)1.3
15. 333:动作:一个可伸缩的低延迟垃圾收集器 (实验)
16. 335:反对Nashorn JavaScript引擎
17. 336:反对Pack200工具和API
JDK12
JDK 12 版本说明地址
1. 189:Shenandoah: A Low-Pause-Time Garbage Collector (Experimental) 低暂停时间的GC
2. 230: Microbenchmark Suite 微基准测试套件
3. 325: Switch Expressions (Preview) switch表达式
4. 334: JVM Constants API JVM常量API
5. 340: One AArch64 Port, Not Two 只保留一个AArch64实现
6. 341: Default CDS Archives 默认类数据共享归档文件
7. 344: Abortable Mixed Collections for G1 可中止的G1 Mixed GC
8. 346: Promptly Return Unused Committed Memory from G1 G1及时返回未使用的已分配内存
JDK13
JDK 13 版本说明
1. 350: Dynamic CDS Archives 动态CDS档案
2. 351: ZGC: Uncommit Unused Memory ZGC:取消使用未使用的内存
3. 353: Reimplement the Legacy Socket API 重新实现旧版套接字API
4. 354: Switch Expressions (Preview) switch表达式(预览)
5. 355: Text Blocks (Preview) 文本块(预览)
JDK14
JDK 14 版本说明
1. 305: Pattern Matching for instanceof (Preview) instanceof的模式匹配
2. 343: Packaging Tool (Incubator) 打包工具
3. 345: NUMA-Aware Memory Allocation for G1 G1的NUMA-Aware内存分配
4. 349: JFR Event Streaming JFR事件流
5. 352: Non-Volatile Mapped Byte Buffers 非易失性映射字节缓冲区
6. 358: Helpful NullPointerExceptions 实用的NullPointerExceptions
7. 359: Records (Preview)
8. 361: Switch Expressions (Standard) Switch表达式
9. 362: Deprecate the Solaris and SPARC Ports 弃用Solaris和SPARC端口
10. 363: Remove the Concurrent Mark Sweep (CMS) Garbage Collector 删除并发标记扫描(CMS)垃圾回收器
11. 364: ZGC on macOS
12. 365: ZGC on Windows
13. 366: Deprecate the ParallelScavenge + SerialOld GC Combination 弃用ParallelScavenge + SerialOld GC组合
14. 367: Remove the Pack200 Tools and API 删除Pack200工具和API
15. 368: Text Blocks (Second Preview) 文本块
16. 370: Foreign-Memory Access API (Incubator) 外部存储器访问API
JDK15
JDK 15 版本说明
1. 339: Edwards-Curve Digital Signature Algorithm (EdDSA) EdDSA 数字签名算法
2. 360: Sealed Classes (Preview) 密封类(预览)
3. 371: Hidden Classes 隐藏类
4. 372: Remove the Nashorn JavaScript Engine 移除 Nashorn JavaScript 引擎
5. 373: Reimplement the Legacy DatagramSocket API 重新实现 Legacy DatagramSocket API
6. 374: Disable and Deprecate Biased Locking 禁用偏向锁定
7. 375: Pattern Matching for instanceof (Second Preview) instanceof 模式匹配(第二次预览)
8. 377: ZGC: A Scalable Low-Latency Garbage Collector ZGC:一个可扩展的低延迟垃圾收集器
9. 378: Text Blocks 文本块
10. 379: Shenandoah: A Low-Pause-Time Garbage Collector Shenandoah:低暂停时间垃圾收集器
11. 381: Remove the Solaris and SPARC Ports 移除 Solaris 和 SPARC 端口
12. 383: Foreign-Memory Access API (Second Incubator) 外部存储器访问 API(第二次孵化版)
13. 384: Records (Second Preview) Records(第二次预览)
14. 385: Deprecate RMI Activation for Removal 废弃 RMI 激活机制
JDK16
JDK 16 版本说明
1. 338: Vector API (Incubator) Vector API(孵化器)
2. 347: Enable C++14 Language Features JDK C++的源码中允许使用C++14的语言特性
3. 357: Migrate from Mercurial to Git OpenJDK源码的版本控制从Mercurial (hg) 迁移到git
4. 369: Migrate to GitHub OpenJDK源码的版本控制迁移到github上
5. 380: Unix-Domain Socket Channels Unix域套接字通道
6. 386: Alpine Linux Port 将glibc的jdk移植到使用musl的alpine linux上
7. 387: Elastic Metaspace 弹性元空间
8. 388: Windows/AArch64 Port 移植JDK到Windows/AArch64
9. 389: Foreign Linker API (Incubator) 提供jdk.incubator.foreign来简化native code的调用
10. 390: Warnings for Value-Based Classes 提供基于值的类的警告
11. 392: Packaging Tool jpackage打包工具转正
12. 393: Foreign-Memory Access API (Third Incubator)
13. 394: Pattern Matching for instanceof Instanceof的模式匹配转正
14. 395: Records Records转正
15. 396: Strongly Encapsulate JDK Internals by Default 默认情况下,封装了JDK内部构件
16. 397: Sealed Classes (Second Preview) 密封类
JDK17
JDK 17 版本说明
1. 306: Restore Always-Strict Floating-Point Semantics 恢复始终严格的浮点语义
2. 356: Enhanced Pseudo-Random Number Generators 增强型伪随机数生成器
3. 382: New macOS Rendering Pipeline 新的macOS渲染管道
4. 391: macOS/AArch64 Port macOS/AArch64端口
5. 398: Deprecate the Applet API for Removal 弃用Applet API后续将进行删除
6. 403: Strongly Encapsulate JDK Internals 强封装JDK的内部API
7. 406: Pattern Matching for switch (Preview) switch模式匹配(预览)
8. 407: Remove RMI Activation 删除RMI激活机制
9. 409: Sealed Classes 密封类转正
10. 410: Remove the Experimental AOT and JIT Compiler 删除实验性的AOT和JIT编译器
11. 411: Deprecate the Security Manager for Removal 弃用即将删除的安全管理器
12. 412: Foreign Function & Memory API (Incubator) 外部函数和内存API(孵化特性)
13. 414: Vector API (Second Incubator) Vector API(第二次孵化特性)
14. 415: Context-Specific Deserialization Filters 上下文特定的反序列化过滤器
JDK18
JDK 18 版本说明
1. 400: UTF-8 by Default 默认为UTF-8
2. 408: Simple Web Server 简单的Web服务器
3. 413: Code Snippets in Java API Documentation Java API文档中的代码片段
4. 416: Reimplement Core Reflection with Method Handles 用方法句柄重新实现核心反射
5. 417: Vector API (Third Incubator) Vector API(第三个孵化器)
6. 418: Internet-Address Resolution SPI internet地址解析SPI
7. 419: Foreign Function & Memory API (Second Incubator) 外部函数与内存API(第二孵化器)
8. 420: Pattern Matching for switch (Second Preview) 开关模式匹配(第二次预览)
9. 421: Deprecate Finalization for Removal 不赞成删除最终化
JDK19
JDK 19 版本说明
1. 405: Record Patterns (Preview) 记录模式(预览)
2. 422: Linux/RISC-V Port Linux / RISC-V端口
3. 424: Foreign Function & Memory API (Preview) 外部函数和内存API(预览)
4. 425: Virtual Threads (Preview) 虚拟线程(预览版)
5. 426: Vector API (Fourth Incubator) Vector API(第四个孵化器)
6. 427: Pattern Matching for switch (Third Preview) 开关模式匹配(第三次预览)
7. 428: Structured Concurrency (Incubator) 结构化并发(孵化器)
JDK20
JDK 20 版本说明
1. 429: Scoped Values (Incubator) 范围值(孵化器)
2. 432: Record Patterns (Second Preview) 记录模式(第二次预览)
3. 433: Pattern Matching for switch (Fourth Preview) 开关模式匹配(第四次预览)
4. 434: Foreign Function & Memory API (Second Preview) 外部函数和内存API(第二次预览)
5. 436: Virtual Threads (Second Preview) 虚拟线程(第二次预览版)
6. 437: Structured Concurrency (Second Incubator) 结构化并发(第二个孵化器)
7. 438: Vector API (Fifth Incubator) 载体API(第五孵化器)
JDK21
JDK 21 版本说明
1. 430: String Templates (Preview) 字符串模板(预览)
2. 431: Sequenced Collections 顺序收藏
3. 439: Generational ZGC 一代ZGC
4. 440: Record Patterns 记录图形
5. 441: Pattern Matching for switch 开关的模式匹配
6. 442: Foreign Function & Memory API (Third Preview) 外部函数和内存API(第三预览版)
7. 443: Unnamed Patterns and Variables (Preview) 未命名模式和变量(预览)
8. 444: Virtual Threads 虚拟线程
9. 445: Unnamed Classes and Instance Main Methods (Preview) 未命名类和实例主方法(预览)
10. 446: Scoped Values (Preview) 范围值(预览)
11. 448: Vector API (Sixth Incubator) Vector API(第六孵化器)
12. 449: Deprecate the Windows 32-bit x86 Port for Removal 放弃Windows 32位x86端口以供删除
13. 451: Prepare to Disallow the Dynamic Loading of Agents 准备禁止动态加载代理
14. 452: Key Encapsulation Mechanism API 密钥封装机制API
15. 453: Structured Concurrency (Preview) 结构化并发症(预览)
JDK22
JDK 22 版本说明
1. 423: Region Pinning for G1 地区锁定G1
2. 447: Statements before super(...) (Preview) 超级(.)之前的声明(预览)
3. 454: Foreign Function & Memory API 外部函数和内存API
4. 456: Unnamed Variables & Patterns 未命名变量和模式
5. 457: Class-File API (Preview) 类文件API(预览)
6. 458: Launch Multi-File Source-Code Programs 启动多文件源代码程序
7. 459: String Templates (Second Preview) 字符串模板(第二预览)
8. 460: Vector API (Seventh Incubator) Vector API(第七孵化器)
9. 461: Stream Gatherers (Preview) 流媒体采集者(预览)
10. 462: Structured Concurrency (Second Preview) 结构化并发性(第二预览)
11. 463: Implicitly Declared Classes and Instance Main Methods (Second Preview) 隐含声明类和实例主方法(第二预览)
12. 464: Scoped Values (Second Preview) 范围值(第二预览)
JDK23
JDK 23 版本说明
1. 455: Primitive Types in Patterns, instanceof, and switch (Preview) Patterns、instanceof和Switch中的原始类型(预览)
2. 466: Class-File API (Second Preview) 类文件API(第二预览版)
3. 467: Markdown Documentation Comments Markdown文档评论
4. 469: Vector API (Eighth Incubator) Vector API(第八孵化器)
5. 473: Stream Gatherers (Second Preview) 流媒体采集者(第二预览)
6. 471: Deprecate the Memory-Access Methods in sun.misc.Unsafe for Removal 废弃sun.misc.中的内存访问方法不安全,无法删除
7. 474: ZGC: Generational Mode by Default ZGC:默认为世代模式
8. 476: Module Import Declarations (Preview) 模块导入声明(预览)
9. 477: Implicitly Declared Classes and Instance Main Methods (Third Preview) 隐含声明类和实例主方法(第三预览版)
10. 480: Structured Concurrency (Third Preview) 结构化并发性(第三预览)
11. 481: Scoped Values (Third Preview) 范围值(第三预览)
12. 482: Flexible Constructor Bodies (Second Preview) 灵活的建造者机构(第二预览)
JDK24
JDK 24 版本说明
1. 472:Prepare to Restrict the Use of JNI 准备限制JNI的使用
3. JDK各版本下载链接
Java Archive | Oracle 下载地址
这篇关于JDK的版本迭代(JDK9 - JDK24)持续更新中的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!