目次 | 前の項目 | 次の項目 | JavaTM Image I/O API ガイド |
Image I/O API は、開発者が誰でも独自の「プラグイン」を追加できる、プラグイン可能なフレームワークとして設計されています。プラグインは、Java 言語クラスのセットとして定義されます。 それらのクラスは、実行時に API にロードされ、API に機能を追加することができます。 Java Image I/O API が関係する範囲では、プラグインは、新しいファイル形式からイメージデータを読み込む機能、新しいファイル形式にイメージデータを書き込む機能、2 つのファイル形式間でイメージ以外のメタデータを「変換する」機能、および新しいデータソースからストリーミングデータを読み込んだり、新しいデータシンクにストリーミングデータを書き込んだりする機能を提供することができます。既存のプラグインと同じファイル形式用にプラグインを提供することも可能です。その目的は、パフォーマンスの改善、機能の追加、あるいは、そのファイル形式に格納されたデータを違う方法で表示することなどです。稼動中の JavaTM 仮想マシン* にプラグインを追加できるようにするには、そのプラグインを Java バイトコードファイル (.クラスファイル) にコンパイルしておかなければなりません。このクラスファイルには、API によって定義されているさまざまなクラスのサブクラスのコードが入ります。たとえば、イメージを読み込む機能を提供するプラグインには、
javax.imageio.ImageReader
という abstract クラスの新しいサブクラスが含まれています。クラス名の一意性を保証するには、インターネットのドメイン名を逆にして使うという慣例を採用できます。プラグイン全体をロードしてインスタンス生成すると負荷が掛かり過ぎることがあるので、そのプラグインについての情報を提供するため、付加的なクラスを「代役」として使用します。 このクラスは、たとえば、プラグインを実際にインスタンス生成する前に、そのプラグインによって処理できるファイル形式を判別するために使用できます。
この「代役」オブジェクトは軽量なので、Java 仮想マシンの 1 回の起動の範囲内でこの API が使用されるたびにロードしてインスタンスを 1 つ生成しても負荷が掛かり過ぎません。利用可能なサービスについての情報を提供するために小さいクラスを利用するというこのパターンを、「サービスプロバイダインタフェース」といいます。