Skip to content

不断更新的JDK版本及特性

1. JDK基本介绍

1.1. 长期版本及支持时间

LTS 版本,即 Long-term Support,意味着长期支持的版本。由 Oracle 官方确认的 LTS 版本可获得至少 8 年的产品支持,而非 LTS 版本的 JDK 只有 6 个月的产品支持。从Java9开始,计划发布周期为6个月;

JDK版本开始时间结束时间延期结束日期
JDK82014年3月2022年3月2030年12月
JDK112018年9月2023年9月2026年9月
JDK172021年9月2026年9月2029年9月
JDK212023年9月2028年9月2031年9月
JDK252025年9月

1.2. Oracle JDK和Open JDK

这两个JDK最大不同就是许可证不一样。但是对于个人用户来讲,没区别。
访问JDK地址: https://openjdk.org/projects/jdk/22/ 更改数字即可访问对应版本

Oracle JDKOpen JDK
来源Oracle团队维护Oracle和Open Java社区
授权协议Java 17及更高版本 Oracle Java SE 许可证
Java16及更低版本甲骨文免费条款和条件 (NFTC) 许可协议
GPL v2许可证
关系由Open JDK构建,增加了少许内容
是否收费2021年9月起Java17及更高版本所有用户免费。 16及更低版本,个人用户、开发用户免费。2017年9月起,所有版本免费

2. JDK特性

2.1. JDK23(收集中-2024年9月)

收集中

2.2. JDK22(12特性-2024年3月)

423:Region Pinning for G1G1 的区域固定
447:Statements before super(...) (Preview)super(...) 之前的语句(预览)
454:Foreign Function & Memory API外部函数和内存 API
456:Unnamed Variables & Patterns未命名变量和模式
457:Class-File API (Preview)类文件 API(预览版)
458:Launch Multi-File Source-Code Programs启动多文件源代码程序
459:String Templates (Second Preview)字符串模板(第二次预览)
460:Vector API (Seventh Incubator)Vector API(第七个孵化器)
461:Stream Gatherers (Preview)流收集器(预览)
462:Structured Concurrency (Second Preview)结构化并发(第二预览版)
463:Implicitly Declared Classes and Instance Main Methods (Second Preview)隐式声明的类和实例主要方法(第二预览版)
464:Scoped Values (Second Preview)范围值(第二次预览版)

2.3. JDK21(15特性-2023年9月)

  1. 序列集合。该 JEP 提议引入“一个新的接口族,用于表示集合的概念,这些集合的元素按照预定义的序列或顺序排列,它们是作为集合的结构属性。”这一提案的动机是由于集合框架中缺乏预定义的顺序和统一的操作集。
  2. 分代 ZGC。通过扩展Z垃圾回收器(ZGC)来维护年轻对象和年老对象的独立生成,从而提高应用程序性能。这将使ZGC能够更频繁地收集年轻对象——这些对象往往英年早逝。
  3. 记录模式。使用记录模式(Record Patterns)增强Java编程语言,以解构记录值。可以嵌套记录模式和类型模式,以实现功能强大、声明性和可组合形式的数据导航和处理。
  4. switch 模式匹配。通过switch表达式和语句的模式匹配来增强Java编程语言。通过将模式匹配扩展到switch,可以针对多个模式测试表达式,每个模式都有一个特定的操作,从而可以简洁、安全地表达复杂的面向数据的查询。
  5. 虚拟线程。将虚拟线程(Virtual Threads)引入Java平台。虚拟线程是轻量级线程,可以显著减少编写、维护和观察高吞吐量并发应用程序的工作量。
  6. 弃用Windows 32位x86移植,并打算在将来的版本中将其删除。
  7. 准备禁止动态加载代理。将代理动态加载到正在运行的JVM中时发出警告。这些警告旨在让用户为将来的版本做好准备,该版本默认情况下不允许动态加载代理,以提高默认情况下的完整性。在启动时加载代理的可服务性工具不会导致在任何版本中发出警告。
  8. 密钥封装机制 API。介绍一种用于密钥封装机制(Key Encapsulation Mechanism,简称KEM)的API,这是一种使用公钥加密来保护对称密钥的加密技术。
  9. 字符串模板(预览)。使用字符串模板(String Templates)增强Java编程语言。字符串模板通过将文本与嵌入的表达式和模板处理器耦合来生成专门的结果,从而补充Java现有的字符串文本和文本块。这是一个预览语言功能和API。
  10. 外部函数和内存 API(第三次预览)。引入API,Java程序可以通过该API与Java运行时之外的代码和数据进行互操作。通过有效地调用外部函数(即JVM外部的代码),并通过安全地访问外部内存(即不受JVM管理的内存),API使Java程序能够调用本机库并处理本机数据,而不会出现JNI的脆弱性和危险性。这是一个预览API。
  11. 未命名模式和变量(预览)。使用未命名模式和未命名变量来增强Java语言,未命名模式匹配记录组件而不说明组件的名称或类型,未命名变量可以初始化但不使用。两者都用下划线字符_表示。这是一个预览语言功能。
  12. 未命名类和实例主方法(预览)。发展Java语言,使学生无需理解为大型程序设计的语言功能即可编写第一个程序。学生们不用使用单独的Java方言,就可以为单类程序编写精简的声明,然后随着技能的发展,无缝地扩展程序,使用更高级的功能。这是一个预览语言功能。
  13. 作用域值(预览)。引入作用域值,这些值可以在不使用方法参数的情况下安全有效地共享给方法。它们优先于线程化局部变量,尤其是在使用大量虚拟线程时。这是一个预览API。
  14. 结构化并发(预览)。通过引入用于结构化并发(Structured Concurrency)的API来简化并发编程。结构化并发将在不同线程中运行的相关任务组视为单个工作单元,从而简化错误处理和消除,提高可靠性,并增强可观察性。这是一个预览API。
  15. Vector API(孵化器第六阶段)
