第 2 章 Eclipse Temurin 功能


Eclipse Temurin 不包含来自 OpenJDK 上游发行版的结构性更改。

有关 Eclipse Temurin 最新 OpenJDK 21 发行版本中的更改和安全修复的更多信息,请参阅 OpenJDK 21.0.8 发行版本

2.1. 新功能及功能增强

Eclipse Temurin 21.0.8 包括以下新功能和增强。

修复在编译边界之间对 javac 插件不可见的类型注解

在以前的 OpenJDK 版本中,javac 编译器仅在从源代码文件加载类型时才提供对类型注解的访问。如果从 bytecode 加载了类型,则省略任何类型注解。

在 OpenJDK 21.0.8 中,TypeMirror 接口还提供对从字节代码加载的类型注解的访问。您可以使用 AnnotationMirror#getAnnotationMirrors 方法获取这些注解。这些注解包含在 AnnotationMirror#toString 方法的输出中。

如果您的程序依赖从字节码加载的元素中没有类型注解,您必须更新这些程序来处理类型注解。

由于持续的问题(请参阅 JDK-8360406),因此默认情况下不启用此功能。如果您希望 javac 编译器包含从 bytecode 加载的类型的类型注解,请指定 -XDaddTypeAnnotationsToSymbol=true 选项。

请参阅 JDK-8341779 (JDK Bug System)

改进了 HTTP/2 流控制检查

OpenJDK 21.0.8 增强了 java.net.http.HttpClient 对象中的 HTTP/2 客户端实现,以向服务器报告流控制错误。在大多数情况下,此行为通常是透明的。但是,这可能意味着当连接到一个无法正确处理这些错误的 HTTP/2 服务器时,流会被重置或连接。

您可以使用以下现有属性来调整流控制限制:

jdk.httpclient.connectionWindowSize
  • 指定 HTTP/2 客户端连接窗口大小,以字节为单位
  • 默认值: 2^26
  • 范围: 2^16-12^31-1
jdk.httpclient.windowSize
  • 指定 HTTP/2 客户端流窗口大小,以字节为单位
  • 默认值:16777 216 (16 MB)
  • 范围: 2^142^31-1

如果指定了无效的值,则使用默认值。此功能增强保证连接窗口大小的实际值小于流窗口大小。

请参阅 JDK-8342075 (JDK Bug System)

jcmd 的新诊断命令以打印注解的进程内存映射

在 OpenJDK 21.0.8 中,jcmd 工具包含以下新命令,用于将 JVM 的虚拟内存映射打印到标准输出(stdout)或一个文件。

jcmd & lt;pid> System.map
将由 < pid > 标识的 JVM 的虚拟内存映射输出到 stdout
jcmd & lt;pid& gt; System.dump_map
将由 < pid> 标识的 JVM 的虚拟内存映射打印到 当前目录中的 vm_memory_map_<pid>.txt 文件中

如果启用了原生内存跟踪(NMT),这些命令还会打印有关虚拟内存片段的 NMT 信息。

请参阅 JDK-8318636 (JDK Bug System)

更新了 HSS/LMS 公钥编码

在 OpenJDK 21.0.8 中,分层签名系统(HSS)和 Leighton-Micali 签名(LMS)公钥的 X.509 编码格式现在与互联网工程任务 Force (IETF) RFC 9708 中的最新标准一致。此功能增强还意味着删除了有关公钥值的 OCTET_STRING ping。

对于与早期版本兼容,在读取此发行版本前编码的密钥时,JDK 仍然检测到存在可分辨的编码规则(DER)编码。

请参阅 JDK-8347596 (JDK Bug System)

OCSP readtimeout 属性与 OCSP 超时的兼容性

OpenJDK 21 的初始发行版本引入了 com.sun.security.ocsp.readtimeout 属性,它指定了读取在线证书状态协议(OCSP)数据的超时时间。此属性与现有的 com.sun.security.ocsp.timeout 属性配对,为 OCSP 连接和证书检索提供更大的控制。通过使用这些属性,您可以为读取 OCSP 数据以及相互独立的传输层设置超时。

在以前的 OpenJDK 21 版本中,如果您没有为 com.sun.security.ocsp.readtimeout 指定一个值,则读取 OCSP 数据的默认超时时间为 15 秒。

在 OpenJDK 21.0.8 中,如果您没有为 com.sun.security.ocsp.readtimeout 指定一个值,则读取 OCSP 数据的默认超时时间基于 com.sun.security.ocsp.timeout 属性的值。如果您不要为 com.sun.security.ocsp.timeout 指定一个值,则默认的超时时间为 15 秒,如早期版本中所示。

注意

此增强与 OpenJDK 17.0.15 中引入的 com.sun.security.ocsp.readtimeout 行为匹配。此增强还与 OpenJDK 版本在 com.sun.security.ocsp.readtimeout 属性前存在的默认行为匹配。  

请参阅 JDK-8347506 (JDK Bug System)

添加了 Sectigo CS 和 TLS 根证书

在 OpenJDK 21.0.8 中,cacerts truststore 包括四个 Sectigo root 证书,包括两个 code-signing (CS)证书和两个 TLS 证书:

证书 1
  • 名称 :Sectigo Limited
  • 别名名称:sectigocodesignroote46
  • distinguished name: CN=Sectigo Public Code Signing Root E46, O=Sectigo Limited, C=GB
证书 2
  • 名称 :Sectigo Limited
  • 别名名称:sectigocodesignrootr46
  • distinguished name: CN=Sectigo Public Code Signing Root R46, O=Sectigo Limited, C=GB
证书 3
  • 名称 :Sectigo Limited
  • 别名名称:sectigotlsroote46
  • 区分名称: CN=Sectigo Public Server Authentication Root E46, O=Sectigo Limited, C=GB
证书 4
  • 名称 :Sectigo Limited
  • 别名名称:sectigotlsrootr46
  • distinguished name: CN=Sectigo Public Server Authentication Root R46, O=Sectigo Limited, C=GB

请参阅 JDK-8359170 (JDK Bug System)

修复了在将 G1 垃圾收集器使用多个 NUMA 节点时区域分配中潜在的故障的问题

在非统一内存访问(NUMA)系统上,操作系统可以选择将任务从一个 NUMA 节点迁移到另一个 NUMA 节点。在 Garbage-First (G1)垃圾收集器中,G1AllocRegion 对象与 NUMA 节点关联。G1Allocator 代码只获取当前线程的 G1AllocRegion 对象,但操作系统调度可能会导致 NUMA-to-thread 关联中的任意更改。

在以前的 OpenJDK 版本中,当将 G1 垃圾收集器与多个 NUMA 节点搭配使用时,当使用了 G1AllocRegion 对象时,可能会失败。

OpenJDK 21.0.8 通过确保整个操作中使用相同的 NUMA 节点和相关 G1AllocRegion 对象来解决这个问题。

请参阅 JDK-8351500 (JDK Bug System)

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部