vlambda博客
学习文章列表

Java 的各版本与其新特性

最近看 Spring framework 6、Spring Boot 3、Elasticsearch 8.0 这些都得使用 Java 17 了,而 Kafka 3.0 开始也弃用了 Java 8。正好自己一直没有系统性地去了解一下 Java 9 以后各个新版本的特性,所以自己总结了一下各个 Java 版本的特性,整理好以供参考和学习。

Spring framework 6 消息来源:https://spring.io/blog/2021/09/02/a-java-17-and-jakarta-ee-9-baseline-for-spring-framework-6

Spring Boot 3 消息来源:https://spring.io/blog/2022/01/20/spring-boot-3-0-0-m1-is-now-available

Elasticsearch 8.0 消息来源:https://www.elastic.co/guide/en/elasticsearch/reference/8.0/migrating-8.0.html

Kafka 3.0 消息来源:https://kafka.apache.org/downloads


不过,Spring 和 Kafka 的新版本文档截至目前(2022.2.21)还没更新过来,里面还有支持 Java 8 的语句没修改…… 不禁感叹论时效性的话,还是需要关注各个框架的官宣文稿啊

Kafka 3.1.x 文档:https://kafka.apache.org/documentation/#java

Spring framework 6.0.0 文档:https://docs.spring.io/spring-framework/docs/6.0.0-SNAPSHOT/reference/html/overview.html#overview

Java 各版本的简略新特性表

版本 发布时间 新特性
1.0 1996 语言本身、Java 虚拟机、Applet、AWT
1.1 1997 内部类、反射、JAR 文件格式、JDBC、JavaBeans、RMI
1.2 1998 strictfp 修饰符、Java 类库的 Collections 集合类、J2SE \ J2EE \ J2ME 体系、EJB、Java Plug-in、Java IDL、Swing、JIT 即时编译器
1.3 2000 Java 类库的数学运算和新的 Timer API 等、JNDI 开始作为一项平台级服务、使用 CORBA IIOP 实现 RMI、提供大量新的 Java 2D API、新添加 Java Sound 类库
1.4 2002 断言、正则表达式、异常链、NIO、日志类、XML 解析器、XSLT 转换器
5.0 2004 泛型类、遍历循环(for each 循环)、可变长参数、自动装箱、元数据(动态注解)、枚举、静态导入、改进了 JMM(Java 内存模型)、提供了 java.util.concurrent(JUC)并发包
6 2006 启用Java EE 6 \ Java SE 6 \ Java ME 6的新命名来代替J2EE \ J2SE \ J2ME的产品线命名方式、提供初步的动态语言支持、提供编译期注解处理器、微型 HTTP 服务器 API、对 Java 虚拟机内部做了大量改进(锁与同步、垃圾收集、类加载等方面的实现)
7 2011.7 基于字符串的 switch、钻石操作符、二进制字面量、异常处理改进、提供新的 G1 收集器、加强对非 Java 语言的调用支持、可并行的类加载架构
8 2014.3 Lambda 表达式、包含默认方法的接口、流和日期/时间库、内置Nashorn JavaScript引擎的支持、彻底移除 HotSpot 的永久代
9 2017.9 Jigsaw 模块化功能、接口私有方法、Try-With Resources、@SafeVarargs注释、集合工厂方法、Process API改进、流API改进、增强若干工具(JS Shell、JLink、JHSDB等)、整顿了 HotSpot 各个模块各自为战的日志系统、支持HTTP 2客户单API
10 2018.3 局部变量的类型推断、应用类数据共享、向G1引入并行Full GC、线程局部管控、统一源仓库、统一垃圾收集器接口、统一即时编译器接口(引入新的Graal即时编译器)
11 2018.9 ZGC 垃圾收集器、本地变量类型推断、字符串加强、集合加强、Stream 加强、Optional 加强、InputStream 加强、HTTP Client API、一个命令编译运行源代码
12 2019.3 Switch 表达式(预览)、Java 微测试套件(JMH)、Shenandoah垃圾收集器、JVM常量API、默认类数据共享归档文件、可终止的G1 Mixed GC、G1及时返回未使用的已分配内存
13 2019.9 增强 ZGC 释放未使用内存、Socket API 重构、Switch 表达式扩展(预览功能)、文本块(预览功能)
14 2020.3 完全支持改进的 switch 表达式、instanceof 支持模式匹配、record 特性、NullPointerException 精确到变量、加入了 Java 打包工具 jpackage 的预览版
15 2020.9 ZGC 将从实验功能升级为产品、char 在 CharSequence 中添加了 isEmpty 默认方法、支持 Unicode 13.0、隐藏类、TreeMap 方法的专用实现、增加了为远程JMX配置第三个端口的能力
16 2021.3 record 正式使用、jpackage 工具正式使用、instanceof 正式使用
17 2021.9 增强了伪随机数算法、移除 AOT 提前编译和 JIT 即时编译的功能、sealed修饰的类和接口限制其他的类或者接口的扩展和实现、进一步增强了switch语法的模式匹配

