Hatena::ブログ(Diary)

Fly me to the Juno! このページをアンテナに追加 RSSフィード

2007-12-05

Spring Dynamic Modules を試す

金曜日にJSUGでSpring Dynamic Modulesについて話をさせていただく。それで資料を作るためにせっせと環境を作ったり動かしたりしていたらそっちが面白くて資料がまったくできていない罠。ある人からは「カタログスペックだけでも良いんじゃない?」と言われたけれど、それじゃ何がうれしいのか伝わらないのがOSGiみたいなインフラ側の技術かなと思ったけれど、書きながら、じゃ、SpringFrameworkのうれしさは?というと「DIって良いよね。」とか、「いろんなフレームワークと統合できるよね」とか、カタログスペックだけで語れる気もしてきた。

SpringとOSGiの統合のカタログスペック上のうれしさは、稼動中のVM上で動的にDIするサービスを入れ替えることができること。

例えば画面遷移を確認するのにはモックのサービスを使って確認するけれども、きちんと動いているかどうかの確認には実際のサービスを使って動作を確認したいという場面。これまではAPサーバーを止めて読み込む設定を切り替える必要があったけれども、それが不要になりそうな技術になりえそう。

時間がなくなってしまったので後でまとめてます。

2007-12-02

Eclipseが起動時にpluginsフォルダをロードできる訳

どうもOSGiの規格ではフォルダを指定してBundleをロードするようなものが用意されていない様子。追っかけてみるとorg.eclipse.update.configuratorでロードしている。このプラグインは更新サイトの管理の責務も負っているのでものすごく妥当。

そうだとすると、OSGiでBundleを指定する方法は各URLをosgi.bundlesとして指定するしか方法はないようです。それもそうかもしれないと納得です。

2007-11-03

Eclipseはマイクロカーネルか?

って書いておいて、マイクロカーネルだといってみる。まだ整理仕切れていないが、自分がこれまで調べてみて、わかったことをまとめてみた。

なお、この日記では文脈に応じてBundleとPluginを呼び変えてますが、どちらも同じものをさします。OSGiから見たときはBundle、Eclipseから見たときはPluginと呼ぶようにしましたので、注意してください。

UI的にはコア部分にWorkbenchがいて、それに対してViewやEditorを追加していく。もっと低レイヤーで語ってみると、Equinox(OSGi)が基盤となり、それに対して、BundleServiceを登録していく。plugin.xmlを読み込んで、ViewやEditorなどを作成するようなBundleServiceがまず登録される。

Eclipseは起動すると標準では@install_dir*1/confugure/config.iniを見て、最初に起動すべきBundleを取得する。Eclipse 3.3.1の例でみてみる。

osgi.bundles=org.eclipse.equinox.common@2:start, org.eclipse.update.configurator@3:start, org.eclipse.core.runtime@start

つまり、org.eclipse.core.runtimeとorg.eclipse.equinox.commonとorg.eclipse.update.configuratorの3つが起動時に活性化されるBundleだ。「@」の後ろの数字は起動順をあらわす。何もない場合はデフォルトの起動順らしいが、今回はそのデフォルトも指定されていないので、最後となる。

osgi.bundlesの後の設定に

eclipse.product=org.eclipse.sdk.ide

というのがあるが、これでEclipseの起動ポイントを示している。

org.eclipse.sdkプラグインideというIDの「org.eclipse.core.runtime.products」の拡張ポイントを指定している。

EclipseはBundleの構成によって、複数のアプリケーションをインストールできる。そのため、起動するアプリケーションを指定できるようになっている。

Eclipse 3.3の場合、

@install_dir/eclipsec -consolelog -application a

など明らかに間違えた名前のアプリケーションを指定すると、登録されているアプリケーションの一覧を見ることができる。その中からorg.eclipse.ant.core.antRunnerを選んで実行してみると、

C:\Users\kompiro\eclipse3.3.1\eclipse>eclipsec.exe -application org.eclipse.ant.core.antRunner
Buildfile: C:\Users\kompiro\eclipse3.3.1\eclipse\build.xml

BUILD FAILED
Buildfile: C:\Users\kompiro\eclipse3.3.1\eclipse\build.xml does not exist

Total time: 0 seconds

こんな感じでEclipse上のAntが起動する。Eclipse上からAntを実行するとEclipseで登録されている特殊なタスクの実行ができるが、この起動ランチャから実行すると同様に実行できる。他にもヘルプサーバーなどの機能もあるので、試してみるとおもしろいでしょう。

2007-10-31

Equinox Provisioning (通称 p2)

EclipseのIncubatorプロジェクトにEquinox Provisioning(通称 p2)という面白いプロジェクトがあります。

■このプロジェクトの目的

現在更新サイトを使ってプラグインやフィーチャーの配布をしています。段々とEclipseはIDEの範疇を超え始め、様々なプラットフォームとして使われ始めたEquinox。そのため更新サイトでは運用しづらい面が出てきました。それを改善し、クライアントサイドの配布の容易さを向上させることがこのプロジェクトの目的のようです。

■何がうれしいの?

プラグイン開発者にとっては、ライブラリのリポジトリに使えないかなーと思う。GettingStartedのページに画面写真が幾つかありますが、Artifact Repositoryなんて、Pluginのまんまなので、ライブラリをBundleにしておけばそのまま配布・取得できそう。ちょっと動かしてみた感じ、最終的にはエラーが出たけど、依存関係もクリアしてくれるようなので、OSGi用のパッケージシステムとしても使えそう。GUIをかぶったライブラリ配布システムはLinuxの世界ではよく見かけるけど、リポジトリを登録するシステムがほとんどだと思うので、ミラーリング(P2P)による配布は相当wktkです。

Ganymedeに向けてまたすごいことやってるなーと思った。

体調不良で会社を休んだんですが、

はてなダイアリー連続更新記録を続けるために書きましあ。

2007-10-27

IDEの枠を出始めたEclipse

Equinoxってすげーって前々からずーっと思っている。

RAPを動かしてみるとよく分かるけれど、Eclipse自身がAPサーバーの機能を提供している。以前からEclipseはヘルプ機能を提供するサーバーを自前で持っていたけれど、RAPのベースになっているRSP(Rich Server Platform)は

完全に拡張可能なAPサーバー機能を実現している。

(Eclipseは以前Tomcatベースのヘルプシステムだったが、現在、ヘルプシステムはRSPへ移行したので、Jettyベースに変更された。)

その他にもCoronaプロジェクトではAPサーバー以外にもDBサーバーとか、サービスをコンポーネントベースで提供することを目的に活動している。ECFもメッセージベースでコラボレーションするためのサーバー機能を提供するためにActiveMQなんかを中にもっていたりする。 

これは全部Equinoxが拡張可能なアーキテクチャを提供しているからなんだけれども、OSGiという仕様をベースに作られている。そのおかげで、こんな感じで急激に世界が広がって来てるのだろう。そのあたりについてちょっと前記事を書かせていただいた。

JDKに組み込まれなるかどうかは、もともとSunがかなり嫌がっているという政治的な要因から正直微妙になってきたのかもしれない。(大体SunはJSR277のReview BallotでOSGiについて言及してたし、他のメンバーも否定しちゃだめだよって言ってたのにね。)

でもテクノロジー的にとてもおもしろい。

Eclipse Platformは、プラグインベースでブラウザに限らないWebアプリケーションを作れるプラットフォームとして成長しているから。