最近、OSGiは注目されているようです。多くのbenefits呼び出されます。OSGiのブレーク偶数ポイント
- 削減複雑
- リユース
- 簡単に展開
- 私は非常に具体的なユースケースを求めています(など)
を
をバージョニング - 中小規模のウェブアプリケーション。 OSGiはそれらにどのようなメリットをもたらしますか?それは実際にそれの価値があるのですか?
最近、OSGiは注目されているようです。多くのbenefits呼び出されます。OSGiのブレーク偶数ポイント
を
をバージョニング - 中小規模のウェブアプリケーション。 OSGiはそれらにどのようなメリットをもたらしますか?それは実際にそれの価値があるのですか?
私はOSGiの大ファンですが、私はいいえです。あなたが他のOSGiバンドルと一緒に作業しているのでなければ、この問題を解決しなければ簡単には解決できない問題があります。
メリットは、クラスパス分離(IMHO)です。同じJAR /クラスの異なるバージョンが必要な場合は、実行中にアプリケーションの特定の部分をアップグレードしているか、多数のサードパーティモジュールを組み合わせているため、OSGiは素晴らしいです。
これは簡単なことではありません。OSGiでは容易ではありません。それはきれいにされていますが、環境スタック内の別のレイヤを犠牲にしています。そして、学び、維持する多くの仕事。
ドキュメントは特に初心者向けではありません。
私はそれについて学ぶことをお勧めします - Eclipseプラグインの構築は非常に良い方法ですが、あなたがそれをよく知るまで、あなたの開発計画に組み込むことはできません。
私はいつも「それは依存している」と言います。
あなたの環境
は誇らしげに「物事を成し遂げる」経験した開発者として自分自身を考えていないOSGIの経験(と既存のチームを考えてみましょう。彼らは、主要な痛みやスロースタートを経験するだろう可能性があります。
(あなたが思っているより多くの)多くの開発者は、このようなAntやMavenとしてビルドツールに精通していない、と彼らは唯一のツールを構築、これらの限定された機能を使用しているとき。
作成OSGIバンドルは、Eclipse,Ant tasksまたはMaven BND plugin VSで、jarアーカイブのスクリプトまたは手作業で記述されたマニフェストで実現するのが最適です。
小規模アプリケーション小さなアプリケーションについて
このようなJythonなどの動的言語を使用することができながら、OSGI等、不必要な複雑さを導入又はJPF又はSPIなどのプラグイン・フレームワーク。リフレクションとシンプルなカスタムクラスローダーを使って直接行くこともできます。
ビッグアプリケーション
ビッグアプリケーションは、それらが一から書かれている場合は特に、OSGIの恩恵を受ける可能性があります。既存のアプリケーションにOSGIを統合するIMHOは、モジュラーアーキテクチャを提供するためのパッチを導入するようなものです。
私の経験から、多くのアプリケーションを書き直した後は、プロジェクトの初期段階でモジュール性について考えるのが良いでしょう。
その他の懸念
展開: これは、任意のアプリケーションでも同じです。 Java Web Startアプリケーションの配備に慣れている場合は、配備は問題になりません。 OSGIに慣れていれば、配備は心配する必要はありません。
これは、本来、アプリケーションを本番環境に配備する際に、問題が発生することがあります。
バージョン管理: アプリケーションにバージョン管理を提供する方法は多数あります。しかし、バージョン管理を「情報」としてのみツール(依存関係の要件を管理する)として使用する場合、バージョン管理は重要ではありません。
リユース: あなたは再利用のためにコードを書くことが多いOSGIを使用しますが、任意のよく書かれたAPIを念頭に置いて、コードの再利用で設計されています。
Eclipseは、OSGIで書かれた大成功した大きなアプリケーションの第1の例です。 OSGIを使用せず、モジュラーである他の大きな/素晴らしいツールがあります。多くのモジュラーフレームワークで
結論
、それが依存関係を処理することは困難ですが、スタート/ストップ/アンインストール/アプリケーションを再起動することなく、実行時に機能をインストールします。
OSGIは、マイナーなコストのIMHOで柔軟性を提供します。
これは主観的ですが、CW素材ではありません。私は最良の議論で答えを選ぶつもりです。 –
Partly Cloudyの回答と一致して、「複雑さの軽減」は議論の余地があります。 – Thilo