较早的版本特性参考了《Java 核心技术:卷I 基础知识(原书第11版)》和《深入理解 Java 虚拟机:JVM 高级特性与最佳实践(第3版)》

JDK 8 ~ 17 各版本变化简单总结

需要注意,OpenJDK 和 Oracle 在具体细节上会有区别,以下列表中斜体为 OpenJDK 文档中提到的变化。

需要查看详情的话,请参考其他几篇相关的总结:

  • 《JDK 9 ~ 17 各个版本的重要新特性》

  • 《JDK 9 ~ 17 各个版本删除的功能和选项》

  • 《JDK 9 ~ 17 各个版本弃用的功能和选项》

  • 《JDK 9 ~ 17 各个版本的其他新特性》

JDK 8

具体常用的特性可以参考《Java 8 实战》,感觉很详细

所属范围 新特性
语言 Lambda 表达式、方法引用、接口默认方法、重复注解、类型注解(Type Annotation)、改进的类型推断、方法参数反射
核心库 java.util.stream 包中的类提供 Stream API、java.util.Optional、具有键冲突的 HashMap 的性能改进(红黑树)、Rhino javascript 引擎已被Nashorn Javascript 引擎 取代、
IO 和 NIO ( SelectorProvider 基于 Solaris 事件端口机制的 Solaris 新实现、减小 <JDK_HOME>/jre/lib/charsets.jar 文件大小、 java.lang.String(byte[],*)构造函数和方法 java.lang.String.getBytes() 的性能改进)、
并行数组排序、标准编码和解码 Base64、无符号算术支持、
网络(类 java.net.URLPermission 已添加、类 java.net.HttpURLConnection 中如果安装了安全管理器则调用该请求以打开连接需要权限)、
并发( java.util.concurrent包新类和接口、 java.util.concurrent.ConcurrentHashMap 类新方法以支持基于新添加的流工具和 lambda 表达式的聚合操作、 java.util.concurrent.atomic 包新类以支持可扩展的可更新变量、 java.util.concurrent.ForkJoinPool 类新方法以支持公共池、添加类 java.util.concurrent.locks.StampedLock以提供基于能力的锁,该锁具有三种用于控制读/写访问的模式)
JVM 添加了硬件内在函数以使用高级加密标准 (AES)、删除 PermGen、Java 编程语言中的默认方法由方法调用的字节码指令支持
工具 jjs 命令以调用 Nashorn 引擎、 java 命令启动 JavaFX 应用程序、 java 手册页已重新设计、 jdeps 命令行工具用于分析类文件、Java 管理扩展 (JMX) 提供对诊断命令的远程访问、 jarsigner 工具用于向时间戳权威 (TSA) 请求签名时间戳的选项、
javac 命令(可用于存储形式参数名称并使反射 API 能够检索形式参数名称的 -parameters选项、正确实施 Java 语言规范 (JLS) 第 15.21 节中相等运算符的类型规则、支持在运行 javadoc 时生成的文件中检查可能导致各种问题的问题的评论内容、提供了根据需要生成本机标头的能力)、
Pack200(对 JSR 292 引入的常量池条目和新字节码的支持、支持由 JSR-292、JSR-308 和 JSR-335 指定的类文件更改)、
JDBC(JDBC-ODBC 桥已被删除、JDBC 4.2 引入了新特性)、
包含 Java DB 10.10、包括 Java Mission Control 5.3
javadoc 支持新的 DocTree API、支持新的 Javadoc Access API、现在支持在运行 javadoc 时生成的文件中检查可能导致各种问题的问题的评论内容
部署 对于沙盒小程序和 Java Web Start 应用程序, URLPermission 现在用于允许连接回到启动它们的服务器而 SocketPermission不再允许、在所有安全级别的主 JAR 文件的 JAR 文件清单中都需要 Permissions 属性
国际化 Unicode 6.2.0、采用 Unicode CLDR 数据和 java.locale.providers 系统属性、新的日历和语言环境 API、能够将自定义资源包安装为扩展
客户端库 JavaFX(新的 Modena 主题、 SwingNode类使开发人员能够将 Swing 内容嵌入到 JavaFX 应用程序中、新的 UI 控件、 javafx.print 包为 JavaFX 打印 API 提供公共类、3D 图形功能现在包括 3D 形状 \ 相机 \ 灯光 \ 子场景 \ 材质 \ 拾取和抗锯齿、 WebView 提供了新功能和改进、增强的文本支持、对 Hi-DPI 显示器的支持、CSS Styleable* 类成为公共 API、新 ScheduledService 类允许自动重启服务、可用于 ARM 平台)
安全 默认启用客户端 TLS 1.2、 AccessController.doPrivileged 使代码能够断言其权限的子集、更强大的基于密码的加密算法、JSSE 服务器中的 SSL/TLS 服务器名称指示 (SNI) 扩展支持、支持 AEAD 算法、KeyStore 增强功能、SHA-224 消息摘要、增强对 NSA Suite B 加密的支持、更好地支持高熵随机数生成、 java.security.cert.PKIXRevocationChecker用于配置 X.509 证书吊销检查、适用于 Windows 的 64 位 PKCS11、Kerberos 5 重放缓存中的新 rcache 类型、支持 Kerberos 5 协议转换和约束委派、默认禁用 Kerberos 5 弱加密类型、GSS-API/Kerberos 5 机制的未绑定 SASL、多个主机名的 SASL 服务、JNI 桥接到 Mac OS X 上的本机 JGSS、在 SunJSSE 提供程序中支持更强的临时 DH 密钥、支持 JSSE 中的服务器端密码套件首选项自定义