430:String Templates (Preview)字符串模板(预览)
431:Sequenced Collections有序集合
439:Generational ZGC世代ZGC
440:Record Patterns记录模式
441:Pattern Matching for switch开关的模式匹配
442:Foreign Function & Memory API (Third Preview)外部函数和内存 API(第三次预览版)
443:Unnamed Patterns and Variables (Preview)未命名模式和变量(预览)
444:Virtual Threads虚拟线程
445:Unnamed Classes and Instance Main Methods (Preview)未命名类和实例主要方法(预览)
446:Scoped Values (Preview)范围值(预览)
448:Vector API (Sixth Incubator)Vector API(第六个孵化器)
449:Deprecate the Windows 32-bit x86 Port for Removal弃用 Windows 32 位 x86 端口以进行删除
451:Prepare to Disallow the Dynamic Loading of Agents准备禁止动态加载代理
452:Key Encapsulation Mechanism API密钥封装机制API
453:Structured Concurrency (Preview)结构化并发(预览版)

2.4. JDK20(7特性-2023年3月)

  1. 作用域值(孵化器)
  2. Record 模式匹配(第二次预览)
  3. switch 的模式匹配(第四次预览)
  4. 外部函数和内存 API(第二个预览版)
  5. 虚拟线程(第二个预览版)
  6. 结构化并发(第二孵化器)
  7. Vector API(第五孵化器)
429:Scoped Values (Incubator)范围值(孵化器)
432:Record Patterns (Second Preview)记录模式(第二次预览)
433:Pattern Matching for switch (Fourth Preview)开关的模式匹配(第四次预览)
434:Foreign Function & Memory API (Second Preview)外部函数和内存 API(第二预览版)
436:Virtual Threads (Second Preview)虚拟线程(第二预览版)
437:Structured Concurrency (Second Incubator)结构化并发(第二个孵化器)
438:Vector API (Fifth Incubator)Vector API(第五孵化器)

