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

Java 9で既存のモジュールを変更する方法!コマンドラインオプションの使い方を解説

Java 9のモジュールシステムとは

モジュール(module)とは、名前を持つ自己記述型のコードとデータの集合体です。コードは、Javaクラスやインターフェースなどの型を含むパッケージ群として整理され、データにはリソースやその他の静的な情報が含まれます。モジュールを使用するには、まずモジュールを宣言し、ソースコードのルートにmodule-info.javaファイルを配置する必要があります。

以下は「module-info.java」ファイルの基本テンプレートです。

module <module-name> {
    requires <module-name1>;
    requires <module-name2>;

    exports <package-name1>;
    exports <package-name2>;

    exports <package-name> to <module-name>;
}

既存のモジュールを変更するコマンドラインオプション

Java 9では、特定のコマンドラインオプションを使用することで、既存のモジュール宣言を変更せずに、依存関係の追加や追加パッケージのエクスポートなど、既存のモジュールを変更することができます。これらのオプションは、特にレガシーコードの移行やサードパーティライブラリとの互換性確保において非常に役立ちます。

以下に、既存のモジュールを変更するために使用できる主なコマンドラインオプションを紹介します。

1) --add-reads オプション

--add-reads <module>=<target-module>(,<target-module>)*

このコマンドは、モジュール宣言に関係なく、<module><target-module>を読み取る(readする)ように更新します。<target-module>にはALL-UNNAMEDを指定することもでき、その場合はすべての無名モジュール(クラスパス上の全コード)を読み取れるようになります。

2) --add-exports オプション

--add-exports <module>/<package>=<target-module>(,<target-module>)*

このコマンドは、モジュール宣言に関係なく、<module>内の<package><target-module>に対してエクスポートするように更新します。ここでも<target-module>ALL-UNNAMEDを指定すれば、すべての無名モジュールへパッケージを公開できます。

3) --add-opens オプション

--add-opens <module>/<package>=<target-module>(,<target-module>)*

このコマンドは、モジュール宣言に関係なく、<module>内の<package><target-module>に対してオープン(深いリフレクションアクセスを許可)するように更新します。リフレクションAPIを使ったフレームワークなどで特に重要なオプションです。

4) --patch-module オプション

--patch-module <module>=<file>(;<file>)*

このコマンドは、JARファイルやディレクトリ内のクラスおよびリソースを使用して、モジュールの内容を置き換えたり、追加したりすることができます。バグ修正のパッチ適用やテスト時の一時的なクラス差し替えなどに活用されます。

まとめ

Java 9で導入されたモジュールシステムは厳格なカプセル化を実現しますが、--add-reads--add-exports--add-opens--patch-moduleといったコマンドラインオプションを活用することで、モジュール宣言を直接編集することなく柔軟に既存モジュールの挙動を調整できます。移行期のプロジェクトや特殊なランタイム要件がある場合に、ぜひこれらのオプションを活用してみてください。

  1. Javaで編集可能なJLabelを実装する方法

    JLabelとはJLabelクラスはJComponentクラスを継承しており、JLabelのオブジェクトを使用することで、GUI上にテキストによる説明や情報を表示できます。JLabelの主な特徴は以下のとおりです。1行の読み取り専用テキスト、画像、またはその両方を表示できる重要なメソッドとして、setText()、setIcon()、setBackground()、setOpaque()、setHorizontalAlignment()、setVerticalAlignment()などが用意されているPropertyChangeListenerインターフェースを明示的に登録して、プロパティの変

  2. JavaのJToggleButton実装ガイド:ON/OFF切替ボタンの作り方を解説

    JToggleButtonとは JToggleButtonはAbstractButtonを拡張したクラスで、クリックするたびにONとOFFが切り替わるトグルボタンを実現するために使用されます。通常のボタンと異なり、押した状態を保持できるのが特徴です。 JToggleButtonの主な特徴 最初に押されたときは押し込まれた状態のままとなり、もう一度押してはじめて元の状態(押されていない状態)に戻ります。 ボタンが押されるたびにActionEventが発生します。 さらに、JToggleButtonはItemEventも発生させることができます。このイベントは、選択状態という概念を持つコンポー