目次||


第4章

Image I/Oプラグインの作成

4.1プラグインの概念

Image I/O APIは、開発者がだれでも独自の「プラグイン」を追加できる、プラガブルなフレームワークとして設計されています。プラグインは、Java言語クラスのセットとして定義されます。それらのクラスは、実行時にAPIにロードされ、APIに機能を追加できます。Java Image I/O APIが関係する範囲では、プラグインは、新しいファイル形式からイメージ・データを読み取る機能、新しいファイル形式にイメージ・データを書き込む機能、2つのファイル形式間でイメージ以外のメタデータを「変換する」機能および新しいデータ・ソースからストリーミング・データを読み取ったり、新しいデータ・シンクにストリーミング・データを書き込んだりする機能を提供できます。既存のプラグインと同じファイル形式用にプラグインを提供することも可能です。その目的は、パフォーマンスの改善、機能の追加、あるいは、そのファイル形式に格納されたデータを違う方法で表示することなどです。

稼動中のJava仮想マシンにプラグインを追加できるようにするには、そのプラグインをJavaバイトコード・ファイル(.クラス・ファイル)にコンパイルしておかなければなりません。このクラス・ファイルには、APIによって定義されているさまざまなクラスのサブクラスのコードが入ります。たとえば、イメージを読み込む機能を提供するプラグインには、APIによって定義されたjavax.imageio.ImageReaderというabstractクラスの新しいサブクラスが含まれています。クラス名の一意性を保証するには、インターネットのドメイン名を逆にして使うという慣例を採用できます。

プラグイン全体をロードしてインスタンス生成すると負荷が掛かり過ぎることがあるので、そのプラグインについての情報を提供するため、付加的なクラスを「代役」として使用します。このクラスは、たとえば、プラグインを実際にインスタンス生成する前に、そのプラグインによって処理できるファイル形式を判別するために使用できます。

この「代役」オブジェクトは軽量なので、Java仮想マシンの1回の起動の範囲内でこのAPIが使用されるたびにロードしてインスタンスを1つ生成しても負荷が掛かり過ぎません。利用可能なサービスについての情報を提供するために小さいクラスを利用するというこのパターンを、「サービス・プロバイダ・インタフェース」といいます。



目次||

Copyright © 1993, 2020, Oracle and/or its affiliates. All rights reserved.