第 2 章 Eclipse Temurin 功能


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

有关 Eclipse Temurin 最新 OpenJDK 17 发行版本的更改和安全修复程序,请参阅 OpenJDK 17.0.14 发行版本

新功能及功能增强

Eclipse Temurin 17.0.14 包括以下新功能和增强:

修复 调用dynamic 字符串串联更改操作顺序

OpenJDK 9 到 JEP-280 添加的 Indify String Concatenation 功能按字符串串联表达式被评估的顺序引入了一个回归。Java 语言规范 要求以左到右顺序完全评估操作对象。但是,引入 invokedynamic (indy)调用由 javac 编译器生成,用于评估字符串串联表达式,所有操作对象都会按顺序评估,但不会转换为字符串。在这种情况下,每个操作对象仅在稍后转换为字符串。

例如,请考虑以下代码,其中串联的第三个参数具有将 构建器 的值更改为 "goodbye" 的副作用:

StringBuilder builder = new StringBuilder("good");
return "" + builder + builder.append("bye");

根据前面的例子,在早期版本中,Indify String Contenation 功能不会将第二个参数转换为字符串,直到 builder.append 方法更改了 StringBuilder 对象。在这种情况下,串联会错误地成为 "" + "goodbye" + "goodbye",这会生成 "goodegoodbye" 作为输出。

在 OpenJDK 17.0.14 中,字符串串联评估和立即将每个参数转换为以左到右的顺序的字符串。在这种情况下,串联可以正确地变为 "" + "good" + "goode",这会生成 "goodbye" 作为输出。

注意

这个问题的解决方法与使用 OpenJDK 9 之前提供的 javac 编译器版本相同,或使用 -XDstringConcat=inline 命令行选项运行 javac

请参阅 JDK-8273914 (JDK Bug System)

jar 命令的选项,以避免在提取存档时覆盖文件

在之前的 OpenJDK 版本中,当 jar 工具从存档中提取文件时,jar 工具会覆盖目标目录中名称相同的任何现有文件。

OpenJDK 17.0.14 添加了一个 new -k (or --keep-old-files)选项,以确保 jar 工具不会覆盖现有文件。您可以使用短或长格式指定这个新选项。

例如:

  • JAR xkf myfile.jar
  • JAR --extract --keep-old-files --file myfile.jar
注意

在 OpenJDK 17.0.14 中,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/ChoibalsanAsia/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 映射的更改。

请参阅 JDK-8339637 (JDK Bug System)

更新于 2025-01-30

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部