2.5. JDK19(7特性-2022年10月)

  1. 结构化并发。当前还处于孵化阶段,旨在通过结构化并发 API 简化多线程编程。这种并发性将不同线程中运行的多个任务视为单个工作单元,从而简化错误处理、提高可靠性和可观察性。这个功能来自 Project Loom,它引入了一个新的轻量级并发模型。
  2. 记录模式,这一功能目前也处于预览版,主要是用来解构记录值。记录模式和类型模式可以被嵌套,以实现强大的、具有声明性的和可组合的数据导航和处理形式。该提案的目标包括扩展模式匹配,用以表达更复杂的、可组合的数据查询,同时不改变类型模式的语法或语义。该提案建立在 2021 年 3 月在 JDK 16 中交付的模式匹配的基础上。未来,Oracle 可能会要求对记录模式进行扩展,使之具备数组模式、Vararg 模式。记录模式是 Project Amber 的一部分,该项目旨在探索和孵化较小的、面向生产力的 Java 功能。
  3. 外部函数和内存 API 的预览版。通过引入一个 API,Java 程序可以与 Java 运行时之外的代码和数据进行互操作。通过有效地调用外部函数(即 JVM 之外的代码)和安全地访问外部内存(即不由 JVM 管理的内存),该 API 使 Java 程序能够调用本地库并处理本机数据,而不会出现 Java 本地接口(JNI)的危险和脆弱。外部函数和内存 API 结合了两个早期的孵化 API:外部内存访问 API 和外部链接器 API。外部函数和内存 API 曾在 JDK 17 中孵化,而后在 JDK 18 中重新孵化。该提案的目标包括易用性、性能、通用性和安全性。
  4. 虚拟线程的预览版。这是一种轻量级的线程,大大减少了编写、维护和观察高吞吐量并发应用的工作量。可以以简单的 thread-per-request 风格编写的服务器应用程序能够以接近最佳的硬件利用率进行扩展,通过使用 java.lang Thread API 现有代码能够以最小的改动采用虚拟线程,并基于现有的 JDK 工具对虚拟线程进行故障诊断、调试和分析。本提案的目标不是要改变 Java 的基本并发模型,也不是要在 Java 语言或 Java 库中提供新的数据并行结构。它的目标也不是去除线程的传统实现,或默默地将现有的应用程序迁移到使用虚拟线程。这项功能也是 Project Loom 的一部分。
  5. 对 switch 表达式和语句的模式匹配进行了第三次预览。这项功能以前在 JDK 17、JDK 18 中进行过预览。这一次在 JDK 19 中将进一步细化功能,包括用 switch 块中的 when 子句替换受保护的模式。另外,当选择器表达式的值为 null 时,模式切换的运行时语义与传统的语义更加一致。这项功能也是 Amber 项目的一部分。
  6. Vector API 的第四次孵化,将表达向量计算,在运行时可靠地编译为支持的 CPU 架构上的最佳向量指令,从而实现优于等效标量计算的性能。该 API 的开发者使用 HotSpot 自动矢量器,可获得了一种在 Java 中编写复杂的向量算法的方法,但有一个用户模型,使向量化更可预测和稳健。Vector API 先前已被纳入 JDK 16、JDK 17 和 JDK 19。在最新的 JDK 19 中,官方为该功能增加了两个跨道向量操作,即压缩和扩展,以及一个互补的向量掩码压缩操作。压缩向量操作将由掩码选择的源向量的通道按通道顺序映射到目标向量,而扩展操作则做相反的操作。压缩操作在过滤查询结果时非常有用。
  7. 通过 Linux/RISC-V 移植,目前这一功能已正式可用。Java 将获得对硬件指令集的支持,该指令集已经被广泛的语言工具链所支持。RISC-V 实际上是一系列相关的 ISA。Linux/RISC-V 端口将只支持 RISC-V 的 RV64GV 配置,这是一个包括矢量指令的通用 64 位 ISA。Java 的开发者可能会在将来考虑其他 RISC-V 的配置。
405:Record Patterns (Preview)记录模式(预览)
422:Linux/RISC-V PortLinux/RISC-V 端口
424:Foreign Function & Memory API (Preview)外部函数和内存 API(预览版)
425:Virtual Threads (Preview)虚拟线程(预览)
426:Vector API (Fourth Incubator)Vector API(第四孵化器)
427:Pattern Matching for switch (Third Preview)开关的模式匹配(第三次预览)
428:Structured Concurrency (Incubator)结构化并发(孵化器)

