Java
 Computer >> コンピューター >  >> プログラミング >> Java

Java 9のjarコマンドでマルチリリースJAR(MRJAR)を作成する方法

マルチリリースJAR(MRJAR)とは

Java 9では、マルチリリースJAR(Multi-Release JAR)形式という新しい機能が導入されました。これにより、1つのJARファイルの中に、実行環境のJavaバージョンに応じて使い分けられる複数バージョンのクラスやリソースを格納できるようになりました。たとえば、Java 8向けのコードはそのまま維持しつつ、Java 9以降で利用可能な最適化された実装を同じJARに同梱することができます。

この記事では、jarコマンドを使用して、Java 8とJava 9の両方でコンパイルされた同一クラスの2つのバージョンを含むマルチリリースJARを作成する手順を解説します。

MRJARを作成するコマンド

以下のように --create オプションと --release オプションを組み合わせて実行します。

C:\Users\User\tutorialspoint>jar --create --file MR.jar -C sampleproject-base demo --release 9 -C sampleproject-9 demo
Warning: entry META-INF/versions/9/demo/SampleClass.class contains a class that is identical to an entry already in the jar

ここで表示される警告メッセージは、META-INF/versions/9 配下に含まれたクラスが、すでにJAR内に存在するエントリと同一であることを知らせるものです。内容が完全に同じ場合でも、バージョンごとのエントリとして登録されるため動作上の問題はありませんが、意図せず重複していないか確認しておくと安心です。

--release 9 オプションの役割

「--release 9」オプションを指定すると、それ以降に記述した内容(この例では sampleproject-9 ディレクトリ内の demo パッケージ)が、MRJAR内のバージョン別エントリである root/META-INF/versions/9 の下に格納されるよう指示されます。

作成されるJARのディレクトリ構成

上記のコマンドを実行すると、MR.jarは次のような構造になります。

jar root
    - demo
        - SampleClass.class
    - META-INF
        - versions
            - 9
                - demo
                    - SampleClass.class

MRJARの動作のポイント

JARのルート直下にある SampleClass.class は従来通りのデフォルトバージョンであり、META-INF/versions/9 配下のクラスはJava 9以降のランタイムでのみ読み込まれます。古いJava 8環境では META-INF/versions ディレクトリが単に無視されるため、同じJARファイルを複数のJavaバージョンで安全に配布できるのが大きなメリットです。

  1. JavaでJSON配列を作成する方法をわかりやすく解説

    JSON配列とは、角括弧で囲まれた値の順序付きコレクションのことです。具体的には「[」で始まり「]」で終わり、配列内の各値はカンマ(,)で区切られます。JSON配列のサンプル{ books: [Java, JavaFX, Hbase, Cassandra, WebGL, JOGL] }json-simpleは、JSONオブジェクトを処理するための軽量ライブラリです。このライブラリを使えば、JavaプログラムからJSONドキュメントの内容を読み取ったり、書き込んだりすることができます。json-simpleのMaven依存関係json-simpleライブラリを使用するには、まずpom.x

  2. Javaでログインフォームを作成する方法!Swingを使った実装例とサンプルコード

    JavaではSwingというGUIツールキットを利用することで、デスクトップアプリケーション向けのログインフォームを簡単に開発できます。この記事では、ユーザー名(User Name)とパスワード(Password)の2つのラベル、認証情報を入力するための2つのテキストフィールド、そしてSUBMIT(送信)ボタンを1つ備えたフォームを作成します。正しい認証情報が入力されると、フォーム上に「Hello admin」というメッセージが表示されます。 使用する主なコンポーネント JLabel:ラベルの表示に使用します。 JTextField:ユーザー名の入力欄です。 JPasswordField: