Java EE 5の時代のJavaフレームワークの展開についてもう1つのヒントになるのが,Rod Johnson率いるSpring陣営と,Hibernateの開発者であり,現在,JBossでSeamの開発に携わっているGavin Kingの間でやり取りされた
ディスカッションです。
Springは軽量コンテナの代名詞ともいえるフレームワークで,POJOベースの開発,Devendency Injection (Inversion of Control),AOPのサポートを特徴としています。
JBoss Seamは,Java EE 5 (JSF, EJB 3.0)をベースに開発されたフレームワークです。
SpringのJava EE 5 (EJB 3.0)に対するスタンスは,SpringをWebLogicのJava EE 5実装のベースとして利用するためのオープンソースプロジェクト
Pitchforkの
FAQで明記されています。
- SpringをEJB 3.0のサポート手段として使用することをお勧めする。SpringとEJB 3.0のプログラミングモデルをmixして使うことがより良い選択肢になる。
- EJB 3.0はSpringを代替するものではない。なぜなら,EJB 3.0のDependency InjectionやInterceptionは,Springに比べて機能が限定されているからである。
- EJB 3.0のうち,JPA (Java Persistence API)に関してはO/R Mappingの標準仕様として歓迎する。
Gavin Kingはこれに対する以下のような意見を,上記のディスカッションで述べています。
- Springが提供する(AspectJ式の)AOPは,その複雑さに比べると,実現できることが少ない。(EJB 3.0の)interceptorとannotationで大抵は事足りる。
- (EJB 3.0で実現可能で)Springでは簡単に実現できないこともある。例えば,SFSB, optimistic transactionなど。
- SunやJCPの仕事は,可能なことを何でも標準として規定することではない。
- Springが,EJB 3.0の標準仕様を前提にして拡張機能を提供するのであれば,歓迎する。
- Spring/BEAによる擬似EJB 3コンテナ(quasi-EJB3 container)は,Springへのロックインを助長する,誤ったアイディアである。
今後,各社からJava EE 5準拠のアプリケーションサーバが次々とリリースされると思われます。本当の意味で可搬性を確保する(ベンダーロックインを回避する)には,やはり標準仕様への準拠というのが有効なソリューションだと思います。
Trackback URL: http://blogs.sun.com/wajima/entry/java_framework_in_the_age1