2.6. JDK18(9特性-2022年3月)

  1. 指定 UTF-8 作为标准 Java API 的默认字符集。通过此更改,依赖于默认字符集的 API 将在所有实现、操作系统、区域设置和配置中保持一致。
  2. 引入一个简单的 Web 服务器。提供一个命令行工具,来启动一个只提供静态文件的最小网络服务器,它没有 CGI 或类似 servlet 的功能可用。该工具用于原型设计、临时编码和测试目的,尤其是在教学环境中。
  3. 支持在 Java API 文档中加入代码片段。为 JavaDoc 的 Standard Doclet 引入一个 @snippet 标记,以简化 API 文档中嵌入示例源代码的难度。
  4. 用方法句柄重新实现核心反射。在 java.lang.invoke 的方法句柄之上,重构 java.lang.reflect 的方法、构造函数和字段,使用方法句柄处理反射的底层机制将减少 java.lang.reflect 和 java.lang.invoke 两者的 API 维护和开发成本。
  5. Vector API(第三孵化器)。引入一个 API 来表达向量计算,这些计算在运行时可以编译为支持的 CPU 架构上的最佳向量指令,从而实现优于等效标量计算的性能。
  6. 互联网地址解析 SPI。定义用于主机名和地址解析的服务提供者接口 (SPI),以便java.net.InetAddress可以使用平台内置解析器以外的解析器。
  7. 外部函数和内存 API(第二孵化器)。引入了一个新 API, Java 程序可以通过它与 Java 运行时之外的代码和数据进行互操作。通过有效地调用外部函数(即 JVM 外的代码),并安全地访问外部内存(即不由 JVM 管理的内存),外部函数和内存 API 使 Java 程序能够调用本机库并处理本机数据,而不具有 JNI 的脆弱性和危险。
  8. switch 模式匹配表达式。使用 switch 表达式和语句的模式匹配以及对模式语言的扩展来增强 Java 编程语言。将模式匹配扩展到 switch 允许针对多个模式测试表达式,每个模式都有特定的操作,可以简洁安全地表达复杂的面向数据的查询。
  9. 弃用 Finalization 功能。Java 1.0 中引入的 Finalization 旨在帮助避免资源泄漏问题,然而这个功能存在延迟不可预测、行为不受约束,以及线程无法指定等缺陷,导致其安全性、性能、可靠性和可维护性方面都存在问题,因此将其弃用,用户可选择迁移到其他资源管理技术,例如try-with-resources 语句和清洁器。
400:UTF-8 by Default默认 UTF-8
408:Simple Web Server简单的网络服务器
413:Code Snippets in Java API DocumentationJava API 文档中的代码片段
416:Reimplement Core Reflection with Method Handles使用方法句柄重新实现核心反射
417:Vector API (Third Incubator)Vector API(第三个孵化器)
418:Internet-Address Resolution SPI联网地址解析 SPI
419:Foreign Function & Memory API (Second Incubator)外部函数和内存 API(第二个孵化器)
420:Pattern Matching for switch (Second Preview)开关的模式匹配(第二次预览)
421:Deprecate Finalization for Removal弃用最终确定删除

2.7. JDK17(14特性-2021年9月)

  1. Free Java License 根据Oracle官方发布的最新Free Java License,Oracle JDK 可以免费用于生产环境。
  2. JDK 17 将取代 JDK 11 成为下一个长期支持版本
  3. Spring 6 和 Spring Boot 3需要JDK17
  4. 移除实验性的 AOT 和 JIT 编译器
  5. 恢复始终执行严格模式 (Always-Strict) 的浮点定义
  6. 正式引入密封类sealed class,限制抽象类的实现
  7. 统一日志异步刷新,先将日志写入缓存,然后再异步刷新
  8. 虽然JDK17也是一个LTS版本,但是并没有像JDK8和JDK11一样引入比较突出的特性,主要是对前几个版本的整合和完善。
306:Restore Always-Strict Floating-Point Semantics恢复始终严格的浮点语义
356:Enhanced Pseudo-Random Number Generators增强型伪随机数发生器
382:New macOS Rendering Pipeline新的 macos 渲染管线
391:macOS/AArch64 PortmacOS/AArch64 端
398:Deprecate the Applet API for Removal弃用 Applet API 以进行删除
403:Strongly Encapsulate JDK Internals强封装]DK内部
406:Pattern Matching for switch (Preview)开关模式匹配(预览)
407:Remove RMI Activation删除 RMI 激活
409:Sealed Classes密封类
410:Remove the Experimental AOT and JIT Compiler删除实验性 AOT 和JIT 编译器
411:Deprecate the Security Manager for Removal弃用要删除的安全管理器
412:Foreign Function & Memory API (Incubator)外部函数和内存 API (孵化器)
414:Vector API (Second Incubator)Vector API (第二孵化器)
415:Context-Specific Deserialization Filters上下文特定的反序列化过滤器

2.8. JDK16(17特性-2021年3月)

  1. 允许在 JDK C ++源代码中使用 C ++ 14功能
  2. ZGC性能优化,去掉ZGC线程堆栈处理从安全点到并发阶段
  3. 增加 Unix 域套接字通道
  4. 弹性元空间能力
  5. 提供用于打包独立 Java 应用程序的 jpackage 工具
  6. JDK16相当于是将JDK14、JDK15的一些特性进行了正式引入,如instanceof模式匹配(Pattern matching)、record的引入等最终到JDK16变成了final版本。
