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

Java 9の自動モジュール(Automatic Module)とは?仕組みと命名ルールをわかりやすく解説

自動モジュール(Automatic Module)とは、モジュールパス(module path)上に配置されたJARファイルのことです。Java 9以降では、既存の多くのライブラリがまだモジュール化されていないという課題がありました。この移行を容易にするために、任意のライブラリのJARファイルをアプリケーションのモジュールパスに追加するだけで、そのJAR内のパッケージを利用できるようになっています。

モジュールパスに置かれたJARは暗黙的に自動モジュールとして扱われ、module-info.java の requires ディレクティブで指定することが可能です。モジュール名はJARのファイル名から自動的に導出され、「requires」ディレクティブで使用できる有効なJava識別子である必要があります。

自動モジュールの主な特徴

  • すべてのパッケージを暗黙的にエクスポートします。そのため、自動モジュールを読み取れるすべてのモジュール(名前なしモジュール(unnamed module)を含む)は、自動モジュールの各パッケージ内のpublic型にアクセスできます。
  • 他のすべてのモジュールを暗黙的に読み取る(requires)性質を持ちます。これには他の自動モジュールや名前なしモジュールも含まれるため、自動モジュールはシステム上の他のモジュールが公開しているすべてのpublic型にアクセスできます。

実際の実行時には、次のように --module-path オプションで複数のディレクトリを指定し、アプリケーションを起動します。

%JAVA_HOME%\java --module-path ./libs:./libs-legacy --module app/com.app.Main

自動モジュールの命名ルール

自動モジュールのモジュール名は、JARファイル名から以下のルールに従って決定されます。

  • 拡張子「.jar」は削除されます。
  • バージョン番号は除去されます。例:mylib-1.2.3 → mylib
  • 英数字以外の文字はピリオド(.)に置き換えられます。
  • 連続するピリオドは1つにまとめられ、名前の先頭と末尾にあるピリオドは削除されます。

たとえば「commons-lang3-3.12.0.jar」というファイルは、自動モジュール名として「commons.lang3」になります。この仕組みにより、モジュール化されていないレガシーなライブラリも、JPMS(Java Platform Module System)環境へスムーズに組み込むことができます。

  1. JavaScriptのモジュールとは?基本の仕組みと使い方を実例付きで解説

    JavaScriptのモジュールとはモジュール(Module)は、ES2015(ES6)で導入された機能で、大きなコードを小さな部品ごとのファイルに分割して管理するための仕組みです。モジュールの中には、クラスや関数など必要な処理をまとめて定義できます。モジュールでは、「export」と「import」という2つのキーワードが中心となります。exportを使って変数・関数・オブジェクトを外部に公開し、importを使って別のファイルからそれらを読み込んで利用します。従来のJavaScriptでは、読み込んだすべてのスクリプトがグローバルスコープを共有していたため、変数名の衝突などの問題が発生しや

  2. Pythonの日付操作モジュールとは?代表的なライブラリ5選を徹底解説

    Pythonでは、標準ライブラリとPyPI(Python Package Index)の両方に、日付や時刻を扱うための多彩なモジュールが用意されています。本記事では、特によく利用されている代表的なライブラリを5つ紹介します(順不同)。 datetime(標準ライブラリ) datetimeモジュールは、日付や時刻をシンプルな用途から複雑な用途まで柔軟に操作するためのクラス群を提供します。日付・時刻の演算(加減算など)もサポートしていますが、実装の重点は、出力フォーマットやデータ操作に役立つ属性の効率的な取得に置かれています。 time(標準ライブラリ) timeモジュールは、時間に関するさま