SUNの石原さんのBlogのJavaOne has startedより。
Enterprise Edition 5.0 では、EJB から Persistaence API の独立が目新しい話題だろう。 JDO と EJB Entity Bean の Conflict は長年、問題であったが、JDO Expert Group の EJB3.0 Expert Group への合流そして、そのサブセットとして Persistence API が独立することによって、EJB3 と、O-R マッパは整合性のとれた存在になる。 Persitence API は、EJB3 の一機能であるが、O-R マッパのインターフェースを定義しているので、 EJB コンテナは、plugable に O-R マッパを Persistence 機能として使用することができる。また、Persistence API は、EJB と離れて動作することも許されているので、Standard Edition と組み合わせて O-R マッパ単独で利用することもできる。ほとんどのベンダー、開発者はこの方向性に前向きなフィードバックを出しているという。長い論争の末にリーズナブルな結論が出たといっていいのではないだろうか。
JCPのJSR 220: Enterprise JavaBeans 3.0からダウンロードできる資料も、だいぶ前からJava Persistence APIとそれ以外というように分かれていたので、こうした動きは予想されたのだが、それにしても良い方向への思い切りだと思う。
ロッド・ジョンソン氏は「従来のEJBは存在自体が間違いだった」とばっさり切り捨てたわけだが、EJBの発想自体はすばらしいものだったと思う。コンポーネントをコンテナにロードし、アプリケーションを組み上げる(Assemble)するという概念は現在でも有効だ。ただ、強すぎる依存性、分散環境への過度な期待、そしてあまりにも多くの仕様を盛り込みすぎた。結果的には、机上の空論・頭でっかちになってしまったことは否めないだろう。
しかし、EJB3で、POJO、DI、AOP、メタデータ(アノテーション・O/Rマッピング)という要素を受け入れられたというのは、EJBの手法は失敗であったが目的は正しかったという証明でもある。
そして、Persistence APIの切り出しは、過去のEJBへの否定でもあり、その決断が行われたことは非常に良いことだろう(たとえ、この決断が行われなくとも、多くのPersistence APIのみのオープンソース実装が生まれていたであろうが)。
だからこそ、SUNやベンダー各社はEJB3である理由を示すべきではないだろうか。
EJB3の主眼であるEoDは確かに実現されている。アノテーションによってコードは短くなるし、デプロイメント・ディスクリプタが必要なくなるのも魅力的だ。が、ただそれだけのことである。その裏にはEJB2.1のコンテナが存在している。重量級コンテナを、きれいにラッピングしただけではないのだろうか?
なにより、EJB3で有効なコンセプト・機能をばらばらにしていくと、どれも代替手段があり現実的にはそれで十分だと感じる。DIはDIコンテナで、InterceptorはAOPでいけるし、Persistence APIはもはやEJB3ではない。SecurityやRoleはAsegiのようにAOPベースに移行してくることが予想され、Message-Driven Bean、Timer、Callback、LifeCycleマネージメントはJMX(MBeans)に寄ってくると思われる。Lookupアノテーション、Interceprotアノテーションとて実現していることは単純なのでオープンソース実装でも対応可能だ。
僕にとって、EJB3という名前にはEJB1,2への互換性保持以外の目的が見つからない。ようは、新規案件でEJB3のフルスペックを持ったアプリケーションサーバを使う人がどれくらいいるのだろうか?(フェイルオーバー、クラスタリング、分散キャッシュが必要な人は別)
JavaOne 2005のGeneral SessionをWebCastで見ることが出来る(General Session Webcasts)。その中でBEAのセッションは非常に興味深かった。POJO+DI+AOP+Meta Dataという話に続いて、Tomcat > Geronimo > WebLogicというスケーラビリティのパスを示した(Workshop toolsがGeronimoとTomcatに対応する計画がある)。そしてロッド・ジョンソン氏が、Tomcat>WebLogic間のポータビリティを説明し、WebLogic 9.0に搭載されるSpring Framework対応の機能をデモンストレーションした。Springなんて、EJB3とぶつかる機能になるのではないだろうか。
IBMがGeronimoを開発しているGluecode Software買収したのも、WebSphereをあきらめて新しいアプリケーションサーバの世界を目指しているように感じる。GeronimoはEJBを搭載しているが簡単に切り離すことが出来る。Geronimoのコンセプトは、J2EEアプリケーションのためのDIコンテナだ(こう一言では表現しきれないぐらい面白いものだ。いずれ他の機会に)。
EJB3を声高に叫んでいるのは、実は言いだしっぺのJBossやORACLEだけではないだろうか?
EJB3のコンセプトは確かに良い。評価されるべきだ。だからこそ、EJB3とは何なのか。技術的なスペックではなくそろそろ本質論をすべきだろう。
EJB3は、このままではEJB1,2と同じように、いやEJB1,2は批判されてフィードバックを集められただけましだ。EJB3は、「コンセプトはいいね。でも僕はこちらを取るよ」って、無視されて終わってしまうような気がしてならない。

コメント (1)
もーう ejb3.0をすることになった;こんなもんつくらくっていいって;すべてはマーケット創造のためじゃないの?!
投稿者: shinzou0618 | 2007年07月01日 23:48
日時: 2007年07月01日 23:48