338:Vector API (Incubator)矢量 API(孵化器)
347:Enable C++14 Language Features启用 C++14 语言功能
357:Migrate from Mercurial to Git从 Mercurial 迁移到 Git
369:Migrate to GitHub迁移到 GitHub
376:ZGC: Concurrent Thread-Stack ProcessingZGC:并发线程堆栈处理
380:Unix-Domain Socket ChannelsUnix 域套接字通道
386:Alpine Linux PortAlpine Linux 端口
387:Elastic Metaspace弹性元空间
388:Windows/AArch64 PortWindows/AArch64 端口
389:Foreign Linker API (Incubator)外部链接器 API(孵化器)
390:Warnings for Value-Based Classes基于值的类的警告
392:Packaging Tool包装工具
393:Foreign-Memory Access API (Third Incubator)外部内存访问 API(第三个孵化器)
394:Pattern Matching for instanceofinstanceof 的模式匹配
395:Records记录
396:Strongly Encapsulate JDK Internals by Default默认情况下强封装JDK内部
397:Sealed Classes (Second Preview)密封类(第二次预览)

2.9. JDK15(14特性-2020年9月)

  1. EdDSA 数字签名算法
  2. Sealed Classes(封闭类,预览),通过sealed关键字修饰抽象类限定只允许指定的子类才可以实现或继承抽象类,避免抽象类被滥用
  3. Hidden Classes(隐藏类)
  4. 移除 Nashorn JavaScript引擎
  5. 改进java.net.DatagramSocket 和 java.net.MulticastSocket底层实现
339:Edwards-Curve Digital Signature Algorithm (EdDSA)EdDSA 数字签名算法
360:Sealed Classes (Preview)密封类(预览)
371:Hidden Classes隐藏类
372:Remove the Nashorn JavaScript Engine移除 Nashorn JavaScript 引擎
373:Reimplement the Legacy DatagramSocket API重新实现 Legacy DatagramSocket API
374:Disable and Deprecate Biased Locking禁用偏向锁定
375:Pattern Matching for instanceof (Second Preview)instanceof 模式匹配《第二次预览)
377:ZGC: A Scalable Low-Latency Garbage CollectorZGC;一个可扩展的低延迟垃圾收集器
378:Text Blocks文本块
379:Shenandoah: A Low-Pause-Time Garbage Collectorshenandoah:低暂停时间垃圾收集器
381:Remove the Solaris and SPARC Ports移除Solaris 和SPARC端口
383:Foreign-Memory Access API (Second Incubator)外部存储器访问 API(第二次解化版》
384:Records (Second Preview)Records(第二次预览)
385:Deprecate RMI Activation for Removal发弃 RMI激活机制

2.10. JDK14(16特性-2020年3月)

  1. instanceof模式匹配,instanceof类型匹配语法简化,可以直接给对象赋值,如if(obj instanceof String str),如果obj是字符串类型则直接赋值给了str变量
  2. 引入Record类型,类似于Lombok 的@Data注解,可以向Lombok一样自动生成构造器、equals、getter等方法;
  3. Switch 表达式-标准化
  4. 改进 NullPointerExceptions提示信息,打印具体哪个方法抛的空指针异常,避免同一行代码多个函数调用时无法判断具体是哪个函数抛异常的困扰,方便异常排查;
  5. 删除 CMS 垃圾回收器
305:Pattern Matching for instanceof (Preview)instanceof 的模式匹配(预览版)
343:Packaging Tool (Incubator)打包工具(孵化器)
345:NUMA-Aware Memory Allocation for G1G1 的 NUMA 感知内存分配
349:JFR Event StreamingJFR 事件流
352:Non-Volatile Mapped Byte Buffers非易失性映射字节缓冲区
358:Helpful NullPointerExceptions有用的空指针异常
359:Records (Preview)记录(预览)
361:Switch Expressions (Standard)开关表达式(标准)
362:Deprecate the Solaris and SPARC Ports弃用 Solaris 和 SPARC 端口
363:Remove the Concurrent Mark Sweep (CMS) Garbage Collector删除并发标记清除 (CMS) 垃圾收集器
364:ZGC on macOSmacOS 上的 ZGC
365:ZGC on WindowsWindows 上的 ZGC
366:Deprecate the ParallelScavenge + SerialOld GC Combination弃用 ParallelScavenge + SerialOld GC 组合
367:Remove the Pack200 Tools and API删除 Pack200 工具和 API
368:Text Blocks (Second Preview)文本块(第二次预览)
370:Foreign-Memory Access API (Incubator)外部内存访问 API(孵化器)

2.11. JDK13(5特性-2019年9月)

  1. Switch 表达式扩展,switch表达式增加yield关键字用于返回结果,作用类似于return,如果没有返回结果则使用break
  2. 文本块升级 “”" ,引入了文本块,可以使用"""三个双引号表示文本块,文本块内部就不需要使用换行的转义字符
  3. SocketAPI 重构,Socket的底层实现优化,引入了NIO
  4. FileSystems.newFileSystem新方法
  5. ZGC优化,增强 ZGC 释放未使用内存,将标记长时间空闲的堆内存空间返还给操作系统,保证堆大小不会小于配置的最小堆内存大小,如果堆最大和最小内存大小设置一样,则不会释放内存还给操作系统
350:Dynamic CDS Archives动态 CDS 档案
351:ZGC: Uncommit Unused MemoryZGC:取消提交未使用的内存
353:Reimplement the Legacy Socket API重新实现旧版套接字 API
354:Switch Expressions (Preview)开关表达式(预览)
355:Text Blocks (Preview)文本块(预览)

2.12. JDK12(8特性-2019年3月)

  1. Switch 表达式扩展,可以有返回值
  2. 新增NumberFormat对复杂数字的格式化
  3. 字符串支持transform、indent操作
  4. 新增方法Files.mismatch(Path, Path)
  5. Teeing Collector
  6. 支持unicode 11
  7. Shenandoah GC,新增的GC算法
  8. G1收集器的优化,将GC的垃圾分为强制部分和可选部分,强制部分会被回收,可选部分可能不会被回收,提高GC的效率
189:Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)Shenandoah:低暂停时间垃圾收集器(实验性)
230:Microbenchmark Suite微基准测试套件
325:Switch Expressions (Preview)开关表达式(预览)
334:JVM Constants APIJVM 常量 API
340:One AArch64 Port, Not Two一个 AArch64 端口,而不是两个
341:Default CDS Archives默认 CDS 档案
344:Abortable Mixed Collections for G1G1 可混合集合
346:Promptly Return Unused Committed Memory from G1立即从 G1 返回未使用的提交内存

