Rod Johnson氏は求人情報のリストを集めたWebサイトであるIndeed.com(サイト・英語)で、EJBとSpringの求人情報の比較を行った。そしてその結果を説明し、EJBの発展と今後に関する結論を出した(source)。彼はセッションビーンとメッセージビーンに重点をおいてEJBを中心とする議論を組み立て、個別の仕様としてのJPAは「最近の技術に基づいていて、その価値を示しています。」とその価値を認めている。Johnson氏はまず、求人の傾向の意味について書いている。
求人のリストは、実際に採用されている技術を知る良い指標です。企業が費用をかけるかどうかがわかりますし、誇大宣伝されたものと本質とを区別することが可能となります。また開発者にとっても、関連するスキルを身につけ伸ばすことの重要性がわかります。(技術の永続化の重要な要素です。)そして、特定の技術を採用する際に、企業の安全を確保するよい指針となります。
Johnson 氏は次にグラフを提示しているが、これは2007年11月に、Javaの求人情報で要求されるスキルの点でSpringがEJBを上回ったことを示すものである。相当な数のEJBベースのアプリケーションがあることを考慮すると、これは驚くべきことであると彼は感じている。
Johnson 氏はこうした傾向に個人的な喜びを感じているが、それは彼が2003年からEJBがその妥当性を失うことを予測していたからである。その原因となる欠陥について、EJBを使用しないJ2EE(source)に関する自身の著書で説明している。EJB 3.0で改善された点についても、彼の考えでは、こうした傾向に歯止めをかけるには不十分である。
EJB 3.0では多少改善されましたが、非常にわずかであり、遅すぎました。DIの能力は現実世界で必要とわかっているより低いものです。インタセプションの APIは分野横断的な問題の解決策の必要性を認めていますが、その能力はいまだに最も低く、最も魅力がなくエラーとなりがちな解決策が見受けられます。(しばらくブログで書こうと思っていることです。)今では時代遅れとなった、前世代の技術との後方互換性という重荷を負っているのです。(「シンプルなプログラミングモデル」よりも数百ページも長い)完全なEJBの規約では、過剰なオーバーヘッドのある複雑なランタイムが決定されます。シンタックスシュガーにもかかわらず、起動時のアクションやシングルトン、時代遅れのスレッディング・モデルといったEJBのいくつもの欠点への対応に失敗しているのです。結局、インフラ変更の折に、アプリケーションサーバの環境に事実上結び付けられるのです。
それから、彼はEJBの衰退が産業界全体や個々の開発者に意味するものを説明している。
- 標準を捨てる必要はありません。-結果をもたらさない標準を健全に破棄するだけです。これまで主張し続けてきたように、Java EEはEJB以上のものであり、プラットフォーム全体に関心がある人は誰でも、パーツの妥当性や品質に公正であるべきなのです。
- より優れた技術によって、ビジネスオブジェクトはPOJOとなり、特定のコンポーネントモデルへの依存が減少してラベルは重要ではなくなります。
- SOAの台頭やその他の影響によって、要求が変化していき、そして企業がますますもっとライトウェイトなプラットフォームを選択している時に、EJBをやめることでより大きなアーキテクチャ上の柔軟性を手に入れることができます。
氏は「絶対的なアプリケーションの数はまだたくさんあり、EJBはすぐに完全に消えたりはしないでしょう。しかし、傾向を示すグラフは EJBが遺産となりつつあることをはっきりと示しています。」と結論付けている。EJBに懐疑的なRick Hightower氏(source)もまたEJBはしばらくの間残ると考えているが、この比較の方法について考え得る懸念を指摘している。
しかしながら、EJBが使われなくなるには程遠いと思いませんか?Spring(例えばSpring MVC、Spring WebFlow、Spring XXX)のような汎用のフレームワークと、EJBのような極めて限定されたフレームワークとの比較が本当に公平でしょうか?EJB 3とSeamとSpringを比較した以下のグラフからわかるように、既成のものとの相対的な比較は公平ではありません。
Ray Van Eperen氏もまた、起こり得る他の技術の影響を考慮する必要性があるとする意見を述べた。
... 例えばSeamなど、明らかに欠落している技術があります。SeamはEJB 3.0と組み合わせることによって、Springと同じようなたくさんの長所(POJOやIOC等)を提供するだけではなく、EJBモデルのたくさんの有名な欠陥に対応しています。私に言わせていただければ、Springより優れています(たとえば、XMLよりもむしろ、ほぼ純粋にアノテーションベースとなっています)。私はSpringをけなしているわけではありません。ただ、SeamとJSFのような他の技術を組み合わせたEJB 3.0は、とても現実的な選択肢になると言っているのです。
EJB の仕様を独自に実装したアプリケーションサーバに依存するEJBベースのアプリケーションは、かなりのシェアを占めている。そのことを考えると、こうした傾向はおそらく、オープンソースのフレームワークを利用している企業の間では、Javaエンタープライズのコアのコンポーネントモデルに対する信頼が高まっていることを示している。こうした比較はSpringフレームワークがかなり勢いを増していることを示しているが、それはEJBモデルがその妥当性を失い始める瀬戸際にいることをも示しているのだろうか?
原文はこちらです:http://www.infoq.com/news/2008/02/ejb-spring-job-listings-trends