4

私はOSGIフレームワークを初めて使用します。私はサイトを調べて、OSGIフレームワークについて読みました。率直に言って、私は何も理解していませんでした。以下は私の疑問です

  1. OSGiはモジュール性を提供することになっています。通常のjarファイルを使用してモジュール性を実現することはできませんか?
  2. OSGiに動的コンポーネントモデルがあるとはどういう意味ですか?
  3. バンドルは、インストール、開始、停止、更新などが可能です。なぜバンドルをインストールしたいのですか?他の通常のjarファイルにアクセスするのと同じように直接アクセスできないのはなぜですか?

私は完全に混乱しています。誰かが私に答えることができますか?いくつかの例をあげることができれば。

4

5 に答える 5

4
  1. いいえ。JARはクラスのオープンコンテナであり、ランタイムカプセル化を提供しません。http://www.slideshare.net/bjhargrave/why-osgiを参照してください
  2. 動的とは、VM/OSGiフレームワークの実行中にバンドルのライフサイクルを変更できることを意味します。つまり、バンドルをインストール/開始/停止/更新/アンインストールするためにシステムを再起動する必要はありません。
  3. バンドルのライフサイクルを管理するためにこれらのことを実行したいとします。OSGiを動的に使用する必要はありません。フレームワークを開始する前にバンドルを事前にインストールするだけで、モジュール性とサービスに使用できます。
于 2012-08-24T18:16:55.433 に答える
4

私のモジュールの定義は、コントラクト(つまり、事前定義された可能な相互作用のセット)を介して他のモジュールと通信するカプセル化の単位です(つまり、内部の詳細を非表示にします)。JARファイルは、これらのプロパティのどちらも示さないため、モジュールではありません。カプセル化はありません。すべての内部実装の詳細が表示され、外部からアクセスできます。コントラクトはありません。JARファイルをクラスパスに配置するだけで、必要な機能が提供されることを期待できます。

動的とは、OSGiバンドル(モジュール)を実行時にインストール、アップグレード、またはアンインストールできることを意味します。これは、実行中のシステムをアップグレードしたり、大規模なネットワーク全体にソフトウェアを効率的に展開したりする場合に非常に役立ちます。

ソフトウェアは使用する前に必ずインストールする必要があるため、バンドルをインストールする必要があります。JARファイルもインストールする必要があります!インストールの方法のみがわずかに異なります。つまり、JARファイルがクラスパスに追加されますが、バンドルはinstallコマンドを使用してインストールされます(これは、スクリプト化するか、APIから呼び出すこともできます)。OSGiを使用すると、このプロセスをより詳細に制御できます。

于 2012-08-26T06:50:15.730 に答える
3

OSGiブログの最初の質問に答えようとしました:http://blog.osgi.org/2013/08/dear-prudence-cant-we-achieve.html

来週、次の答えになります。

于 2013-08-26T14:07:54.580 に答える
2

他のすべての回答で扱われている真のモジュールとしてのバンドルの側面とは別に、OSGiを非常に強力にする他のいくつかの機能があります。

  1. サービスレイヤーを使用すると、実行時にオブジェクトを動的にワイヤリングできます。宣言型サービスと組み合わせると、 IOCのすべての利点を備えた非常に強力で柔軟なプログラミングモデルが得られます。
  2. エクステンダーモデルは、より高いレベルで一種のIOCを提供し、拡張性に大きなメリットをもたらすことができます。
于 2012-08-28T06:41:11.183 に答える
1

OSGi仕様の実装について読むことは有利かもしれません。

Eclipseを使用したことがある場合は、OSGiのいくつかの利点を経験しており、それを知らないかもしれません。

これは、Equinoxとは何かの基本についてのすばらしい説明です。

http://www.vogella.com/articles/OSGi/article.html

于 2012-08-24T19:51:53.713 に答える