初めてのOSGi with Bandtools
Building Modular Cloud Applications in Javaのスピンオフ記事です。
OSGiがなんだかプレゼンを聴いてもよくわからない。ググってみたけど、英語を読んでも日本語を読んでもよくわからない。具体例が全然無い。
じゃあ仕方ない、自分でいっちょやってみっか! ということで、プレゼン内で今日発売といわれていた「Modular Cloud Apps with OSGi」を購入。
2時半からヒルトンのグッズショップで販売、先着3名にはあげるよ! とセッション内で言ってたんですが、社蓄なので、持運びが便利なので、Koboで買いました。
紙版より400円引き(1000円)⇒クーポンで50%オフ(500円)⇒残りはスーパーセールでごっそりたまったポイントで決済。
ということで、期間限定ポイントも捌けて、実質タダでGetしました。クーポンウマー。
なお、
海外から普通にKoboの決済ページに飛ぶと、楽天ポイントが使えない上に、なぜか住所で日本が選べない嫌がらせを受けたので、会社のVPNをつないで日本にいると見せかけるハック発動。
今日試したのは、
I. Introducing Modularity in Java の、
3. Creating the First OSGi Application の Runnning the Codeまで。
とりあえず、一個の自作Bundle + Apache Felix上のいくつかのBundleを組み合わせて、とりあえず動かす、Hello World的なレベルまでです。
大して難しいことはやっていなくて、本のとおりたんたんと進めて言っただけです。
(特につまりはしなかったんだけど、特にキャプチャとかあるわけでないので、時々操作がこれでいいのか不安になることあり)
Bndtoolsで最初の雛形を作ったところ
Agenda Interfaceを作成。Drag & DropでExport Packagesとして追加
Apache Felixからダウンロードしたバンドルを、ローカルリポジトリに追加
動いた、、、らしい。
緑色の「+」が、ExportしているInterfaceですよ ってのをあらわしているそう。
プレゼンのデモでは、この「+」を含んでいるプロジェクトが10個くらいワークスペースに並んでいました。
とりあえず今日わかったのは、
- Bndtoolsを使うときは、1workspace = 1アプリになるので、新しいワークスペースを用意する
- プロジェクト外のほかのBundleからはInterfaceのみが見えていて、実装クラスは不可視
ということくらい。。。
疑問なのは、
- コンポーネントを全部ばらばらのプロジェクトにしていったら、ビルド地獄になるんじゃ(なので、自分でビルドするんじゃなくてApache ACEを使うのかな)
- コンポーネントを全部ばらばらのプロジェクトにしていったら、ソース管理ツール上でリポジトリ地獄になるんじゃ(もしかしたら1ディレクトリにまとめて、1リポジトリとして突っ込む?)
- 結局IFが変わっちゃったら組み合わせられなくなるから最初のIF設計の大変さは変わらず?
ということでした。
この辺は実際のサービスで使ってみないことにはわからんかも…。
せっかく本を買ったので、余裕があったら続きをまたやってみます。