-OSGiの効能

Eclipse3.0から導入されたOSGiですが、このディストリビューションモデルを採用したことによってEclipseに何のメリットがあるかというと、思いつくところ3つです。まず一番目に感じるのはプラグインの依存関係解決がこれまでのplugin.xmlのパース結果をリポジトリしていく仕組みに比べ、圧倒的に速いことです。OSGiマニフェストファイルに依存関係を簡素な記述で書くのでXMLをパースするのより相当簡単高速なのですね。Eclipseの起動時間はほとんどこのプラグインの依存関係解決なので、後々には2.1に比べて相当起動が速くなることもあると思います。
今まではプラグインをインストールするとEclipseの再起動が必要でしたが、2番目の利点として、OSGiによってプラグインがプラットホームの動作している最中でもインストール・アップデート・アンインストールが可能な、ダイナミック設定になります。前に3.0M9からのPDE-JUnitが速くなったということを書きましたが、OSGi対応していないプラグインの場合はM9でもM8以前のような遅さです。PDE-JUnitはこの恩恵を受けているのでしょう。非OSGiだとランタイムワークベンチを丸々立ち上げてますが、OSGiプラグインだとランタイムワークベンチを立ち上げてないんじゃないかなと観察から想像しています。
3番目は、プラグインを作らないと感じられない利点ですが、プラグインに同梱するリソースへのアクセスがシンプルになったことです。プラグインのインストールベースが「/(スラッシュ)」であらわされるルートパスになりました。いままでは、ドライブのルートを基点としたパス構成を、Platformというstaticな環境情報ユーティリティを使って、相対パス絶対パスに直すような作業が必要だったのですが、プラグインクラスローダー等含めうまく再構築されているために、リソースアクセスは直感的な実装でうまく動きます。反面、別のプラグイン領域を侵犯するのは難しくなりました。これも利点でしょう。マニフェストファイルに、Javaのパッケージ単位、で公開する旨記述しないとダメなようになりました。コレまでも似たような機能はあったのですがこのへんの依存関係に関わるところはもっと厳格になりました。これもよいことだと思います。プラグイン間の疎結合がすすみます。
以上のよさを、まだEclipse3.0M9では出し切ってません。なぜならば、M9に含まれるほとんどのプラグインがOSGiに対応していないからです。数えてみたら、84本のM9を構成するプラグイン中、8本のみが対応です。JDTやPDEといった中核プラグインすら対応していません。おそらく、M10以降で徐々にOSGi対応していくものと思います。前述したように、Eclipseはもっと起動が速くなると思うゆえんです。正式リリースは遠いかなと思います。が、3.0は早期に出して、OSGiの完全対応を今年一年かけて3.1でやるのかな?