なぜEJBを使うか?
Spring + Hibernateがあるのに、なぜ今更EJB3.0か?
技術的な優位性のみで考えれば、Spring+Hibernateに軍配が上がるのもやむを得ないだろう。EJB3.0の源流である上、これからもJavaEEの標準化とは別にどんどん進歩していくだろうから。
しかし、EJB、というかJavaEEの根底に流れている考え方は標準化であり、開発者のみならず、ソフトウェアに携わる様々な人にメリットがある。
[オーナーの視点]
・ベンダロックインの排除
あくまでリスクの話だが、企業でサードパーティ製品使う場合には、開発元の戦略が急に変わったり、倒産してしまう事態も考えなくてはならない。
標準化された機能を使うことによって、アプリケーションが特定の開発元に依存することを避けることができる。
・企業への導入障壁の引き下げ
お堅いユーザーにSpring、Hibernateを使います!っていったらなにそれ?と言われる場面でも、J2EEアプリケーションサーバの標準機能であれば、通りやすいだろう。
[開発ベンダの視点]
・アプリケーションサーバベンダによるサポート
標準APIであれば、当然アプリケーションサーバベンダがサポートを提供する。
Struts、Spring、Hibernate等独自ライブラリは、プロジェクト内にこれらに精通したエンジニアが必要となる。
[開発者の視点]
・開発者の負荷軽減
汎用機時代は、ハードから言語、開発環境まですべて独自仕様であり、これがプログラマ35歳定年説の根拠でもあった。
案件が変われば別のプラットホームになるのは当たり前だが、J2EE標準であれば、開発者から見れば、JBossだろうがWebLogigcだろうが変わりは無い。結果的に開発者の寿命も延びることになる。
先鋭的な技術者には、不満が残るかもしれないが、標準化の考え方がJava/J2EEの採用を推進してきたこともまた事実である。もし、JavaがSunだけの技術だったら、ServletがApacheやBEAだけの技術だったら今の状況はないだろう。標準化がオープンとプロプライエタリの絶妙なバランスを作り上げている。
そもそも標準とは良いものだと周知の事実になった事を順次取り込んでいくものであり、実験的要素があるプロダクトの特定の機能だけを見て、標準に噛み付くのは意味を成さないと思う。