EJB3とHibernateどっちを使いますか?

最近雑誌でもEJB3に関する記事を目にすることが多くなった。
これまでのEJBの問題が解決されるとして期待が高い。
だが、EJB3がリリースされた時、現実的にどちらを選ぶのだろう?

EJB3のメリットはなんといっても標準化されているという点である。
標準化されているということは、ポータビリティが高い、ゆえに投資が保護されるという論調になることが多い。

ここで疑問が頭をもたげる。


EJB=J2EEってベンダ独自拡張を許していますよね?


確かにHibernateは"標準化"された技術ではないが、ライブラリ形態であるゆえにどのコンテナ上でも動作する。ゆえにベンダ独自拡張を許すJ2EEよりポータビリティが高い。

しかも、EJB3はあくまで仕様であり、実装はこれからである。Hibernateは既に豊富な実績を誇るが、EJB3実装が枯れるには時間がかかるであろう。

最近のJ2EEを見ていると、マーケティングが優先して、実用性はともかく新しい技術を次々に投入している。少々言葉は悪いが、EJB3はでできの悪いイミテーションになってしまうことが懸念される。
J2EEはミッションクリティカル系システムにおける基盤技術としての地位を確保しつつある。新しい技術、特に既存の機能を組み合わせて利便性を向上させるような機能は、アイデアをもった個人やグループに任せ、汎用機並みのの信頼性の向上や運用管理性を充実させていくべきである。あえて仕様を追加するとすれば、コンテナ形態でないと実現が難しい機能、例えばライフサイクル管理やクラスローダ関連等に限ってよいのではないか。