2016-12-12 6 views
1

Eclipseでバンドル依存関係を作成する方法はいくつかあります。私の質問は、「Eclipseはなぜ2つの異なるファイル(plugin.xml、manifest.mf)を使用しているのですか」、「EquinoxはEclipseエクステンション・メカニズムを扱うのですか?それとも、OSGi関連の情報? " 私が理解する限り、彼らはEquinoxに移行する前に拡張機構を提供していました。拡張メカニズムの背後にあるアイデアは、開発者がEclipse RCPを今後拡張するための正確なインターフェースを定義できるということでした。この情報は、提供された拡張ポイントと実装された拡張を指定する "plugin.xml"というxmlドキュメントに格納されます。Plugin.xmlはどのようにOSGi仕様に関係していますか?

Equinoxは、現在実装されており、プラグイン(ライブラリなど)で使用できる完全に機能的なサービスを提供します。サービスが既に存在し、バンドルで使用できることを意味します。 OSGi関連の情報は、これらのオプション情報を追加することによってMANIFEST.MFに配置されます。 OSGiを使用しないアプリケーションはこの情報を考慮しませんが、オプションであるため完全に機能します。

私が間違っている場合はお知らせください。

+1

あなたの実際の質問がここにあるのは本当に明確ではありません。スタックオーバーフローは、幅広い議論ではなく、特定のプログラミング上の問題を解決するためのものです。エクステンションポイントは、エクイノックスの一部ではない拡張ポイントレジストリによって管理されます。 –

+0

問題が解決したと思われる場合は、緑のチェックマークをクリックして「受け入れ済み」とマークしてください。これにより、まだ回答のない古い投稿に焦点を当てることができます。 –

答えて

3

Eclipse 3.0より前のEclipseランタイムには、独自のモジュール概念と実装がありました。 plugin.xmlは、他のプラグインへの依存関係を宣言するだけでなく、拡張を宣言するためにも使用されました。

Eclipse 3.0では、プロジェクトのメンテナーはOSGiを使用してEclipseをモジュール化し、Equinoxが生まれました。これは、OSGi仕様を実装しました。これは、以前のバージョンから継承したEclipse特化を提供するために拡張されました。

以降、すべてのプラグインもOSGiバンドルですが、必ずしもそうである必要はありません。一般に、すべてのプラグインとバンドルは、jarファイルに含まれているメタデータを無視してプレーンライブラリとして使用することもできます。しかし、実行時には、プラグイン/バンドルは、Equinox/OSGiが提供するインフラストラクチャーに依存するため、しばしば有用ではありません。

したがって、plugin.xmlファイルは拡張機能と拡張ポイントのみを保持し、MANFIEST.MFファイルはOSGiランタイムによって読み込まれ、他の宣言の中で依存関係情報を取得します。

  • のOSGi仕様の実装を、プラスのEclipse固有の追加
  • Eclipseプラットフォームと他のEclipseベースのプロジェクトで使用されるコアライブラリ:

    春分プロジェクトは2つのことを提供します。

サービスもOSGi仕様の一部です。技術的には、サービス拡張もエントリポイントとしてプラットフォーム/他のプラグインの機能に使用できます。しかし、歴史的な理由から、私はほとんどのエントリポイントは拡張ポイントの形で提供されると仮定します。

拡張ポイント設計の目標の1つは、起動時および実行時にEclipseのパフォーマンスを低下させることなく、大量の拡張を管理することでした。このため、拡張ポイントと拡張は、それらを提供するプラグインのOSGiバンドルを活動化することなく読み取られます。アクティベーションは、拡張機能によって提供されるコードを呼び出す必要があるときにできるだけ遅く発生します。

あなたの質問に答えたり、あなたの前提を確認しますか?

関連する問題