JDK 9

所属范围 新特性 删除 弃用
规范 模块系统、新的版本字符串方案

语言 打磨Coin项目(@SafeVargs 可用于私有实例方法、等价 final 变量可用于 try-with-resouces 语句、接口私有方法、禁止将下划线作为合法标识符、匿名类钻石标识符)

核心库 集合的便利工厂方法、紧凑字符串、平台日志 API 和服务、并发包更新、增强的方法句柄、增强 @Deprecated 注解、自旋等待提示、过滤传入的序列化数据、进程 API 更新、变量处理器、XML 目录 API、堆栈遍历 API、将选定的 Xerces 2.11.0 更新合并到 JAXP、Nashorn 的解析器 API、在 Nashorn 中实现选定的 ECMAScript 6 功能

JVM 编译器控制、分段代码缓存、语言定义对象模型的动态链接、G1 成为默认垃圾收集器、提高 G1 可用性确定性和性能、统一 JVM 日志记录、统一 GC 日志记录 JDK 8 中已弃用的 GC 组合 CMS 垃圾收集器
工具 jshell、更多诊断命令、多版本JAR文件、为旧平台版本编译、jlink 启动时JRE版本选择、JVM TI hprof代理、jhat
javadoc 简化的Doclet API、支持 HTML 5、支持搜索、模块系统

部署 增强的 Java 控制面板、模块化 Java 应用程序打包
Java 插件、Applet API
国际化 Unicode 8.0、默认启用 CLDR 区域设置数据、UTF-8 属性文件

客户端库 多分辨率图像、为模块化准备 JavaFX UI 控件和 CSS API、BeanInfo 注解、TIFF 图像 I/O、Windows 和 Linux 上的 HiDPI 图形、特定于平台的桌面功能、在 Linux 上启用 GTK 3

安全 DTLS、TLS应用层协议协商扩展、TLS的OCSP Stapling、利用 GHASH 和 RSA 的 CPU 指令、基于 DRBG 的 SecureRandom 实现、禁用 SHA-1 证书、默认创建 PKCS 12 密钥库、SHA-3 哈希算法

