OSGi
詳細情報
- 種類
- Java向けモジュールシステム
- 公開年
- 1999
- 管理元
- Eclipse Foundation(以前はOSGi Alliance)
- 後継
- JPMS(Java 9)
Java向けの動的モジュール。依存関係にバージョンを持たせ、プロセスを動かしたままコードを入れ替えられる。
始まりは1999年の「Open Services Gateway initiative」で、ホームオートメーションやセットトップボックスが狙いだった。後に組織はこの名称を静かにやめている。単位はバンドルで、どのパッケージをエクスポートし、どのバージョン範囲をインポートするかを厳密に記したマニフェスト付きのJARである。実行環境は各バンドルに専用のクラスローダーを与えるので、同じライブラリの二つのバージョンを一つのプロセスに共存させられる。
代償は複雑さだ。Eclipseはバージョン3.0(2004年)からOSGi実装のEquinoxの上に作られており、Apache KarafやLiferayも今なおこれに依存している。新規システムでは、この発想は事実上敗れた。2017年のJava 9でJPMSが登場し、多くのチームはJVM内のモジュールシステムより、サービスごとに一つのコンテナで分離するほうが単純だと結論づけた。