2.13. JDK11(17特性-2018年9月)

  1. 增加一些字符串处理方法
  2. 用于 Lambda 参数的局部变量语法
  3. Http Client重写,支持HTTP/1.1和HTTP/2 ,也支持 websockets
  4. 可运行单一Java源码文件,如:java Test.java
  5. ZGC:可伸缩低延迟垃圾收集器,ZGC可以看做是G1之上更细粒度的内存管理策略。由于内存的不断分配回收会产生大量的内存碎片空间,因此需要整理策略防止内存空间碎片化,在整理期间需要将对于内存引用的线程逻辑暂停,这个过程被称为"Stop the world"。只有当整理完成后,线程逻辑才可以继续运行。(并行回收)
  6. 支持 TLS 1.3 协议
  7. Flight Recorder(飞行记录器),基于OS、JVM和JDK的事件产生的数据收集框架
  8. 对Stream、Optional、集合API进行增强
181:Nest-Based Access Control基于嵌套的访问控制
309:Dynamic Class-File Constants动态类文件常量
315:Improve Aarch64 Intrinsics改进 Aarch64内在函数
318:Epsilon: A No-Op Garbage CollectorEpsilon:无操作垃圾收集器
320:Remove the Java EE and CORBA Modules删除 Java EE 和 CORBA 模块
321:HTTP Client (Standard)HTTP 客户端(标准)
323:Local-Variable Syntax for Lambda Parameters本地变量Lambda 参数的语法
324:Key Agreement with Curve25519 and Curve448与 Curve25519 和 Curve448 的密钥协议
327:Unicode 10Unicode 10
328:Flight Recorder飞行记录器
329:ChaCha20 and Poly1305 Cryptographic AlgorithmsChaCha20 和 Poly1305 加密算法
330:Launch Single-File Source-Code Programs启动单文件源代码程序
331:Low-Overhead Heap Profiling低开销堆分析
332:Transport Layer Security (TLS) 1.3传输层安全性 (TLS) 1.3
333:ZGC: A Scalable Low-Latency Garbage Collector(Experimental)ZGC:可扩展的低延迟垃圾收集器(实验性)
335:Deprecate the Nashorn JavaScript Engine弃用 Nashorn JavaScript 引擎
336:Deprecate the Pack200 Tools and API弃用 Pack200 工具和 API

