1. ホーム
  2. java

[解決済み] なぜ、Jigsaw / JPMSなのか?

2023-07-15 17:28:42

質問

Java のパッケージ管理システムは、私にとって常にシンプルで効果的に見えました。それは JDK 自身によって多用されています。私たちは、名前空間とモジュールの概念を模倣するためにそれを使用してきました。

とは何ですか? プロジェクト・ジグソー (別名 Javaプラットフォームモジュールシステム ) を埋めようとしているのでしょうか?

公式サイトより。

このプロジェクトの目標は、Java SE プラットフォームのための標準モジュールシステムを設計し、実装することである。 システムを設計し実装すること、そしてそのシステムをJava SEプラットフォー プラットフォームそのものとJDKに適用することです。

どのように解決するのですか?

JigsawとOSGiは同じ問題を解決しようとしています。それは、より粗い粒度のモジュールを、その内部をシールドしながら相互作用させる方法です。

Jigsawの場合、粗視化されたモジュールには、Javaのクラス、パッケージ、そしてそれらの依存関係が含まれます。

ここに例があります。SpringとHibernateです。 どちらもサードパーティのJAR CGLIBに依存していますが、そのJARの異なる、互換性のないバージョンを使用しています。 標準のJDKに依存している場合は、どうすればよいでしょうか。 Springが望んでいるバージョンを含めるとHibernateが壊れ、逆もまた然りです。

しかし、Jigsawのような上位のモデルがあれば、異なるバージョンのJARを異なるモジュールで簡単に管理することができます。 より上位のパッケージとして考えてください。

もしあなたが SpringをGitHubのソースから をビルドしてみると、それもわかると思います。 彼らはフレームワークを作り直し、コア、パーシステンスなど、いくつかのモジュールから構成されるようにしました。 アプリケーションに必要な最小限のモジュールの依存関係を選び、残りを無視することができます。 以前は1つのSpring JARで、その中にすべての.classファイルがありました。

更新しました。5 年後 - Jigsaw には、まだいくつかの の問題 を解決する必要があります。