JDK 10

所属范围 新特性 删除 弃用
语言 局部变量的类型推断 var

核心库 Optional.orElseThrow()、不可修改集合 API、基于时间的发布版本控制 Runtime.getLocalizedInputStream 和 getLocalizedOutputStream 方法、RMI 服务器端多路复用协议支持、
JVM G1 的并行 Full GC、
垃圾收集器接口应用程序类-数据共享(CDS)线程本地握手在用户指定的备用内存设备(例如 NV-DIMM)上分配 Java 对象堆实验性基于 Java 的 JIT 编译器 Graal
FlatProfiler、过时的 -X 选项
工具 增强 for 循环的字节码生成 Native-Header 生成工具 (javah)、Java Launcher 的数据模型选项 -d32 和 -d64
javadoc 支持多种样式表、重写不改变规范的方法、@Summary 注解 旧的(JDK 6、JDK 7 和 JDK 8 时代)标准 Doclet
部署 将 JDK 森林整合到一个存储库中 常见的 DOM API
svc 禁用 JRE 上次使用跟踪的系统属性、开箱即用 JMX 代理的散列密码
SNMP 监控支持
国际化 额外的 Unicode 语言标签扩展

客户端库
对使用旧 LookAndFeel 的支持、JavaFX 应用程序生命周期的 HostServicesgetWebContext 方法、JavaFX 中的 T2K Rasterizer 和 ICU 布局引擎、JavaFX 中已弃用的 VP6/FXM/FLV 代码
安全 根证书、TLS Session Hash 和扩展的 Master Secret 扩展支持 已弃用的 Pre-1.2 SecurityManager 方法和字段、policytool 工具、com.sun.security.auth 中已弃用的类 java.security.{Certificate,Identity,IdentityScope,Signer} APIs、 java.security.acl APIs、 javax.security.auth.Policy API

JDK 11

所属范围 新特性 删除 弃用
语言 Lambda 参数的局部变量使用 var 语法

核心库 HTTP 客户端(标准)、新的 Collection.toArray(IntFunction) 默认方法、 sun.misc.Unsafe.defineClass、Thread.destroy() 和 Thread.stop(Throwable) 方法、sun.nio.ch.disableSystemWideOverlappingFileLockCheck 属性 ThreadPoolExecutor 不应该指定对终结方法的依赖、Nashorn JavaScript 引擎
JVM 编译器线程的延迟分配、ZGC 可扩展的低延迟垃圾收集器(实验性)、Epsilon 无操作垃圾收集器、低开销堆分析、基于嵌套的访问控制、
动态类文件常量改进 Aarch64 内在函数飞行记录仪(Flight Recorder)

-XX+AggressiveOpts、对商业功能的过时支持
工具 启动单文件源代码程序 Java Mission Control (JMC)、Java EE 和 CORBA 模块 Pack200 工具和 API
部署
Java 部署技术
svc
JVM-MANAGEMENT-MIB.mib、SNMP 代理
国际化 Unicode 10、将语言环境数据更新为 Unicode CLDR v33 sun.locale.formatasdefault 属性
客户端库
JavaFX、com.sun.awt.AWTUtilities 类、Oracle JDK 中的 Lucida 字体、appletviewer Launcher、Oracle JDK 的 javax.imageio JPEG 插件不再支持带 alpha 的图像 NSWindowStyleMaskTexturedBackground
安全 与 Curve25519 和 Curve448 的 JEP 324 密钥协议、Brainpool EC 支持、ChaCha20 和 Poly1305 加密算法、增强的密钥库机制、向 SunMSCAPI 添加 RSASSA-PSS 签名支持、传输层安全 (TLS) 1.3、支持 RFC 8009 中定义的 Kerberos 5 的 HMAC-SHA2 的 AES 加密
基于流的 GSSContext 方法

JDK 12

所属范围 新特性 删除 弃用
语言 switch 表达式(预览)