2.14. JDK10(12特性-2018年3月)

  1. 局部变量类型推断,类似JS可以通过var来修饰局部变量,编译之后会推断出值的真实类型
  2. 不可变集合的改进
  3. 并行全垃圾回收器 G1,来优化G1的延迟
  4. 线程本地握手,允许在不执行全局VM安全点的情况下执行线程回调,可以停止单个线程,而不需要停止所有线程或不停止线程
  5. Optional新增orElseThrow()方法
  6. 类数据共享
  7. Unicode 语言标签扩展
  8. 根证书
286:Local-Variable Type Inference
296:Consolidate the JDK Forest into a Single Repository
304:Garbage-Collector Interface
307:Parallel Full GC for G1
310:Application Class-Data Sharing
312:Thread-Local Handshakes
313:Remove the Native-Header Generation Tool (javah)
314:Additional Unicode Language-Tag Extensions
316:Heap Allocation on Alternative Memory Devices
317:Experimental Java-Based JIT Compiler
319:Root Certificates
322:Time-Based Release Versioning

2.15. JDK9(91特性-2017年9月)

Java 9 提供了超过150项新功能特性,包括备受期待的模块化系统、可交互的 REPL 工具:jshell,JDK 编译工具,Java 公共 API 和私有代码,以及安全增强、扩展提升、性能管理改善等。

  1. 模块化
  2. 提供了List.of()、Set.of()、Map.of()和Map.ofEntries()等工厂方法
  3. 接口支持私有方法
  4. Optional 类改进
  5. 多版本兼容Jar包
  6. JShell工具
  7. try-with-resources的改进
  8. Stream API的改进
  9. 设置G1为JVM默认垃圾收集器
  10. 支持http2.0和websocket的API
