TOP比較データ> Spring Framework
徹底比較!!Javaアーキテクト
徹底比較!!Javaアーキテクト

第2回:DIxAOPコンテナの比較
著者:シンクイット  山口 忠   2005/11/10
前のページ  1  2  3   4  次のページ
Spring Framework

Spring Framework    Springは「Expert One-on-One J2EE Design and Development」(邦題:「実践 J2EEシステムデザイン」)の著者であるロッド・ジョンソン氏が作成したDIxAOPコンテナで、Spring Framework(http://www.springframework.org/)にて公開されています。前述したSeasarと並んで注目されているDIコンテナですが、世界的に見れば知名度・導入実績はまだまだSpringのほうが勝っているように思えます。

   Seasarと同様に他のフレームワークと連携する機能が多く提供されており、特にStruts/JSF/Hibernateとの連携が特徴的です。既存のフレームワークとの連携をはかることでシステム全体をカバーすることができます。また、Spring独自のWebフレームワークやDBアクセス機能も提供されています。

   Springの最新バージョンの1.2.5ではHibernate 3に対応し、EJB(Enterprize Java Beans)3.0を意識した開発を行うことが可能です。他の機能としては定義ファイルの記法が拡張されました。しかし、SpringではSeasarのようなコンポーネントの自動登録などの機能は提供していません。これは、自動バインディングによってオブジェクト間の依存関係がわかりにくくなることを恐れて、定義ファイルにオブジェクト間の依存関係を明示的に記述することを推奨しているためです。

   そのほかにも様々な機能が拡張および追加され、さらに使いやすいものになっています。Springは他のDIxAOPコンテナに比べ、実績も有識者も比較的多く、日本語のドキュメントは少ないものの英語のドキュメントは非常に豊富であるため、導入しやすいDIxAOPコンテナといえるでしょう。


PicoContainer(NanoContainer)

PicoContainer    PicoContainerは非常にシンプルで、DIのみを提供する軽量コンテナで、Codehaus(http://picocontainer.codehaus.org/)で公開されています。オブジェクト間の依存関係の定義方法は外部ファイルを使っていないため、ソースコード上でPicoContainerに対して依存関係を登録するか、その登録機能を独自で開発する必要があります。

   そのため、実際のシステム開発にPicoContainerを導入することを考えると、少し厳しいようにも思われますが、初めてDIを学習する人にとってはお勧めできます。XMLなどの外部ファイルでの定義方法では定義ファイルに間違いがあった場合、なかなか間違いに気がつくことができず、DIをすぐに体感することができない恐れがあるからです。なお、PicoContainerではAOPの機能は提供されていません。

   PicoContainerの周辺技術であるNanoContainerはPicoContainerを拡張したDIコンテナで、PicoContainerと同様にCodehaus(http://nanocontainer.codehaus.org/)で公開されています。

   NanoContainerはPicoContainerに対してオブジェクト間の依存関係をスクリプトを使って定義する機能を提供します。PicoContainer自身はオブジェクト間の依存関係を外部ファイルで定義することはできませんが、NanoContainerと連携することで、XML、Groovy、Rhino JavaScript、BeanShell、Jythonなどのスクリプト言語でオブジェクト間の依存関係を定義することができるようになります。

   また、NanoContainerではAOPにも対応しています。他の機能ではWebWork/WebWork2/Struts/Axis/Hibernateといったフレームワークとの連携機能も提供しています。


HiveMind

HiveMind    HiveMindはjakartaプロジェクト(http://jakarta.apache.org/hivemind/)で開発されているDIコンテナです。昨今のソフトウェア業界におけるApache Software Foundation(ASF)の影響力の大きさを考慮すると、HiveMindは注目に値する存在であるといえます。まだ導入事例や知名度はあまりありませんが、ASFで開発されているということもあり、今後も活発に開発、導入されていくでしょう。

   また、開発者が「第1回:Webアプリケーションフレームワークの比較」でも紹介したTapestryの開発者のハワード・ルイス・シップ氏であることからTapestryとの親和性も期待できそうです。

   HiveMindは他のDIxAOPコンテナと同様にDI・AOPを実現するコンテナですが、目新しい機能も提供されています。EJBのコンポーネントを定義ファイルに記述するだけでlookupしてインジェクションできる機能や、Springで管理されているコンポーネントをインジェクションする機能などがあります。

   PicoContainer(NanoContainer)と同様、定義ファイルをGroovyなどで記述する機能も提供されています。またその他の機能として、HiveDocという機能が存在します。

   HiveDocはデプロイされたモジュールの情報(コンポーネント関連など)をHiveMindの定義ファイルから読み込み、JavaDocのようにHTMLに出力することができます。

前のページ  1  2  3   4  次のページ


株式会社シンクイット 山口 忠
著者プロフィール
株式会社シンクイット  山口 忠
前職は大手SI企業にて、SEとして各種言語を使ったシステム開発を経験する。常に進化し続けるオープンソースソフトウェアの魅力にとりつかれて現職に至る。現在は某プロジェクトにてEJB、Webサービスを使ったシステムのフレームワークを開発しながら、Javaのプロフェッショナルになるべく、日々精進している。


INDEX
第2回:DIxAOPコンテナの比較
  はじめに
  AOPとは
Spring Framework
  Geronimo