热门排行
简介
Java 17 LTS 是 Java SE 平台的最新长期支持版本。 根据 Oracle 免费条款和条件许可,JDK 17 二进制文件可在生产中免费使用,并可免费重新分发。JDK 17 将根据这些条款接收更新,至少在 2024 年 9 月之前。JDK 是使用 Java 编程语言构建应用程序和组件的开发环境。JDK 包括用于开发和测试用 Java 编程语言编写并在 Java 平台上运行的程序的工具。本次提供的是Java SE Development Kit(JDK) 17 for Windows官方版本下载,欢迎需要此款工具的朋友前来下载使用。
JDK17新特性详解
预览版:该功能在当前版本可以使用,如果效果不是很好的话,可能以后的其他版本就会删去该功能。
最终版:该功能在之前版本效果很好,之后的每个版本中都会存在该功能。
1、switch新增模式(预览版)
使用 switch 表达式和语句的模式匹配以及对模式语言的扩展来增强 Java 编程语言。将模式匹配扩展到 switch 允许针对多个模式测试表达式,每个模式都有特定的操作,以便可以简洁安全地表达复杂的面向数据的查询。基于JDK16 instanceof模式匹配(最终版)优化升级switch使用方法,先回忆下JDK16模式匹配(最终版)
if (obj instanceof String s) {
// 直接使用 s拼接字符串
s += "heihei";
} else if (obj instanceof Integer i){
// 直接使用i进行整型逻辑运算
i += 1;
}
switch可直接用instanceof模式匹配选择(需要提前考虑null判断)
Object o;
switch (o) {
case null -> System.out.println("首先判断对象是否为空,走空指针逻辑等后续逻辑");
case String s -> System.out.println("判断是否为字符串,s:" + s);
case record p -> System.out.println("判断是否为Record类型: " + p.toString());
case int[] arr -> System.out.println("判断是否为数组,展示int数组的长度" + ia.length);
case Integer i -> System.out.println("判断是否为Intger对象,i:" + i);
case Student s -> System.out.println("判断是否为具体学生对象,student:" + s.toString());
case UserCommonService -> System.out.println("判断是否为普通用户实现类,然后走普通用户逻辑");
case UserVipService -> System.out.println("判断是否为vip用户实现类,然后走vip用户逻辑");
default -> System.out.println("Something else");
}
2、Realed class密封类(最终版)
密封类和接口限制哪些其他类或接口可以扩展或实现它们。
public sealed interface Shape{
final class Planet implements Shape {}
final class Star implements Shape {}
final class Comet implements Shape {}
}
public abstract sealed class Test{
final class A extends Test {}
final class B extends Test {}
final class C extends Test {}
}
3、随机数增强
为伪随机数生成器 (PRNG) 提供新的接口类型和实现,包括可跳转的 PRNG 和额外的一类可拆分 PRNG 算法 (LXM)。
4、浮点运算更加严格
简化数字敏感库开发,包括java.lang.Math和java.lang.StrictMath(对开发无实际意义)
5、Parallel GC 默认启用
Parallel GC 默认启用自适应并行处理,并行GC确定java.lang.ref.Reference在垃圾收集期间用于处理实例的最佳线程数。
默认-XX:ParallelRedProcEnabled: true。在有多个线程可用于垃圾收集的机器上,明显改善了垃圾收集暂停的阶段,如果遇到垃圾收集暂停增加的情况,可以通过-XX:ParallelRedProcEnabled在命令行上指定到原始行为
6、增强TreeMap
增强JDK-8176894(TreeMap 没有对 putIfAbsent()、computeIfAbsent()、computeIfPresent()、compute() 方法的专门实现。默认实现经常导致两次树遍历,这会损害性能)
7、弃用Socket实现工厂机制
弃用并最终删除用于为java.net 包中的套接字类型静态配置系统范围工厂 的 API 点
具体如下:
* 方法:
static void ServerSocket.setSocketFactory (SocketImplFactory fac)
static void Socket.setSocketImplFactory (SocketImplFactory fac)
static void DatagramSocket.setDatagramSocketImplFactory (DatagramSocketImplFactory fac)
* Types
java. net SocketImplFactory
java.net DatagramSocketImplFactory
也可以弃用java.net SocketImplFactory 和 DatagramSocketImplFactory 类型 ,因为它们的唯一用途与上述工厂有关 设置方法。
8、统一日志支持异步日志刷新
为了避免在使用统一日志的线程中出现不希望的延迟,用户现在可以请求统一日志系统以异步模式运行。通过传递命令行选项来完成的-Xlog:async。在异步日志模式下,日志站点将所有日志消息排入缓冲区。独立线程负责将它们刷新到相应的输出。中间缓冲区是有界的。缓冲区耗尽时,将丢弃排队消息。可以使用命令行选项控制中间缓冲区的大小-XX:AsyncLogBufferSize=<bytes>。
9、新增 java.time.InstantSource
java.time.InstantSource引入了一个新界面。这个接口是一个抽象java.time.Clock,只关注当前时刻,不涉及时区。
10、javadoc工具
新的“新 API”页面和改进的“弃用”页面,JavaDoc 现在可以生成一个页面,总结最近 API 的变化。要包含的最新版本列表是使用--since命令行选项指定的。这些值用于查找@since要包含在新页面上的具有匹配标签的声明。该--since-label命令行选项提供了“新API”页面的标题文本使用。
Java SE Development Kit 17安装教程
1、在本站下载并解压缩后,双击“jdk-17_windows-x64_bin.exe”,根据安装向导提示,选择“下一步”
2、默认安装在C盘,继续“下一步”
3、正在安装,稍等片刻即可,中途不要关闭电脑
4、好了,到这里Java SE Development Kit 17就安装完成啦
安装 JDK 17 和 JRE 8 时修复 Shim 情况
当您安装 JDK 17,然后安装 JRE 8,然后运行该 java -version命令时,1.8.0输出中显示的是17。这是因为 javapath位于用户环境路径中 JDK 17 位置之前。
这是 JRE 8 安装程序的一个错误。要解决此填充程序的情况,请卸载并重新安装 JDK 17。
JDK安装疑难解答
解压期间系统错误
如果您看到错误消息:system error during decompression,则包含该TEMP目录的磁盘上可能没有足够的空间。
程序无法在 DOS 模式下运行
如果您看到错误消息:This program cannot be run in DOS mode,请执行以下操作:
打开 MS-DOS 外壳程序或命令提示符窗口。
右键单击标题栏。
选择属性。
选择程序选项卡。
单击高级。
确保未选中防止基于 MS-DOS 的程序检测 Windows 项。
选择确定。
再次选择确定。
退出 MS-DOS 外壳。
重启你的电脑。
不属于系统代码页的字符
如果安装目录不是系统区域设置代码页的一部分,则可能会出现 1722 错误。为防止出现这种情况,请确保用户和系统区域设置相同,并且安装路径仅包含作为系统区域设置代码页一部分的字符。可以在区域选项或区域设置控制面板中设置用户和系统区域设置。
相关的错误编号是 4895647。
在 JDK 卸载失败后清理注册表
有时,尝试通过 Windows添加/删除程序卸载 JDK 会 在注册表中留下一些未完全删除的 Java 条目。这些遗留的注册表项可能会导致安装新版本 Java 时出现问题。以下是清理注册表项的方法:
程序安装和卸载疑难解答(推荐方法)
手动注册表编辑
程序安装和卸载疑难解答(推荐方法)
运行程序安装和卸载疑难解答来修复损坏的注册表项,这些注册表项会阻止程序完全卸载或阻止新的安装和更新。
手动编辑注册表(仅当 Fix It 实用程序不起作用时才使用此功能)
错误地编辑您的注册表可能会严重损坏您的系统。在更改注册表之前,您应该从您的计算机备份任何有价值的数据。
使用File->Export注册表编辑器的功能在删除之前保存注册表项。如果您删除了错误的注册表项,您可以使用该File->Import功能从保存的备份文件中恢复注册表。
要删除注册表项:
确定正确的注册表项。请参阅查找 JDK 注册表项和 UninstallString 值。
突出显示该键,右键单击并选择 Delete。
出现提示时单击是。
JDK 被卸载。
在 Windows 上卸载 JDK
要卸载 JDK 17,请使用Microsoft Windows控制面板中的添加/删除程序实用程序。
在静默模式下卸载 JDK
您可以使用命令行卸载 JDK。
使用以下命令以静默模式卸载JDK:
MsiExec.exe/X{<UninstallString>}
例如,要卸载 JDK 15,请运行以下命令:
MsiExec.exe /X{E04E5624-3CF1-5E84-A439-4D8FAAA05C79}
更新日志
Java™ SE 开发工具包 17 更新 17.0.11 (JDK 17.0.11)
发布日期:2024 年 4 月 16 日
此更新版本的完整版本字符串为 17.0.11+7(其中“+”表示“内部版本”)。 版本号为 17.0.11。
IANA TZ 数据 2024a
JDK 17.0.11 包含 IANA 时区数据 2024a,其中包含以下更改:
Ittoqqortoormiit, 格陵兰岛 于 2024-03-31 更改时区。
沃斯托克, 南极洲 于 2023-12-18 更改了时区。
自 2020 年以来,南极洲凯西五次更改时区。
从 2072 年开始的巴勒斯坦时间戳的代码和数据修复。
从现在开始的时间戳的新数据文件 zonenow.tab。
哈萨克斯坦从 2024-03-01 开始在 UTC+5 上统一。
斋月过后一周,巴勒斯坦迅速崛起。
zic 不再假装支持无限期过去的 DST。
localtime 在 2422 年不再对华雷斯城进行错误处理。
安全基线
下表指定了 JDK 17.0.11 发布时 Java 运行时的安全基线:
Java 系列版本 安全基线(完整版本字符串)Security Baseline (Full Version String)
17 17.0.11+7
11 11.0.23+7
8 8U411-B09型
新功能
安全库/javax.crypto
➜ 将 XML Security for Java 更新到 3.0.3 (JDK-8319124)
XML 签名实现已更新到 Santuario 3.0.3。添加了对四种新的基于 SHA-3 的 RSA-MGF1 签名方法的支持:、 、 和 。虽然这些新算法 URI 未在 JDK 更新版本中定义,但它们可以表示为字符串文本,以便在功能上等效。SHA-3 哈希算法支持通过 JEP 287 交付给 JDK 9。在此之前发布的版本可能会使用第三方安全提供程序。SHA3_224_RSA_MGF1SHA3_256_RSA_MGF1SHA3_384_RSA_MGF1SHA3_512_RSA_MGF1javax.xml.crypto.dsig.SignatureMethod
此外,还添加了对以下 EdDSA 签名的支持:和 .虽然这些新算法 URI 未在 JDK 更新版本中定义,但它们可以表示为字符串文本,以便在功能上等效。JDK 从 JDK 15 开始支持 EdDSA。早于此版本的版本可能会使用第三方安全提供商。另一个区别是 JDK 默认情况下仍然支持 here() 函数。但是,我们建议避免在新签名中使用该函数,并替换使用该函数的现有签名。JDK 的未来版本可能会禁用并最终删除对此函数的支持,因为使用标准 Java XPath API 无法支持它。用户现在可以通过将 security 属性设置为“false”来禁用该功能。ED25519ED448javax.xml.crypto.dsig.SignatureMethodhere()here()here()jdk.xml.dsig.hereFunctionSupported
其他说明
客户端库/java.awt
➜ 大多数 Linux 桌面不支持 AWT SystemTray API (JDK-8322750)
该 API 用于桌面任务栏中的通知,并且可能包含表示应用程序的图标。在 Linux 上,由于平台错误,Gnome 桌面在任务栏中自己的图标支持已经好几年没有正常工作了。这反过来又影响了依赖于它的 JDK 的 API。java.awt.SystemTray
因此,根据现有的 Java SE 规范,只要 JDK 确定可能存在平台错误,就会返回 false。java.awt.SystemTray.isSupported()
这种影响可能是有限的,因为应用程序始终必须检查该支持。此外,某些发行版已经好几年不支持 SystemTray,除非最终用户选择安装非捆绑桌面扩展。
security-libs/java.security
➜ 添加了 R1 和 E1 根证书 (JDK-8321408)
以下根证书已添加到 cacerts 信任库中:
+ Certainly
+ certainlyrootr1
DN: CN=Certainly Root R1, O=Certainly, C=US
+ Certainly
+ certainlyroote1
DN: CN=Certainly Root E1, O=Certainly, C=US
Bug 修复
此版本还包含针对 Oracle 关键补丁更新中描述的安全漏洞的修复。
➜ 17.0.11 中修复的问题:
# JBS公司 元件 总结
1 JDK-8318951型 客户端-libs/2d JPEG 解码中的其他负值检查
2 JDK-8301846型 客户端-libs/javax.sound 使用 JFileChooser 或 COM 库时屏幕锁定后 TargetDataLine 无效
3 JDK-8299058型 核心库/java.net 连接空闲时 sun.net.httpserver.ServerImpl 中的 AssertionError
4 JDK-8321480型 核心库/java.util:i18n ISO 4217 修正案 176 更新
5 JDK-8271118 热点/编译器 C2:StressGCM 的优先级应高于基于频率的策略
6 JDK-8316679型 热点/编译器 C2 SuperWord:结果错误,如果不具有可比性,则不应在存储前移动负载
7 JDK-8274060型 热点/编译器 C2:JDK-8273454 之后的计算不正确
8 JDK-8273454 热点/编译器 C2:将 (-a)*(-b) 转换为 a*b
9 JDK-8315920型 热点/编译器 C2:“控制输入必须主导电流控制”断言失败
10 JDK-8297968型 热点/编译器 PrintOptoAssembly 崩溃
11 JDK-8321215型 热点/编译器 VSIB 寻址模式的 x86 指令编码不正确
12 JDK-8316414型 热点/编译器 C2:linux-x86 上的大字节数组克隆触发器“失败:控制流格式错误”断言失败
13 JDK-8320209型 热点/编译器 VectorMaskGen 在 x86_64 上破坏标志
14 JDK-8318889型 热点/编译器 C2:在断言后添加救助 在build_loop_late中检测到错误图
15 JDK-8317507型 热点/编译器 C2 编译失败,并显示“超出 _node_regs 数组”
16 JDK-8277919型 热点/JFR OldObjectSample 事件导致 JFR 记录中的类常量池膨胀
17 JDK-8287113型 热点/JFR JFR:定期任务线程将周期用于方法采样事件
18 JDK-8322321型 热点/运行时 添加 -XX:+VerifySharedSpaces 的手册页文档
19 JDK-8312585型 热点/运行时 将 DisableTHPStackMitigation 标志重命名为 THPStackMitigation
20 JDK-8312182型 热点/运行时 由于线程启动计时问题,THP 会导致巨大的 RSS
21 JDK-8312620型 热点/运行时 JDK-8310233 后 WSL Linux 生成崩溃
22 JDK-8312394型 热点/运行时 [Linux的]SIGSEGV 如果内核是在没有 hugepage 支持的情况下构建的
23 JDK-8323243 热点/运行时 JNI 调用抽象实例方法会损坏堆栈
24 JDK-8320208型 security-libs/java.security 将公共后缀列表更新为 b5bf572
25 JDK-8302182型 security-libs/java.security 将公共后缀列表更新为 88467c9
26 JDK-8307185型 安全库/javax.crypto:pkcs11 pkcs11 本机库在按住 GC 锁的同时对 java 代码进行 JNI 调用
27 JDK-8277307型 安全库/javax.net.ssl 在 session_ticket 和 pre_shared_key 扩展下发送的预共享密钥
28 JDK-8284910型 security-libs/javax.security PasswordCallback 中的缓冲区清理
29 JDK-8318971型 工具/jar 在处理不存在的文件时更好地处理 jar 工具的错误
30 JDK-8308245型 工具/javac 添加 -proc:full 来描述当前默认的注释处理策略
31 JDK-8298087型 xml/javax.xml.validation XML 架构验证通过 ErrorHandler 报告两次必需的属性
Java™ SE 开发工具包 17 更新 17.0.10 (JDK 17.0.10)
Java SE 17.0.10 - 捆绑补丁版本 (BPR) - 错误修复和更新
以下各节总结了所有 Java SE 17.0.10 BPR 发行版中所做的更改。BPR 版本按日期顺序在下面列出,最新的 BPR 在前。请注意,以前的 BPR 中的错误修复也包含在当前的 BPR 中。
Java SE 17.0.10.0.1 中的更改
Bug 修复
1月 16, 2024
此版本中包含先前 BPR 的修复。
Java™ SE 开发工具包 17,更新 17.0.10 (JDK 17.0.10)
1月 16, 2024
此更新版本的完整版本字符串为 17.0.10+11(其中“+”表示“内部版本”)。版本号为 17.0.10。
IANA TZ 数据 2023c
有关更多信息,请参阅 JRE 软件中的时区数据版本。
安全基线
下表指定了发布 JDK 17.0.10 时 Java 运行时的安全基线:
Java 系列版本 安全基线(完整版字符串)
17 17.0.10+11
11 11.0.22+9
8 编号:8U401-B10
使 JDK 保持最新状态
Oracle 建议在每次关键补丁更新时更新 JDK。 为了确定某个版本是否为最新版本,“安全基线”页可以 用于确定每个发行系列的最新版本。
包含安全漏洞修复的关键补丁更新将提前一年公布 重要补丁更新、安全警报和公告。 建议不要在计划的下一个关键补丁更新之后使用此 JDK(版本 17.0.10) 2024年4月16日。
管理大量桌面的 JRE 更新/安装的客户应考虑的 Java SE 订阅产品 使用 Java 管理服务 (JMS)。
新功能
security-libs/javax.xml.crypto
➜ 用于切换 XML 签名安全验证模式的新系统属性 (JDK-8301260)
添加了一个名为的新系统属性。它可用于启用或禁用 XML 签名安全验证模式。系统属性应设置为“true”以启用,或设置为“false”以禁用。系统属性的任何其他值都被视为“false”。如果设置了系统属性,它将取代属性值。org.jcp.xml.dsig.secureValidationXMLCryptoContext
默认情况下,安全验证模式处于启用状态。禁用安全验证模式的风险由您自行承担。
已知问题
热点/编译器
➜ 由于消除有限范围检查而导致的潜在性能回归 (JDK-8314468 (not public))
当 C1 编译器是 VM 唯一可用的编译器时,它会应用循环预测来从循环体中删除数组访问范围检查。由于存在缺陷,此优化被禁用,可能导致性能下降。
这仅影响客户端 VM 或使用非默认命令行标志或 .-XX:+NeverActAsServerClassMachine-XX:TieredStopAtLevel=[1,2,3]
其他说明
安全库/java.security
➜ 增加系统属性的默认值 jdk.jar.maxSignatureFileSize (JDK-8312489)
system 属性 允许应用程序控制签名 JAR 中签名文件的最大大小。其默认值已从 8000000 字节 (8 MB) 增加到 16000000 字节 (16 MB)。jdk.jar.maxSignatureFileSize
安全库/java.security
➜ 添加了 DigiCert, Inc. 的 4 个根证书。 (JDK-8318759)
以下根证书已添加到 cacerts 信任库中:
+ DigiCert, Inc.
+ digicertcseccrootg5
DN: CN=CN=DigiCert CS ECC P384 Root G5, O="DigiCert, Inc.", C=US
+ DigiCert, Inc.
+ digicertcsrsarootg5
DN: CN=DigiCert CS RSA4096 Root G5, O="DigiCert, Inc.", C=US
+ DigiCert, Inc.
+ digicerttlseccrootg5
DN: DigiCert TLS ECC P384 Root G5, O="DigiCert, Inc.", C=US
+ DigiCert, Inc.
+ digicerttlsrsarootg5
DN: DigiCert TLS RSA4096 Root G5, O="DigiCert, Inc.", C=US
安全库/java.security
➜ 添加了 eMudhra Technologies Limited (JDK-8319187) 的三个根证书)
以下根证书已添加到 cacerts 信任库中:
+ eMudhra Technologies Limited
+ emsignrootcag1
DN: CN=emSign Root CA - G1, O=eMudhra Technologies Limited, OU=emSign PKI, C=IN
+ eMudhra Technologies Limited
+ emsigneccrootcag3
DN: CN=emSign ECC Root CA - G3, O=eMudhra Technologies Limited, OU=emSign PKI, C=IN
+ eMudhra Technologies Limited
+ emsignrootcag2
DN: CN=emSign Root CA - G2, O=eMudhra Technologies Limited, OU=emSign PKI, C=IN
安全库/java.security
➜ 添加了 Telia 根 CA v2 证书 (JDK-8317373)
以下根证书已添加到 cacerts 信任库中:
+ Telia Root CA v2
+ teliarootcav2
DN: CN=Telia Root CA v2, O=Telia Finland Oyj, C=FI
安全库/java.security
➜ 添加了来自 Let's Encrypt 的 ISRG 根 X2 CA 证书 (JDK-8317374)
以下根证书已添加到 cacerts 信任库中:
+ Let's Encrypt
+ letsencryptisrgx2
DN: CN=ISRG Root X2, O=Internet Security Research Group, C=US
安全库/javax.net.ssl
➜ 为所有密钥类型调用 X509KeyManager.chooseClientAlias 一次 (JDK-8262186)
JDK中的(D)TLS实现现在在握手期间仅调用一次以进行客户端身份验证,即使请求了多种算法也是如此。X509KeyManager.chooseClientAlias()
Bug 修复
此版本还包含针对 Oracle 关键补丁更新中描述的安全漏洞的修复。
➜ 17.0.10 中修复的问题:
# 工 务 局。 元件 总结
1 JDK-8238436 客户端库/java.awt java/awt/Frame/FrameLocationTest/FrameLocationTest.java 失败
2 JDK-8294427 客户端库/javax.swing 复选框和单选按钮在高 DPI 环境中的 Windows 上存在呈现问题
3 JDK-8282444 核心库/java.lang.module 模块查找器错误地采用默认文件系统路径分隔符
4 JDK-8293659 核心库/java.lang:class_loading 改进了 UnsatisfiedLinkError 错误消息以包含 dlopen 错误详细信息
5 JDK-8299015 核心库/java.net 确保 HttpResponse.BodySubscribers.ofFile 写入所有字节
6 JDK-8274562 核心库/java.nio (FS)使用 OverlayFS 时,UserDefinedFileAttributeView 无法正确确定是否受支持
7 JDK-8273162 核心库/java.util AbstractSplittableWithBrineGenerator 不会创建随机盐
8 JDK-8301637 核心库/java.util.concurrent ThreadLocalRandom.current().doubles().parallel() 争用
9 JDK-8314263 核心库/java.util.logging 触发 Logger finder 递归和 StackOverflowError 的签名 jar
10 JDK-8303440 核心库/java.util:i18n “ZonedDateTime.parse”可能不接受“UTC+XX”区域 ID
11 JDK-8313657 核心库/javax.naming com.sun.jndi.ldap.Connection.cleanup 不会关闭 SocketTimeoutErrors 上的连接
12 JDK-8314063 核心库/javax.naming 当 LDAP 连接的握手失败时,Connection::createSocket 中的套接字未关闭
13 JDK-8299658 热点/编译器 C1 编译在 LinearScan::resolve_exception_edge 中崩溃
14 JDK-8301489 热点/编译器 C1:ShortLoopOptimizer 可能会在指令输入之前解除指令
15 JDK-8313626 热点/编译器 C2 崩溃导致意外异常控制流
16 JDK-8313402 热点/编译器 C1:不正确的 LoadIndexed 值编号
17 JDK-8312909 热点/编译器 C1 不应通过接口调用与非子类型接收器进行内联
18 JDK-8303279 热点/编译器 C2:如果 IGVN 拆分时 SubTypeCheckNode::sub() 崩溃
19 JDK-8304954 热点/编译器 使用大页面时,SegmentedCodeCache 失败
20 JDK-8316178 热点/编译器 改进 CodeBlob 的诊断标头
21 JDK-8315377 热点/编译器 C2:assert(u->find_out_with(Op_AddP) == nullptr) 失败:超过 2 个链接的 AddP 节点?
22 JDK-8316514 热点/编译器 更好的 VtableStub 诊断标头
23 JDK-8314024 热点/编译器 PhaseIdealLoop::build_loop_late_post_work 中的 SIGSEGV,由于直接支配器信息错误
24 JDK-8313262 热点/编译器 C2:下沉节点可能会导致所需的铸造被丢弃
25 JDK-8312440 热点/编译器 assert(cast != nullptr) failed:必须已添加强制转换以固定节点
26 JDK-8313756 热点/编译器 [BACKOUT] 8308682:增强 AES 性能
27 JDK-8313760 热点/编译器 [重做]增强 AES 性能
28 JDK-8308103 热点/编译器 自 JDK 17 以来,C2 编译时间大幅增加(高达 ~30 倍)
29 JDK-8309119 热点/编译器 [17U/11U]重做 JDK-8297951:C2:为循环谓词中的所有 If 节点创建框架谓词
30 JDK-8307683 热点/编译器 循环预测不应通过否定其条件来提升带有陷阱的 Trap 范围检查
31 JDK-8275333 热点/GC “Too many recored phases?”中的打印计数断言
32 JDK-8316906 热点/GC 阐明 TLABWasteTargetPercent 标志
33 JDK-8270894 热点/运行时 在 ObjectSynchronizer::read_stable_mark() 中使用获取语义
34 JDK-8305994 热点/运行时 保证最终异步监视器通货紧缩
35 JDK-8309228 hotspot/runtime Clarify EXPERIMENTAL flags comment in hotspot/share/runtime/globals.hpp
36 JDK-8306825 hotspot/runtime Monitor deflation might be accidentally disabled by zero intervals
37 JDK-8279545 hotspot/runtime Buffer overrun in reverse_words of sharedRuntime_x86_64.cpp:3517
38 JDK-8283326 hotspot/runtime Implement SafeFetch statically
39 JDK-8314679 热点/SVC代理 SA 在刚刚从其他 JVM 分离后无法正确连接到 JVM
40 JDK-8320597 安全库/java.security RSA 签名验证在未正确编码参数的签名数据上失败
41 JDK-8302017 安全库/java.security 仅当 BadPaddingException 将被抛出时才分配它
42 JDK-8311592 安全库/javax.crypto ECKeySizeParameterSpec 导致第三方提供程序出现过多异常
43 JDK-8313742 安全库/javax.crypto ZipFile.getManifestName 在 Spring Boot 的 jar 验证期间失败
44 JDK-8291154 工具/javac 创建一个非静态嵌套类,而不封闭类抛出 VerifyError
45 JDK-8301247 工具/jpackage JPackage app-image exe 在 JDK 17+ 中启动多个 exe
46 JDK-8313792 工具/JShell 在 src/jdk.internal.le/share/legal/jline.md 中验证第 4 方信息