核心库 Linux 上的POSIX_SPAWN 选项、JVM 常量 API、紧凑数字格式 FileInputStream 和 FileOutputStream 中的 finalize 方法、 java.util.ZipFile/Inflator/Deflator 中的 finalize 方法
JVM ZGC 并发类卸载、在备用内存设备上分配老一代 Java 堆、HotSpot Windows 操作系统检测正确识别 Windows Server 2019、命令行标志 -XX+ExtensiveErrorReports、
Shenandoah:一种低暂停时间的垃圾收集器(实验性)仅维护单个 AArch64 端口默认CDS档案G1 的可中止混合收集立即从 G1 返回未使用的已提交内存

-XX+/-MonitorInUseLists
工具 jdeps --print-module-deps 报告传递依赖、
微基准套件(JMH)
javac 对 6/1.6 源、目标和发布值的支持
svc
从 Oracle 生成的构建中的 YY.M 供应商版本字符串
国际化 Unicode 11、日文新年号的方形字符支持

客户端库
com.sun.awt.SecurityWarning 类
安全 禁止和允许 java.security.manager 系统属性的选项、-groupname 选项已添加到 keytool 密钥对生成、新的 Java Flight Recorder (JFR) 安全事件、自定义 PKCS12 密钥库的生成、ChaCha20 和 Poly1305 TLS、支持 krb5.conf 中的dnscanonicalizehostname标志 GTE CyberTrust 全局根 默认 Keytool -keyalg 值

JDK 13

所属范围 新特性 删除 弃用
语言 switch表达式(预览版)、文本块(预览版)

核心库 FileSystems.newFileSystem(Path, Map ) 方法、新的 java.nio.ByteBuffer Bulk get/put 方法传输字节而不考虑缓冲区位置、java.time 日本新纪元名令和、
重新实现旧的 Socket API
运行时跟踪方法、JDK 1.4 之前的 SocketImpl 实现 已弃用的 rmic 删除工具
JVM ZGC 取消提交未使用的内存、-XXSoftMaxHeapSize 标志、ZGC 最大堆大小增加到 16TB、动态 CDS 归档 VM 选项 -XX+AggressiveOpts 不推荐使用的 Java 选项 -Xverifynone 和 -noverify
工具 使用命名空间支持创建 DOM 和 SAX 工厂的新方法

javadoc
从 javadoc 工具中删除旧功能
国际化 Unicode 12.1

客户端库
awt.toolkit 系统属性 macOS 上已弃用且不受支持的 Swing Motif 外观
安全 CRL 的可配置读取超时、用于显示 TLS 配置信息的新 keytool -showinfo -tls 命令、支持下一代 MS 加密 (CNG)、SunPKCS11 Provider 升级支持 PKCS#11 v2.40、支持 TLS 中的 X25519 和 X448、JSSE 中没有服务器端状态的会话恢复、允许限制 SASL 机制、规范 XML 1.1 URI 的新字符串常量、[xmldsig] 添加 KeyValueEC_TYPE、在 Windows 上添加了默认的本机 GSS-API 库、支持 Kerberos 跨领域引用 (RFC 6806) SunJSSE 提供程序不再支持重复的 RSA 服务、T-Systems Deutsche Telekom 根 CA 2 证书、两个 DocuSign 根 CA 证书、两个 Comodo 根 CA 证书、内部 com.sun.net.ssl 包、从 SunJSSE Provider 中删除实验性 FIPS 140 兼容模式 不推荐使用的 javax.security.cert API

JDK 14

所属范围 新特性 删除 弃用
语言 记录(Record)(预览版)、
instanceof 的模式匹配(预览版)switch 表达式文本块(第二次预览)


核心库 会计货币格式支持、明确 ReadableByteChannel.read() 规范及相关方法、
非易失性映射字节缓冲区外部内存访问 API(孵化器)
sun.nio.cs.map 系统属性 不推荐线程 suspend / resume
JVM Windows 和 macOS 上的 ZGC(实验性)、Parallel GC 改进、G1 的 NUMA 感知内存分配、JFR 事件流、
有用的 NullPointerExceptions
并发标记清除 (CMS) 垃圾收集器 弃用 ParallelScavenge + SerialOld GC 组合、
弃用 Solaris 和 SPARC 端口
工具 允许默认调用可发现的 javac 插件、SAX ContentHandler 处理 XML 声明的新方法、
打包工具(孵化器)
Pack200 工具和 API
部署
netscape.javascript.JSObjectgetWindow 方法
客户端库

