Red Hat build of OpenJDK 17.0.14 发行注记
摘要
前言 复制链接链接已复制到粘贴板!
Open Java Development Kit (OpenJDK)是 Java Platform, Standard Edition (Java SE)的一个免费的开源实现。红帽构建的 OpenJDK 有四个版本:8u、11u、17u 和 21u。
红帽构建的 OpenJDK 软件包在 Red Hat Enterprise Linux 和 Microsoft Windows 上提供,并作为红帽生态系统目录中的 JDK 和 JRE 提供。
提供有关红帽构建的 OpenJDK 文档的反馈 复制链接链接已复制到粘贴板!
要报告错误或改进文档,请登录您的红帽 JIRA 帐户并提交问题。如果您没有红帽 JIRA 帐户,系统会提示您创建一个帐户。
流程
- 单击以下链接 来创建 ticket。
- 在 Summary 中输入有关此问题的简单描述。
- 提供有关 描述 中问题或增强功能的详细描述。包括一个 URL,以在文档中发生问题。
- 点 Create 创建并将问题路由到适当的文档团队。
使开源包含更多 复制链接链接已复制到粘贴板!
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
第 1 章 红帽构建的 OpenJDK 支持政策 复制链接链接已复制到粘贴板!
红帽在其产品中支持所选的 Red Hat build of OpenJDK 主版本。为了实现一致性,这些版本与指定为长期支持 (LTS) 的 Oracle JDK 版本类似。
自首次推出该版本时,红帽构建的 OpenJDK 的主版本将最少提供六年。如需更多信息,请参阅 OpenJDK 生命周期和支持政策
RHEL 6 于 2020 年 11 月结束其生命周期。因此,红帽构建的 OpenJDK 不支持 RHEL 6 作为支持的配置。
第 2 章 与上游 OpenJDK 17 的不同 复制链接链接已复制到粘贴板!
Red Hat build of OpenJDK 在 Red Hat Enterprise Linux 中包含了来自 OpenJDK 上游发行版的许多结构更改。红帽构建的 OpenJDK 版本尝试尽快遵循 Red Hat Enterprise Linux 更新。
以下列表详细介绍了红帽构建的 OpenJDK 17 更改:
- FIPS 支持。Red Hat build of OpenJDK 17 会自动检测 RHEL 是否处于 FIPS 模式,并自动配置红帽构建的 OpenJDK 17 以在该模式下运行。此更改不适用于针对 Microsoft Windows 的红帽构建的 OpenJDK 构建。
- 加密策略支持。Red Hat build of OpenJDK 17 从 RHEL 系统配置获取启用的加密算法和密钥大小限制列表。这些配置组件由传输层安全(TLS)加密协议、证书路径验证和任何签名的 JAR 使用。您可以设置不同的安全配置集来平衡安全性和兼容性。此更改不适用于针对 Microsoft Windows 的红帽构建的 OpenJDK 构建。
-
在 RHEL 上构建 OpenJDK 会动态链接到原生库,如
zlib用于归档格式支持,libjpeg-turbo、libpng和giflib用于镜像支持。RHEL 还动态链接Harfbuzz和Freetype用于字体渲染和管理。此更改不适用于针对 Microsoft Windows 的红帽构建的 OpenJDK 构建。 -
src.zip文件包含由红帽构建的 OpenJDK 附带的所有 JAR 库的源。 - Red Hat build of OpenJDK on RHEL 使用系统范围的时区数据文件作为时区信息的源。
- RHEL 上的红帽构建的 OpenJDK 使用系统范围的 CA 证书。
- Red Hat build of OpenJDK on Microsoft Windows 包括 RHEL 的最新可用时区数据。
- Red Hat build of OpenJDK on Microsoft Windows 使用 RHEL 的最新可用 CA 证书。
第 3 章 Red Hat build of OpenJDK 功能 复制链接链接已复制到粘贴板!
最新的 Red Hat build of OpenJDK 17 发行版本可能包括新功能。另外,最新版本可能会增强、弃用或删除来自以前红帽构建的 OpenJDK 17 版本的功能。
有关所有其他更改和安全修复,请参阅 OpenJDK 17.0.14 发行版本。
Red Hat build of OpenJDK 的改进
Red Hat build of OpenJDK 17 为最初在以前的 Red Hat build OpenJDK 版本中创建的功能提供改进。
修复 调用dynamic 字符串串联更改操作顺序
OpenJDK 9 到 JEP-280 添加的 Indify String Concatenation 功能按字符串串联表达式被评估的顺序引入了一个回归。Java 语言规范 要求以左到右顺序完全评估操作对象。但是,引入 invokedynamic (indy)调用由 javac 编译器生成,用于评估字符串串联表达式,所有操作对象都会按顺序评估,但不会转换为字符串。在这种情况下,每个操作对象仅在稍后转换为字符串。
例如,请考虑以下代码,其中串联的第三个参数具有将 构建器 的值更改为 "goodbye" 的副作用:
StringBuilder builder = new StringBuilder("good");
return "" + builder + builder.append("bye");
StringBuilder builder = new StringBuilder("good");
return "" + builder + builder.append("bye");
根据前面的例子,在早期版本中,Indify String Contenation 功能不会将第二个参数转换为字符串,直到 builder.append 方法更改了 StringBuilder 对象。在这种情况下,串联会错误地成为 "" + "goodbye" + "goodbye",这会生成 "goodegoodbye" 作为输出。
在 OpenJDK 17.0.14 的 Red Hat 构建中,字符串串联评估和立即将每个参数转换为字符串(按左到右的顺序)。在这种情况下,串联可以正确地变为 "" + "good" + "goode",这会生成 "goodbye" 作为输出。
这个问题的解决方法与使用 OpenJDK 9 之前提供的 javac 编译器版本相同,或使用 -XDstringConcat=inline 命令行选项运行 javac。
请参阅 JDK-8273914 (JDK Bug System)。
jar 命令的选项,以避免在提取存档时覆盖文件
在以前的 Red Hat build of OpenJDK 版本中,当 jar 工具从存档中提取文件时,jar 工具会在目标目录中使用相同名称来覆盖任何现有文件。
Red Hat build of OpenJDK 17.0.14 添加了一个 new -k (或 --keep-old-files)选项,您可以使用它来确保 jar 工具不会覆盖现有文件。您可以使用短或长格式指定这个新选项。
例如:
-
JAR xkf myfile.jar -
JAR --extract --keep-old-files --file myfile.jar
在 OpenJDK 17.0.14 的 Red Hat build 中,jar 工具默认保留旧行为。如果您没有明确指定 the -k (or --keep-old-files)选项,jar 工具会自动覆盖具有相同名称的任何现有文件。
请参阅 JDK-8335912 (JDK Bug System) 和 JDK bug system reference ID: JDK-8337499。
IANA 时区数据库更新至 2024b 版本
在 OpenJDK 17.0.14 中,互联网编号分配机构(IANA)时区数据库的树内副本更新至 2024b 版本。这个版本主要关注改进墨西哥、Mongolia 和葡ugal 的历史数据。
对 IANA 数据库的这个更新还包括以下更改:
-
Asia/Choibalsan是Asia/Ulaanbaatar的别名。 - 欧洲时间(MET)时区等于中欧时间(CET)。
有些旧的时间 ID 映射到地理位置的名称,而不是固定偏移:
-
东部标准时间(EST)映射到
美国/巴马,而不是-5:00。 -
Mountain Standard Time (MST)映射到
America/Phoenix而不是-7:00。 -
Hawaii Standard Time (HST)被映射到
Pacific/Honolulu而不是-10:00。
红帽构建的 OpenJDK 通过保留现有的 fixed-offset 映射来覆盖旧时间 ID 映射的更改。
-
东部标准时间(EST)映射到
第 4 章 与本发行版本相关的公告 复制链接链接已复制到粘贴板!
以下公告包括了记录程序错误修复和 CVE 修复:
更新于 2025-01-31