OSGi 仕様で主要な概念となっているのは、モジュール性とサービス指向性です。実装クラスを公開することも OSGi フレームワークではサポートしているものの、これは推奨される方法ではありません。プログラミングの観点からは、このよな方法の代わりに、バンドルがサービス (またはクラスのインスタンス) を公開し、利用することによって、バンドル同士がやりとりすることが期待されます。そのために、OSGi では以下の 2 つの手法を使用できるようになっています。
OSGi サービス層が提供する BundleContext オブジェクトを使用して、サービス・レジストリーへのサービスの登録、サービス・レジスリーからのサービスの取得を行います。
OSGi R4 仕様の宣言型サービスを利用します。
宣言型サービス (Declarative Services: DS) は、コンポーネント・モデルの概念を宣言します。コンポーネントとは、サービスを提供し、参照先サービスを取得するために使用される、コンポーネント定義ファイルによって定義された Java オブジェクトです。
http://www.ibm.com/developerworks/jp/opensource/library/os-eclipse-osgi/