不推荐使用 NSWindowStyleMaskTexturedBackground
安全 默认禁用 TLS、CertPath 和签名 JAR 中的弱命名曲线、Apache Santuario 库更新到版本 2.1.4 已弃用的 java.security.acl API、默认 keytool -keyalg 值 弃用了旧版椭圆曲线以进行删除、不推荐使用 OracleUcrypto JCE Provider

JDK 15

所属范围 新特性 删除 弃用
语言 隐藏类、文本块、
密封类(预览版)instanceof 的模式匹配(第二次预览)记录(Record)(第二次预览)


核心库 为 CharSequence 添加了 isEmpty 默认方法、对 SOINCOMINGNAPI_ID 的支持、 TreeMap 方法的特殊实现、
重新实现旧的 DatagramSocket API外部内存访问 API(第二个孵化器)
最终弃用的 Solaris 特定 SOFLOWSLA 套接字选项、RMI 静态存根编译器 (rmic)、Nashorn JavaScript 引擎 RMI 激活
JVM 为调试模式添加到 jhsdb 的新选项、
ZGC:可扩展的低延迟垃圾收集器(产品)Shenandoah:低暂停时间垃圾收集器(产品)
已过时 -XXUseAdaptiveGCBoundary、
删除 Solaris 和 SPARC 端口
-XXForceNUMA 选项、禁用偏向锁定和不推荐使用的偏向锁定标志
工具 为 jstatd 添加了用于指定 RMI 连接器端口号的新选项、为 jcmd 添加了用于编写 gzipped 堆转储的新选项

javadoc


部署

NSWindowStyleMaskTexturedBackground
svc 为远程 JMX 配置第三个端口的功能 已弃用的常量 RMIConnectorServer.CREDENTIAL_TYPES
国际化 Unicode 13.0

安全 为 jarsigner 添加了撤销检查、如果使用了弱算法工具会发出警告、SunJCE Provider 支持基于 SHA-3 的 Hmac 算法、用于配置 TLS 签名方案的新系统属性、支持 certificate_authorities 扩展、支持 krb5.conf 中的规范化、支持跨域MSSFU、
爱德华兹曲线数字签名算法 (EdDSA)
Comodo 根 CA 证书、DocuSign 根 CA 证书、已弃用的 SSLSession.getPeerCertificateChain() 方法实现、com.sun.net.ssl.internal.ssl.Provider 名称 默认禁用本机 SunEC 实现、为先前弃用的 ContentSigner API 添加了 forRemoval=true

JDK 16

所属范围 新特性 删除 弃用
语言 密封类(第二次预览)、记录(Record)、instanceof 的模式匹配

核心库 外部链接器 API(孵化器)、默认情况下对 JDK 内部进行强封装、外部内存访问 API(第三个孵化器)、基于值的类的警告、添加 InvocationHandler::invokeDefault 方法用于 Proxy 的默认方法支持、Unix 域套接字、java.time 格式添加了日时段支持、添加 Stream.toList() 方法
最终弃用的线程组stop、destroy、isDestroyed、setDaemon 和 isDaemon
JVM 矢量 API(孵化器)、改进的编译命令标志、ZGC 并发堆栈处理、在 G1 中同时取消提交内存、默认启用新的 jdk.ObjectAllocationSample 事件、弹性元空间、
启用 C++14 语言功能Alpine Linux 端口Windows/AArch64 端口
去除实验特征 AOT 和 Graal JIT、已弃用的跟踪标志已过时,必须用统一日志等效项替换 部分 Signal-Chaining API 已弃用
工具 打包工具

javadoc


部署


基础设施 从 Mercurial 迁移到 Git迁移到 GitHub

国际化


客户端库
删除 java.awt.PeerFixer
安全 对 RSASSA-PSS 和 EdDSA 的签名 JAR 支持、 SUN \ SunRsaSign 和 SunEC 提供商支持基于 SHA-3 的签名算法、 jarsigner 保留 POSIX 文件权限和符号链接属性、在 keytool -printcert 和 -printcrl 命令中添加了 -trustcacerts 和 -keystore 选项、 SunPKCS11 Provider 支持 SHA-3 相关算法、改进证书链处理、 改进 TLS 应用层协议协商 (ALPN) 值的编码、EdDSA 签名算法的 TLS 支持 1024 位密钥的根证书、传统的椭圆曲线 弃用了将 DN 表示为主体或字符串对象的 java.security.cert API

