システム内のどのモジュールでも、インタフェースまたはクラスの種類を問わずに登録と検索を行えるように、NetBeans Platform は次の一定の適合性がある 2 つのソリューションをサポートしています。
どちらのアプローチを使用するかは、次の要因で決定します。
Lookup は古いバージョンの JDK で利用できるため、1.6 より古い JDK で実行している場合、ServiceLoader の代わりとして使用できます。
Lookup は NetBeans の実行時コンテナ内で動作する準備が整っています。システム内の全モジュールを発見する方法や、定義済みサービスを効率的に読み込む方法を備えています。
Lookup はリスナーをサポートしています。クライアントコードではリスナーを添付したり、ルックアップの内容の変更を監視したりできます。これは NetBeans 実行時コンテナで作成された動的な環境に適応するために必要な改良です。ここでは実行時にモジュールを有効または無効にできますが、一連の登録済みのサービスプロバイダに影響する場合があります。
Lookup は拡張および交換が可能です。JDK 1.6 の ServiceLoader クラスはハードコードされた動作のある final クラスで、NetBeans Lookup は多様な実装を可能にする拡張可能なクラスです。これはユニットテストを書く際に便利な場合があります。META-INF/ services を読み込むだけではなく、たとえば要求したサービスプロバイダをインターネット上などで検索するような、拡張されたバージョンのルックアップを書くことも可能です。
Lookup は汎用の抽象化オブジェクトです。JDK の ServiceLoader に含められるのは、事実上 1 つのクラスローダーにつき 1 つのインスタンスだけですが、個々がサービスとインタフェースをクエリーする単一の場所を表す、独立した Lookup インスタンスは数千になる場合があります。実際、これが Lookup が NetBeans で使用されている方法で、各ダイアログ、ウィンドウ要素、ツリーのノードなどのコンテキストを表しています。
Lookup を扱った 4 部からなる一連のチュートリアルについては、次を参照してください。