JPMS は Java Platform Module System の略です。これは Java 9 の新機能です。 Java アプリケーションと Java パッケージは、Java モジュール システムを利用して Java モジュールにパッケージ化できます。 Java モジュールを使用すると、モジュールのどのパッケージと他の Java モジュールがそれを認識できるかを指定できます。 「Java モジュール」には、その実行に必要な Java モジュールもリストされています。
Java プラットフォーム システムは、Java ジグソーまたはプロジェクト ジグソーとも呼ばれます。ジグソーという名前は開発時に使用されました。これを開発する主な目的は、JRE をよりモジュール化することです。 JPMS は、クラスパス/JAR ヘル、大規模な単一 JDK、バージョンの競合、セキュリティの問題など、いくつかの主要な問題を解決します。
ここで、Java プラットフォームのモジュラー システムについてさらに詳しく調べてみましょう。
JPMS は SE (Standard Edition) の機能であり、Java のすべてのレベルに影響を与えるということを覚えておくことが重要です。それにもかかわらず、このパッチの目的は、Java 8 から Java 9 に切り替えるときに、ほとんどのプログラムを変更せずに実行できるようにすることです。その主な目的は、モジュールの外部ユーザーから一部のコンポーネントを隠しながら、モジュールに表示される関連パッケージを収集することです。
JPMS は次の目標を掲げて立ち上げられました -
大規模なアプリケーションとライブラリを簡単に整理します。
セキュリティの向上
アプリケーションのパフォーマンスを向上させる
小型デバイスを管理するためのプラットフォーム障害。
構造を改善します。
これまで、クラスパスは、Java で実行するときにプログラムがアクセスできるものを決定する主な要素でした。この役割を果たし、明確に理解されているにも関わらず、クラスパスは最終的にはすべての依存関係が接続された 1 つの大きな未分化なバケツになります。
モジュール パスはクラスパスの 1 レベル上に追加されます。これはパッケージの保管スペースとして機能し、アプリケーションがアクセスできるパッケージを選択します。
クラスパス |
モジュールパス |
---|---|
すべての Java バージョンに適用されます |
Java 9 以降にのみ適用可能 |
module-info.java | は必要ありません
module-info.java | は必要ですか?
ライブラリの追加は、プロジェクトに module-info.java | がない場合にのみ有効です。
ライブラリは module-info.java | がなくても動作します。
非モジュラー ライブラリのみを追加します |
モジュール式と非モジュール式の両方を追加できます |
弱いカプセル化と抽象化 |
強力なカプセル化と抽象化 |
弱いモジュール性 |
非常にモジュール化された |
ライブラリの一部をクラスパスに追加してプロジェクトにライブラリを追加することはできません |
ライブラリの必要な部分をプロジェクトに追加するには、ライブラリをモジュール パスに追加する必要があります。 |
JDK はモジュールで構成されています。システムで JDK を使用している場合は、ソース コードも入手できます。これを知らなかった場合は、これを確認して詳細を学んでください。
JDK インストール ディレクトリには /lib ディレクトリがあります。このディレクトリには src.zip ファイルがあります。次に、それを /src ディレクトリに抽出します。その後、/src ディレクトリを調べて /java.base ディレクトリを見つけ、次に module-info.java ファイルを見つけて、最後にそれを開きます。
上部の Javadoc コメントの後に、modulesection.base というフォルダーがあり、その後にエクスポート行が続きます。この形式は少し難解なので、あまり深くは説明しません。
ご覧のとおり、java.base モジュールは、java.io を含むいくつかのよく知られた Java パッケージをエクスポートします。これが、パッケージを収集するモジュールの動作方法です。
ディレクティブの要件は、export の要件とは逆です。したがって、指定されたモジュールにはモジュールが必要な場合があります。モジュールに対して Java コンパイラを実行するときにクラスパスを指定するのと同じ方法で、モジュール パスを指定します。これにより、依存関係を解決できるようになります。
Java 9 は下位互換性を念頭に置いて作成されました。ただし、新しいモジュール構造は大きな変化であり、特に大規模なコードベースでは問題が発生する可能性があります。
次のコマンドは、コードベースに起因する問題のトラブルシューティングに役立つ場合があります。コマンド jdeps がクラスを指す場合、依存関係とその依存関係を必要とするモジュールが検索されます。
依存関係によって問題が発生している場合は、Java 9 と互換性のある、依存するパッケージの新しいバージョンを使用してビルドすることをお勧めします。そうでない場合は、オプションを探してみてください。
java.lang.NoClassDefFoundError の解決方法 -
リーリーこれは、割り当てられたクラスがモジュールに移行されており、使用するコードからは見えないために見つからないことを訴えるコードです。解決策はいくつかあります。
JPMS は非常に重要な移行であるため、採用にはしばらく時間がかかります。幸いなことに、Java 8 は長期サポート リリースであるため、すぐに必要になるわけではありません。
ただし、長期的には、おそらくすでに得られている利点の一部を得るために、古いプロジェクトを移行し、新しいプロジェクトがモジュールを賢く使用することが必要になります。
###結論は###以上がJPMS: Java プラットフォーム モジュール システムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。