搜索

第 2 章 Eclipse Temurin 功能

download PDF

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

有关 Eclipse Temurin 的最新 OpenJDK 21 发行版本的更改和安全修复列表,请参阅 OpenJDK 21.0.3 Released

新功能及功能增强

查看以下发行注记以了解 Eclipse Temurin 21.0.3 发行版本中包含的新功能和功能增强:

Java 编译器通过拒绝记录模式中的 final 关键字与 Java 语言规范一致

Java 21 版本增强了 Java 语言,其特征与交换机语句的模式匹配。但是,OpenJDK 21 提供了一个 javac 编译器,允许在记录模式 之前使用最终 关键字(例如,最终 R (…​)->)。这对 final 关键字的使用违反了 Java 语言规范。

在 OpenJDK 21.0.3 中,javac 编译器与 Java 语言规格一致。此增强意味着在 switch 语句中包含 最终 关键字的任何程序现在都无法编译。在这种情况下,为了确保程序成功编译,您必须删除 final 关键字。

请参阅 JDK-8317300 (JDK Bug System)

Java 更新到 Apache Santuario 3.0.3 的 XML 安全性。

在 OpenJDK 21.0.3 中,XML 签名实现基于 Apache Santuario 3.0.3。

此增强包括以下四个基于 SHA3 的 RSA-MGF1 SignatureMethod 算法:

  • SHA3_224_RSA_MGF1
  • SHA3_256_RSA_MGF1
  • SHA3_384_RSA_MGF1
  • SHA3_512_RSA_MGF1

由于在更新版本中无法修改 javax.xml.crypto.dsig.SignatureMethod API,以便为新算法提供恒定值,因此请为这些算法使用以下等效的字符串字面值:

  • http://www.w3.org/2007/05/xmldsig-more#sha3-224-rsa-MGF1
  • http://www.w3.org/2007/05/xmldsig-more#sha3-256-rsa-MGF1
  • http://www.w3.org/2007/05/xmldsig-more#sha3-384-rsa-MGF1
  • http://www.w3.org/2007/05/xmldsig-more#sha3-512-rsa-MGF1

请参阅 JDK-8319124 (JDK Bug System)

TrimNativeHeapInterval 选项可作为产品交换机使用

OpenJDK 21.0.3 提供 -XX:TrimNativeHeapInterval=ms 选项作为官方产品交换机。此功能增强使 JVM 可以在受支持的平台上以指定间隔(以毫秒为单位)修剪原生堆。目前,只有这个增强支持的平台是带有 glibc 的 Linux。

您可以通过设置 TrimNativeHeapInterval=0 来禁用修剪。修剪功能默认为禁用。

请参阅 JDK-8325496 (JDK Bug System)

在大多数 Linux 桌面上,SystemTray.isSupported () 方法返回 false

在 OpenJDK 21.0.3 中,在不支持 SystemTray API 的系统中,java.awt.SystemTray.isSupported () 方法会返回 false。此功能增强取决于 SystemTray API 规格。

SystemTray API 用于与系统桌面中的任务栏交互,以提供通知。SystemTray 可能还包括代表应用程序的图标。由于底层平台问题,对任务栏图标的 GNOME 桌面支持在数年内无法正常工作。此平台问题会影响 JDK 在 GNOME 桌面上提供 SystemTray 支持的能力。此问题通常会影响使用 GNOME Shell 44 或更早版本的系统。

注意

因为缺少正确的 SystemTray 支持是某些系统上的长期问题,所以这个 API 增强在受影响系统中返回 false 可能会对用户造成最小的影响。

请参阅 JDK-8322750 (JDK Bug System)

意外的 R1 和 E1 根证书

在 OpenJDK 21.0.3 中,cacerts truststore 包括两个 Certainly root 证书:

证书 1
  • 名称 :Certainly
  • 别名名称:clearrootr1
  • 区分名称:CN=Certainly Root R1, O=Certainly, C=US
证书 2
  • 名称 :Certainly
  • 别名名称:clearroote1
  • 区分名称:CN=Certainly Root E1, O=Certainly, C=US

请参阅 JDK-8321408 (JDK Bug System)

为sng 集合根对大型对象阵列进行精确扫描

在生成对象的集合过程中,Parallel Garbage Collector (GC)将旧生成对象分区到 64 kB 条带,以扫描对年轻代的引用。这些条带被分配给 worker 线程,以便并行执行扫描。

以前的 OpenJDK 21 版本不会将 worker 线程限制为自己的条带。这缺少对 parallelism 的限制。例如,如果在分配给特定 worker 线程的条带中启动大型对象,则此线程最终可能会扫描多个条带上有数千个引用的对象。

OpenJDK 21.0.3 将每个 worker 线程限制为其分配的条带。现在,每个线程只处理大型对象阵列的有趣的部分。当大型对象阵列存在时,对 Parallel GC 暂停现在类似于 Garbage-First (G1)收集器的暂停。在某些情况下,这个增强有助于将暂停的长度减少 75-80%。例如,之前版本的一个 100millisecond 暂停可能会降低到这个版本中的 20millisecond pause。

请参阅 JDK-8310031 (JDK Bug System)

修复了使用 ZGC 和非默认 ObjectAlignmentInBytes 值时潜在的 JVM 失败

在早期版本的 OpenJDK 21 中,如果您使用 -XX:+UseZGC 选项运行 JVM,且 -XX:ObjectAlignmentInBytes 的非默认值,则 JVM 可能会失败或出现故障。出现这个问题的原因是,ZBarrierSet::clone_obj_array 会忽略对象数组末尾的 padding。

OpenJDK 21.0.3 解决了这个问题,确保在使用 Z Garbage Collector (ZGC)和非默认值时,您可以成功运行 JVM,以便在运行 JVM 时进行 Java 对象对齐。

请参阅 JDK-8325074 (JDK Bug System)

更新于 2024-05-10

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.