JDK 17

所属范围 新特性 删除 弃用
语言 密封类、switch 模式匹配(预览版)、
恢复始终严格的浮点语义


核心库 DatagramSocket 可直接用于加入多播组、在 macOS 上添加对 UserDefinedFileAttributeView 的支持、增强的伪随机数生成器、外部函数和内存 API(孵化器)、控制台字符集 API、用于反序列化的 JDK Flight Recorder 事件、实现特定于上下文的反序列化过滤器、本机字符编码名称的系统属性、添加 java.time.InstantSource、十六进制格式和解析实用程序、
强封装 JDK 内部矢量 API(第二个孵化器)
强封装 JDK 内部相关的选项、sun.misc.Unsafe::defineAnonymousClass、RMI 激活 弃用 Socket 实现工厂机制
JVM 理想图可视化器(IGV)的现代化、实验编译器黑洞支持、HotSpot JVM中新的类层次分析实现、macOS/AArch64 端口、统一日志支持异步日志刷新 实验性 AOT 和 JIT 编译器 弃用 JVM TI 堆函数 1.0
工具


javadoc 错误消息中的源详细信息、“New API”的新页面和改进的“Deprecated”页面、包摘要页面上的“相关包”

部署


svc


国际化


客户端库 新的 macOS 渲染管道、 用于访问大图标的新 API
弃用 Applet API 以进行删除
安全 支持在 Keytool -genkeypair 命令中指定签名者、SunJCE Provider 使用 AES 密码支持 KW 和 KWP 模式、新的 SunPKCS11 配置属性、如果 PKCS11 库支持,SunPKCS11 提供程序支持 ChaCha20-Poly1305 Cipher 和 ChaCha20 KeyGenerator、具有系统属性的可配置扩展、如果 defaulttktenctypes 或 defaulttgsenctypes 不存在,则使用 allowed_enctypes Telia 公司的 Sonera Class2 CA 证书 弃用安全管理器以进行删除、在 Kerberos 中弃用 3DES 和 RC4


一些原始资料的链接

Oracle

Oracle Java 的各个版本新特性文档:

简单来说,就是在 Oracle 的 Java SE 页面(https://docs.oracle.com/en/java/javase/index.html)里面点各个版本,然后找到“What's New”的链接。11 版本前的需要特别找一下,页面不一样。

版本 文档链接
5.0 https://docs.oracle.com/javase/1.5.0/docs/relnotes/features.html
6 https://www.oracle.com/java/technologies/javase/features.html
7 https://www.oracle.com/java/technologies/javase/jdk7-relnotes.html
8 https://www.oracle.com/java/technologies/javase/8-whats-new.html
9 https://docs.oracle.com/javase/9/whatsnew/toc.htm
10 https://www.oracle.com/java/technologies/javase/10-relnote-issues.html
11 https://www.oracle.com/java/technologies/javase/11-relnote-issues.html#NewFeature
12 https://www.oracle.com/java/technologies/javase/12-relnote-issues.html#NewFeature
13 https://www.oracle.com/java/technologies/javase/13-relnote-issues.html#NewFeature
14 https://www.oracle.com/java/technologies/javase/14-relnote-issues.html#NewFeature
15 https://www.oracle.com/java/technologies/javase/15-relnote-issues.html#NewFeature
16 https://www.oracle.com/java/technologies/javase/16-relnotes.html#NewFeature (这个地址好像有点bug,没跳到新特性介绍)
16 https://www.oracle.com/java/technologies/javase/16all-relnotes.html (16 版本含有全部子版本 release note 的地址,里面才有新特性介绍)
17 https://www.oracle.com/java/technologies/javase/17-relnote-issues.html#NewFeature

OpenJDK

版本 文档链接
6 http://openjdk.java.net/projects/jdk6/
7 http://openjdk.java.net/projects/jdk7/
8 http://openjdk.java.net/projects/jdk8/
9 http://openjdk.java.net/projects/jdk9/
10 ~ 19 http://openjdk.java.net/projects/jdk/