Quality Outreach Heads-up – JDK 26: Jlink Compression Plugin Now Handles -c Option Correctly

原文はこちら。
The original article was written by Ana-Maria Mihalceanu (Senior Developer Advocate, Oracle).
https://inside.java/2025/12/16/quality-heads-up/

OpenJDK Quality Groupは、リリースの全体的な品質向上の手段としてOpenJDKビルドを使ってのFOSSプロジェクトのテストを推進しています。

Quality Outreach
https://wiki.openjdk.java.net/display/quality/Quality+Outreach

このHeads upは、関係するプロジェクトに送られる定期的なコミュニケーションの一部です。このプログラムの詳細と参加方法については、上記wikiをご覧ください。

The quality-discuss Archives
https://mail.openjdk.org/pipermail/quality-discuss/

The jlinkツールガイドによると、圧縮レベルを--compressオプションもしくはその短縮フォームである-cを使って設定できる、とあります。

The jlink Command
https://docs.oracle.com/en/java/javase/25/docs/specs/man/jlink.html

jlink --module-path $JAVA_HOME/jmods/ \
    --add-modules java.base \
    --compress=zip-1 \
    --output runtime

さらに、ドキュメントには記載がありませんが、以下のようなコマンドを使うと、非推奨の圧縮レベル2で圧縮された実行イメージを生成できます。

jlink --module-path $JAVA_HOME/jmods/ \
    --add-modules java.base \
    -c \
    --output runtime

ただJDK 26 以前では、jlink-c を引数として続けて使用するとエラーが発生していました。この動作はJDK 26で修正され、jlink--compressまたは-cのいずれかで実行しても、同じ結果が得られるようになっています。

jlink --module-path $JAVA_HOME/jmods/ \
    --add-modules java.base \
    -c zip-1 \
    --output runtime

Call to Action

jlink-cおよび--compressの動作が統一されたため、両オプションとも引数の指定が必要になりました。圧縮レベルを指定せずにjlink -cを使用する場合は、レベルを選択するか、オプション自体を省略することをお勧めします。後者の場合、生成されるランタイムイメージはデフォルトの圧縮レベル(zip-6)で圧縮されます。

この修正は、Java 26 EAメインラインビルドに取り込まれ、Build 27以後でご利用いただけます。この変更の詳細は、JDK-8321139をご確認ください。

JDK 26 Early Access
https://jdk.java.net/26/
[JDK-8321139] jlink’s compression plugin doesn’t handle -c option correctly
https://bugs.openjdk.org/browse/JDK-8321139

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください