目次 | 前の項目 | 次の項目 JavaTM Image I/O API ガイド


4.2 プラグインの JAR ファイルへの埋め込み

1 つのプラグインは複数のクラスで構成されるので、それらのクラスを 1 つのファイルにまとめることができるように、JAR ファイルの機構が使用されます。JAR ファイルには、クラスファイルのほかに、その内容を記述するために使用する追加のファイルを含めることができます。特に、JAR ファイルには、そのファイルに含まれているサービスプロバイダをリストするため META-INF/services ディレクトリが含まれます。JAR ファイルに格納されたクラスにより実装される各サービスプロバイダインタフェースごとに、サービスプロバイダインタフェースの完全指定のクラス名を名前として付けられたファイルが、services ディレクトリ内に置かれます。そのファイルには、JAR ファイル内に存在する実装クラスの完全指定のクラス名を、1 行に 1 つずつ組み込む必要があります。たとえば、JAR ファイルに com.mycompany.mypackage.MyImageReaderSpi という名前のサービスプロバイダクラスが含まれていて、そのクラスが javax.imageio.spi.ImageReaderSpi インタフェースを実装している場合は、com.mycompany.mypackage.MyImageReaderSpi という行の入った META-INF/services/javax.imageio.spi.ImageReaderSpi という名前のファイルが存在している必要があります。

Image I/O API は、クラスパス上に見つかるすべての JAR ファイルを自動的に調査して、Image I/O プラグインを含む JAR ファイルを識別します。見つかった各プラグインについて、そのサービスプロバイダクラスのインスタンスが 1 つ生成され、実行時レジストリクラスである javax.iamgeio.spi.IIORegistry 内に格納されます。

アプリケーションクラスパス (CLASSPATH 変数を使って設定するパス) 上の JAR ファイル、または任意の場所にある JAR ファイル (たとえば、ネットワーク URL 経由で入手できるファイル) を、アプリケーションからロードすることもできます。起動時間を短くするため、これらのファイルはデフォルトではロードされません。

javax.imageio.spi.IIORegistry クラスは、インストールされたプラグインを登録解除したり、新しいプラグインを登録したりするために、実行時に使用することもできます。特に、ClassLoader を使用してネットワーク経由でプラグインをロードした後、そのプラグインを登録して、ローカルにインストールされたプラグインとまったく同じようにして使用することができます。

大部分のアプリケーションは、実行時レジストリを直接に取り扱う必要はありません。代わりに、適切なプラグインを自動的に検索する javax.imageio.ImageIO クラス内の簡易メソッドを利用できます。



目次 | 前の項目 | 次の項目
Copyright © 2001 Sun Microsystems, Inc. All Rights Reserved.