2012-03-22 12 views

答えて

6

アイデアは、アプリケーションの依存関係を分けることができるということです。アプリケーションをより移植性のあるものにするための試みである。コンパイル時にアプリケーションをapi.jarに依存させることができます。次に、プログラムを実行する場合は、適切なインプリメンテーション・ジャー(impl.jar)と適切なリソース・バンドル・ジャー(bundle.jar)を切り替えます。

例として、ライブラリがデータベースとのやり取りを行うとします。 api.jarを参照するようにコードを記述します。たとえば、特定のタイプのデータベースで作業する必要があるとします。 MySQL - MySQLデータベース固有のimpl.jarをクラスパスに追加すると、クラスパスが機能します(後で別のデータベースが必要な場合は、そのクラスパスをクラスパスで切り替えるだけです)。

bundle.jarはもう少しわかりにくく、一般的ではありません。これは、ライブラリの構成設定を提供するために使用できます。たとえば、言語固有の設定や、より具体的な設定を提供するために使用できます。データベースライブラリの場合、実装はMySQLのすべてのバージョン用に設計されており、リソースバンドルjarは特定のMySQLバージョンで動作するように設定ファイルを提供します。

6

  • name-api.jarは、APIのインタフェースのみが含まれています。
  • name-impl.jar
  • name-bundle.jarは、Javaアプリケーションを実行するために必要なすべてのクラスで、すべてをバンドル名-api.jarの内のすべてのインターフェイスの実装を提供します。
-1

私はこのような配置を見たことがありません。

デザイナーがアプリを3つのJARにパッケージ化した場合、3つすべてが必要であると言えます。

しかし、デザイナーが選択したものであることを認識する必要があります。それは可能性があるs /彼はそれのすべてを持つ単一のJARを作成することができたとあなたは誰も賢明ではないだろう。

私は今は推測していますが、それらのJARを開く場合は、API JARのインタフェース、impl JARのインタフェースの実装、バンドルJARのリソース・バンドルおよびその他の.propertiesファイルのみが表示されます。それを試してみてください。あなたは何かを学ぶでしょう。

1

api.jarにはAPIインターフェイスが含まれています。これらは、APIの実装に従うべき契約のインターフェースです。

impl.jarは、api.jarの実装です。 api.jarのないimpl.jarを持つことはできません。

bundle.jar(私が間違っていない場合は)リソースです。これらは、実行に必要な実装コードに必要なリソースです。

関連する問題