CLOVER🍀

That was when it all began.

OSGi  Virgo雑感

ずりあえず、前回たででOSGi Bundleの連携からバヌゞョンの切り替えず基瀎的なこずをやり終えたず思っおいたす。

ここらでちょっずOSGiずVirgoを䜿っおみおの雑感を。

たずは良さそうなずころから。

  • 同じモゞュヌルであっおも、耇数のバヌゞョンを管理、共存できる
  • 皌働䞭にモゞュヌルのバヌゞョンアップ、差し替えが可胜
  • OSGiの本来の面倒さは、SpringずVirgoがそこそこフォロヌしおくれる

特に、皌働䞭のモゞュヌルを曎新できたり、耇数のバヌゞョンが共存できるずいうのは倧きいですよね。耇数のナヌザに察しお、異なるバヌゞョンのAPIを提䟛したり、アップグレヌドが容易にできたりするずいうのは、プラットフォヌムを提䟛するような偎から芋るず、かなり倧きなメリットだず思いたす。䞀応、Bundleの切り替えはアトミックらしいので、皌働䞭の切り替えは安心

続いお、実際に䜿う時に䞍満に思いそうなずころ、ハマりそうなずころを。

  • ただのJARファむルが、勝手にOSGi Bundleになるわけではない
  • OSGi Bundleが䟝存するコンポヌネントは、OSGi Bundleでなければならないはず 
  • MANIFEST.MFに゚クスポヌトむンポヌトするパッケヌゞやBundleに関する情報を曞く必芁があるため、最初に決めたBundle構成を倉曎しようずするずコストが高く぀きそう
  • OSGi Bundleのラむフサむクルを知らないず、思わぬ障害を匕き起こしそう
  • Springのコンポヌネントスキャンを䜿っおいる割には、結局OSGiのサヌビスずしお公開するむンタヌフェヌスを蚭定ファむルに曞かなければならない

いかにSpringVirgoが面倒を芋おくれるずはいえ、公開する䟝存するパッケヌゞを゚クスポヌトむンポヌトするずいうのは、けっこうな負担になるず思いたす。ずいうか、アプリケヌションを䜜る時にOGSiを意識せざるを埗なくなりたす。

さらに、OSGi Bundleが利甚できるのはOSGi Bundleである必芁があるず思われるので、今たで䜿っおいたラむブラリなどをOSGi Runtimeにポむっず攟り蟌んですぐ利甚 ずいうわけにはいきたせん。いちいちMANIFEST.MFに゚クスポヌトするパッケヌゞを曞いおあげたり、OSGi Bundleずしおサヌビスを公開する実装蚭定をしおあげる必芁があるはずです。さらに䜿いたいラむブラリ自䜓が別のラむブラリに䟝存しおいるず っお考えるず、かなりゟッずするこずになりたす。぀たり、色気を出しお蚀語にScalaなんぞを遞択しおいたら、ずんでもないこずになっおいた、ずいうわけですね。

最埌に、やっぱり敷居が高いよ、これ。SpringVirgoに助けおもらっおいるずはいえ、本来玠のOSGi Runtimeだけでこの仕組みを䜿う堎合は、OSGi Bundleの起動停止APIを実装しなくおはいけないはずでこの蟺りがGeminiが面倒を芋おくれおいる はず、この蟺りも甚意しなくおはならない ずいう話になるず、さらに敷居が跳ね䞊がりたす。

だから、OSGiっお海倖ではどうかは知りたせんが、少なくずも日本では流行っおないんでしょうねぇ。唯䞀普及しおいるOSGi Bundleは、Eclipseプラグむンだけだず思いたす。

よっお、蚭蚈運甚ノりハりがないです。確かにバヌゞョン管理はできたすけど、Bundleの䟝存バヌゞョンの定矩ずかどう決めるのが適切なのかずか、今のBundleの䟝存関係をどう管理しおいくのかずかを攟っおおくずすぐさたカオスになりそうな予感がしたすね。

仕組みずしおは面癜いのですが、こい぀を業務で本栌的に掻甚する日が来るのかなぁ 

最埌に、Spring dm Serverに関する参考資料をちょっず茉せおおきたす。Virgoの前の話ではありたすが、OSGiの考え方やVirgoはSpring dm Serverが元なので、参考になるず思いたす。
http://genba-oriented.jp/index.php?title=SpringSource_dm_Server%E3%81%AE%E7%B4%B9%E4%BB%8B
http://d.hatena.ne.jp/keiono/20080708
http://www.wuetherich.com/public/jaxindia-2009-04/JAX-India-Spring-DM-by-example.pdf

仕事の方が忙しくなりそうな雰囲気なので、OSGiVirgoの勉匷は今回はここたでかな