第2章 Eclipse Temurin の機能
Eclipse Temurin には、OpenJDK のアップストリームディストリビューションの構造の変更は含まれません。
Eclipse Temurin の最新の OpenJDK 17 リリースに含まれる変更点とセキュリティー修正の一覧は、OpenJDK 17 .0.14 Released を参照してください。
新機能および機能拡張
Eclipse Temurin 17.0.14 には、以下の新機能と機能拡張が含まれています。
呼び出しの動的な 文字列連結による操作順序の修正
JEP-280 を介して OpenJDK 9 に追加された Indify String Concatenation 機能により、文字列連結式が評価される順序でリグレッションが導入されました。Java 言語仕様 では、オペランドが左から右の順序で完全に評価される必要があります。ただし、文字列連結式を評価するために javac コンパイラーによる 呼び出し動的 (内部)呼び出し生成の導入により、すべてのオペランドは順番に評価されましたが、文字列に変換されませんでした。この状況では、各オペランドは後でのみ文字列に変換されました。
たとえば、次のコードについて考えてみましょう。ここでは、連結の 3 つ目の引数が、ビルダー の値を goodbye に変更する副作用 があり ます。
StringBuilder builder = new StringBuilder("good");
return "" + builder + builder.append("bye");
前の例に基づいて、Indify String Contenation 機能は、builder.append メソッドが StringBuilder オブジェクトを変更するまで、2 番目の引数を文字列に変換しませんでした。このような場合、連結が誤って "" + "goodbye" + "goodbye" になり、出力として goodbyegoodbye が生成されました。
OpenJDK 17.0.14 では、文字列連結が評価され、各引数を左から右の順序で文字列に変換します。このような場合、連結が正しく"good " + "good" + "goodbye" になり、出力として goodgoodbye が生成されます。
この問題の解決は、OpenJDK 9 より前に利用可能であった javac コンパイラーのバージョンや、-XDstringConcat=inline コマンドラインオプションで javac を実行するのと同じ効果があります。
JDK-8273914 (JDK Bug System) を参照してください。
アーカイブ展開時にファイルの上書きを回避するための jar コマンドのオプション
以前の OpenJDK リリースでは、jar ツールがアーカイブからファイルを抽出すると、jar ツールは target ディレクトリー内で同じ名前の既存のファイルを上書きしていました。
OpenJDK 17.0.14 は、jar ツールが既存のファイルを上書きしないようにするために使用できる new )オプションを追加します。この新オプションは、短い形式または長い形式で指定できます。
-k (または--keep-old-files
以下に例を示します。
-
jar xkf myfile.jar -
jar --extract ‑‑keep-old-files ‑‑file myfile.jar
OpenJDK 17.0.14 では、jar ツールはデフォルトで古い動作を保持します。‑k (または ‑keep-old-files) オプションを明示的に指定しない場合、jar ツールは同じ名前の既存ファイルを自動的に上書きします。
JDK-8335912 (JDK Bug System) および JDK バグシステムリファレンス ID: JDK-8337499 を参照してください。
IANA タイムゾーンのデータベースをバージョン 2024b に更新
OpenJDK 17.0.14 では、Internet Assigned Numbers Authority (IANA)タイムゾーンデータベースのツリー内コピーがバージョン 2024b に更新されました。この更新は主に、Mexico、Mongolia、ポルトガルの履歴データの改善に関心があります。
IANA データベースのこの更新には、次の変更も含まれています。
-
Asia/ChoibalsanはAsia/Ulaanbaatarのエイリアスです。 - Middle European Time (MET) と Central European Time (CET) は同じタイムゾーンを示しています。
一部の従来のタイムゾーン ID は、固定オフセットではなく地理的な名前にマッピングされます。
-
Eastern Standard Time (EST) は、
-5:00ではなくAmerica/Panamaにマッピングされます。 -
Mountain Standard Time (MST) は、
-7:00ではなくAmerica/Phoenixにマッピングされます。 -
Hawaii Standard Time (HST) は、
-10:00ではなくPacific/Honoluluにマッピングされます。
OpenJDK は、既存の固定オフセットマッピングを保持して、レガシータイムゾーン ID マッピングの変更をオーバーライドします。
-
Eastern Standard Time (EST) は、
JDK-8339637 (JDK Bug System) を参照してください。
改訂日時: 2025-01-30