web-dev-qa-db-ja.com

OSGiとは何ですか?その使用例は何ですか?

OSGiという用語が使われ始めたばかりです(GlassFishやSpringなどのEEコンテナの一般的なJava EEコンテナのチュートリアルを読んでいる間)が見つかりませんでした。私のような初心者が理解するであろう、OSGiが何であるかについてのシンプルで、まっすぐでわかりやすい説明。

誰かがそのようなダミー証明の説明を提供できますか?たぶんいくつかの例やコードの抜粋を使って?

ありがとう!

58
Zac

簡単に言うと、OSGiはJava用の動的モジュールシステムです。モジュールをインストール、アンインストール、更新、開始、停止する方法を定義します。これらのモジュールはバンドルと呼ばれますが、最も単純な形式では、実際にはJava特別なマニフェストを持つjarファイルです。モジュールは、Java VM。

OSGiフレームワークは、バンドルの記述されたライフサイクルと依存関係を安全な方法で管理します。バンドルは、どのJavaパッケージをエクスポートし、どのパッケージをインポートするかを示す必要があります。インポートとエクスポートのステートメントにはバージョン情報で注釈を付けることができるため、同じパッケージの複数のバージョンを持つこともできます。同じJava VM。

OSGiアライアンスは、OSGiフレームワークと多くの付随サービスを指定する組織です。構成データ、デバイスアクセスなどの管理用.

これは非常に基本的な概要です。 OSGiはそれだけではありません。 https://www.osgi.org/developer/architecture/ (OSGiのアーキテクチャの概要)と https://www.osgi.org/developer/をご覧ください。 where-to-start / (OSGi Allianceが推奨する多数のリンクと詳細情報)。

65
Andreas Kraft

いくつかの反対票を払って;-)、私は自分の言葉でこれに答えたいと思います(理解に基づいて修正できるようにするためです)。

私たちはアプリケーションを一連のモジュールとして構築します。各モジュールはそれ自体が機能的にまとまり、他のモジュールと疎結合しています。すでにご存知かもしれませんが、これには多くの利点があります。時間の経過とともに、モジュール性の単位は、機能からクラス、パッケージ、デプロイメントの単位に改善されました(Javaのjarや.Netのアセンブリなど)。ただし、これはすべて開発時のみです。 、アプリケーション(モジュールのセット)がデプロイされても、サーバーはそれを1つの巨大なモノリシックアプリケーションとして認識します。つまり、実行中に論理境界が保持されません。OSGiは、これらの境界を中に明示的にします開発とランタイムここで説明するその他の利点

はじめに、この優れた無料の本をお勧めします OSGi in実際

Javaプラットフォームで作業している場合は、このプレゼンテーションも確認してください。 OSGi仕様がJava™テクノロジーに基づいている理由

32