Red Hat build of OpenJDK 8.0.352 发行注记
摘要
前言
OpenJDK(Open Java Development Kit)是 Java Platform, Standard Edition (Java SE) 的一个开源实现。红帽构建的 OpenJDK 在三个版本中提供:8u、11u 和 17u。
红帽构建的 OpenJDK 软件包在 Red Hat Enterprise Linux 和 Microsoft Windows 上提供,并作为红帽生态系统目录中的 JDK 和 JRE 提供。
提供有关红帽构建的 OpenJDK 文档的反馈
要报告错误或改进文档,请登录到 Red Hat JIRA 帐户并提交问题。如果您没有 Red Hat Jira 帐户,则会提示您创建一个帐户。
流程
- 单击以下链接 以创建 ticket。
- 在 Summary 中输入问题的简短描述。
- 在 Description 中提供问题或功能增强的详细描述。包括一个指向文档中问题的 URL。
- 点 Submit 创建问题,并将问题路由到适当的文档团队。
使开源包含更多
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
第 1 章 支持政策
红帽在其产品中支持选择版本的 OpenJDK 的主版本。为实现一致性,这些版本与 Oracle JDK 的长期支持(LTS)指定的版本相同。
自首次引入该版本起,红帽构建的 OpenJDK 主版本将最少提供六年的支持。如需更多信息,请参阅 OpenJDK 生命周期和支持政策
RHEL 6 于 2020 年 11 月结束其生命周期。因此,红帽构建的 OpenJDK 不支持 RHEL 6 作为支持的配置。
第 2 章 与上游 OpenJDK 8 的不同
Red Hat 在 Red Hat Enterprise Linux (RHEL)中构建 OpenJDK 包含了来自 OpenJDK 上游发行版的许多结构更改。红帽构建的 Microsoft Windows 版本尝试尽快遵循 RHEL 更新。
以下列表详细介绍了最显著的 OpenJDK 8 构建变化:
- FIPS 支持。Red Hat build of OpenJDK 8 会自动检测 RHEL 是否处于 FIPS 模式,并自动配置 Red Hat build of OpenJDK 8 以在该模式下运行。此更改不适用于适用于 Microsoft Windows 的红帽构建的 OpenJDK 构建。
- 加密策略支持。红帽构建的 OpenJDK 8 从 RHEL 系统配置获取启用的加密算法和密钥大小限制列表。这些配置组件由传输层安全(TLS)加密协议、证书路径验证和任何签名的 JAR 使用。您可以设置不同的安全配置集来平衡安全性和兼容性。此更改不适用于适用于 Microsoft Windows 的红帽构建的 OpenJDK 构建。
-
RHEL 上的红帽构建的 OpenJDK 会动态链接到原生库,如
zlib
用于归档格式支持,libjpeg-turbo
、libpng
和giflib
用于镜像支持。RHEL 还动态链接Harfbuzz
和Freetype
用于字体渲染和管理。此更改不适用于适用于 Microsoft Windows 的红帽构建的 OpenJDK 构建。 -
src.zip
文件包含红帽构建的 OpenJDK 附带的所有 JAR 库的源。 - RHEL 上的红帽 OpenJDK 构建使用系统范围的时区数据文件作为时区信息的来源。
- RHEL 上的红帽构建的 OpenJDK 使用系统范围的 CA 证书。
- Microsoft Windows 上的红帽构建的 OpenJDK 包括 RHEL 的最新可用时区数据。
- Microsoft Windows 上的红帽构建的 OpenJDK 使用 RHEL 的最新可用 CA 证书。
其他资源
第 3 章 Red Hat build of OpenJDK 8.0.352 发行注记
最新的 Red Hat build of OpenJDK 8 发行版本可能包括新功能。另外,最新版本可能会增强、弃用或删除来自以前红帽构建的 OpenJDK 8 版本的功能。
有关所有其他更改和安全修复,请参阅 OpenJDK 8u352 发行版本。
红帽构建的 OpenJDK 新功能及改进
查看以下发行注记以了解 Red Hat build of OpenJDK 8.0.352 发行版本提供了新功能和功能增强:
引用对象更改和配置
从红帽构建的 OpenJDK 8.0.352 开始,您无法克隆 Reference
对象。
如果您试图克隆引用对象,java.lang.ref.Reference::clone
方法会抛出 CloneNotSupportedException
信息。
如果要复制现有的 Reference
对象,则必须使用适当的 Reference
子类的构造器来创建 Reference
对象。这样可确保新的 Reference
对象包含与 target Reference
对象相同的引用和引用队列。
对于红帽构建的 OpenJDK 8.0.352 发行版本,java.lang.ref.Reference.enqueue
方法更改了行为。当应用程序代码调用 java.lang.ref.Reference.enqueue
方法时,此方法会在将对象添加到注册队列前清除引用。在
Reference
对象被排队后,需要 java.lang.ref.Reference.get ()
返回值的代码可能会抛出 NullPointerException
。
红帽构建的 OpenJDK 8.0.352 发行版本更改了 PhantomReference
对象的行为,以便在任何关联队列中排队前清除它们。这与 SoftReference
和 WeakReference
对象的现有行为相同。
links
- 请参阅 JDK-8201793 (JDK Bug System)。
- 请参阅 JDK-8175797 (JDK Bug System)。
- 请参阅 JDK-8071507 (JDK Bug System)。
-
有关这些引用对象配置的更多信息,请参阅 Red Hat build of OpenJDK 8 维护版本 4 (红帽客户门户网站)
为客户端角色启用 TLSv1.3
默认情况下,红帽构建的 OpenJDK 8.0.352 为客户端角色启用 TLSv1.3 协议支持。
在红帽构建的 OpenJDK 8.0.272 版本中,对服务器角色的 TLSv1.3 协议支持已经启用。
如果您在红帽构建的 OpenJDK 8.0.352 中创建 TLS 客户端角色,同时保留默认的协议设置,并且与 TLSv1.3 建立的连接中使用 TLSv1.3,则兼容性问题可能会影响您的应用程序。以下列表详细介绍了常见兼容性问题:
-
TLSv1.3 使用半双工-close 策略,而 TLSv1.2 使用 full-duplex-close 策略。您可以使用
jdk.tls.acknowledgeCloseNotify
系统属性将 TLSv1.3 配置为使用全双工策略。有关此配置的更多信息,请参阅 JDK-8208526。 -
TLSv1.3 不支持
signature_algorithms_cert
扩展中的某些算法。例如,如果您只允许在配置中签名验证的数字签名算法(DSA),在使用 TLSv1.3 协议时您将遇到不兼容的问题。 - 使用 DSA 证书进行客户端身份验证的客户端会导致与 TLSv1.3 的兼容性问题。
- TLSv1.3 包含与早期 TLS 协议版本不同的密码套件。对于带有硬编码的、不支持的密码套件的应用程序,可能会出现兼容性问题。
- TLSV1.3 会话恢复和密钥更新行为与早期的 TLS 协议版本不同。依赖于这些协议的握手详情的应用程序可能会遇到兼容性问题。
如果您需要禁用对客户端角色的 TLSv1.3 协议支持,请完成以下操作之一:
-
获取带有
SSLContext.getInstance ("TLSv1.2")
的 TLSv1.2 上下文。 -
将
jdk.tls.client.protocols
系统属性设为 TLSv1.2。例如,-Djdk.tls.client.protocols="TLSv1.2"
。 -
为红帽构建的 OpenJDK
javax.net.ssl
API 设置早期 TLS 协议,如下例所示:
sslSocket.setEnabledProtocols(new String[] {"TLSv1.2"});
sslEngine.setEnabledProtocols(new String[] {"TLSv1.2"});
SSLParameters params = sslSocket.getSSLParameters(); params.setProtocols(new String[] {"TLSv1.2"}); slsSocket.setSSLParameters(params);
links
- 请参阅 JDK-8208526 (JDK Bug System)。
jdk.httpserver.maxConnections
system property
红帽构建的 OpenJDK 8.0.352 添加了一个新的系统属性 jdk.httpserver.maxConnections
,它会修复为 HttpServer
服务指定的连接限制,这可能会导致接受的连接和建立的连接无限期保持打开。
您可以使用 jdk.httpserver.maxConnections
系统属性以以下方式更改 HttpServer
服务的行为:
-
设置
0
或负值(如-1
)来为该服务指定连接限制。 -
设置一个正值,如
1
,使服务能够根据当前已建立的连接数检查任何接受的连接。如果达到该服务的最大已建立连接数,服务会立即关闭接受的连接。
支持 Microsoft Visual Studio 2017
从红帽构建的 OpenJDK 8.0.352 版本开始,Windows JDK 和 JRE 1.8.0 版本使用 Visual Studio 2017 工具链编译,因为 Microsoft 目前支持此链。
红帽客户门户网站不再使用 Alternative toolchain 标签来标记使用 Visual Studio 2017 工具链编译的二进制文件。
对于依赖 Microsoft Visual Studio 2010 工具链进行编译二进制文件(红帽标签为 旧工具链 )的客户,红帽将继续支持这些二进制文件。在 Software Details 页面中,在红帽客户门户网站中,带有此工具链编译的文件在其文件名中包含 vs10
条目。例如,openjdk-1.8.0.345/java-1.8.0-openjdk-1.8.0.352-2.b08.redhat.windows.vs10.x86_64.zip
。
Microsoft 不再支持 Visual Studio 2010 工具链,因此红帽只能提供对与此链相关的任何产品的有限支持。
第 4 章 与本发行版本相关的公告
以下公告已被发布,以记录本发行版本中包含的程序错误修复和 CVE 修复:
更新于 2024-05-11