目次||

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

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