102:Process API Updates流程 API 更新
110:HTTP 2 ClientHTTP 2 客户端
143:Improve Contended Locking改进竞争锁定
158:Unified JVM Logging统一 JVM 日志记录
165:Compiler Control编译器控制
193:Variable Handles变量句柄
197:Segmented Code Cache分段代码缓存
199:Smart Java Compilation, Phase Two智能 Java 编译,第二阶段
200:The Modular JDK模块化 JDK
201:Modular Source Code模块化源代码
211:Elide Deprecation Warnings on Import Statements消除导入语句上的弃用警告
212:Resolve Lint and Doclint Warnings解决 Lint 和 Doclint 警告
213:Milling Project CoinMilling Project Coin
214:Remove GC Combinations Deprecated in JDK 8删除 JDK 8 中弃用的 GC 组合
215:Tiered Attribution for javacjavac 的分层归因
216:Process Import Statements Correctly正确处理导入语句
217:Annotations Pipeline 2.0注释管道 2.0
219:Datagram Transport Layer Security (DTLS)数据报传输层安全性 (DTLS)
220:Modular Run-Time Images模块化运行时映像
221:Simplified Doclet API简化的 Doclet API
222:jshell: The Java Shell (Read-Eval-Print Loop)jshell:Java Shell(读取-求值-打印循环)
223:New Version-String Scheme新增版本字符串方案
224:HTML5 JavadocHTML5 Javadoc
225:Javadoc SearchJavadoc 搜索
226:UTF-8 Property FilesUTF-8 属性文件
227:Unicode 7.0Unicode 7.0
228:Add More Diagnostic Commands添加更多诊断命令
229:Create PKCS12 Keystores by Default默认创建 PKCS12 密钥库
231:Remove Launch-Time JRE Version Selection删除启动时 JRE 版本选择
232:Improve Secure Application Performance提高安全应用程序性能
233:Generate Run-Time Compiler Tests Automatically自动生成运行时编译器测试
235:Test Class-File Attributes Generated by javac测试由 javac 生成的类文件属性
236:Parser API for NashornNashorn 的解析器 API
237:Linux/AArch64 PortLinux/AArch64 端口
238:Multi-Release JAR Files多版本 JAR 文件
240:Remove the JVM TI hprof Agent删除 JVM TI hprof 代理
241:Remove the jhat Tool删除 jhat 工具
243:Java-Level JVM Compiler InterfaceJava 级 JVM 编译器接口
244:TLS Application-Layer Protocol Negotiation ExtensionTLS 应用层协议协商扩展
245:Validate JVM Command-Line Flag Arguments验证 JVM 命令行标志参数
246:Leverage CPU Instructions for GHASH and RSA利用 GHASH 和 RSA 的 CPU 指令
247:Compile for Older Platform Versions针对旧平台版本进行编译
248:Make G1 the Default Garbage Collector将 G1 设为默认垃圾收集器
249:OCSP Stapling for TLSTLS 的 OCSP 装订
250:Store Interned Strings in CDS Archives将内部字符串存储在 CDS 存档中
251:Multi-Resolution Images多分辨率图像
252:Use CLDR Locale Data by Default默认使用 CLDR 语言环境数据
253:Prepare JavaFX UI Controls & CSS APIs for Modularization准备用于模块化的 JavaFX UI 控件和 CSS API
254:Compact Strings压缩字符串
255:Merge Selected Xerces 2.11.0 Updates into JAXP将选定的 Xerces 2.11.0 更新合并到 JAXP
256:BeanInfo AnnotationsBeanInfo Annotations
257:Update JavaFX/Media to Newer Version of GStreamer将 JavaFX/Media 更新到较新版本的 GStreamer
258:HarfBuzz Font-Layout EngineHarfBuzz 字体布局引擎
259:Stack-Walking APIStack-Walking API
260:Encapsulate Most Internal APIs封装大多数内部 API
261:Module System模块系统
262:TIFF Image I/OTIFF 图像 I/O
263:HiDPI Graphics on Windows and LinuxWindows 和 Linux 上的 HiDPI 图形
264:Platform Logging API and Service平台日志记录 API 和服务
265:Marlin Graphics RendererMarlin 图形渲染器
266:More Concurrency Updates更多并发更新
267:Unicode 8.0Unicode 8.0
268:XML CatalogsXML 目录
269:Convenience Factory Methods for Collections集合的便捷工厂方法
270:Reserved Stack Areas for Critical Sections保留关键部分的堆栈区域
271:Unified GC Logging统一 GC 日志记录
272:Platform-Specific Desktop Features特定于平台的桌面功能
273:DRBG-Based SecureRandom Implementations基于 DRBG 的 SecureRandom 实现
274:Enhanced Method Handles增强的方法句柄
275:Modular Java Application Packaging模块化 Java 应用程序打包
276:Dynamic Linking of Language-Defined Object Models语言定义的对象模型的动态链接
277:Enhanced Deprecation增强的弃用
278:Additional Tests for Humongous Objects in G1G1 中巨大对象的附加测试
279:Improve Test-Failure Troubleshooting改进测试失败故障排除
280:Indify String Concatenation指示字符串连接
281:HotSpot C++ Unit-Test FrameworkHotSpot C++ 单元测试框架
282:jlink: The Java Linkerjlink:Java 链接器
283:Enable GTK 3 on Linux在 Linux 上启用 GTK 3
284:New HotSpot Build System新的 HotSpot 构建系统
285:Spin-Wait Hints旋转等待提示
287:SHA-3 Hash AlgorithmsSHA-3 哈希算法
288:Disable SHA-1 Certificates禁用 SHA-1 证书
289:Deprecate the Applet API弃用 Applet API
290:Filter Incoming Serialization Data过滤传入的序列化数据
291:Deprecate the Concurrent Mark Sweep (CMS) Garbage Collector弃用并发标记扫描 (CMS) 垃圾收集器
292:Implement Selected ECMAScript 6 Features in Nashorn在 Nashorn 中实现选定的 ECMAScript 6 功能
294:Linux/s390x PortLinux/s390x 端口
295:Ahead-of-Time Compilation提前编译
297:Unified arm32/arm64 Port统一 arm32/arm64 端口
298:Remove Demos and Samples删除演示和示例
299:Reorganize Documentation重新组织文档

2.16. JDK8(10特性-2014年3月)

  1. Lambda表达式
  2. 新的日期API
  3. 引入Optional
  4. 使用Base64
  5. 接口的默认方法和静态方法
  6. 新增方法引用格式
  7. 新增Stream类
  8. 注解相关的改变
  9. 支持并行(parallel)数组
  10. 对并发类(Concurrency)的扩展。

最后更新:

个人博客记录个人技术, 管理相关