Develop with pleasure!

福岡でCloudとかBlockchainとか。

EJB2.x→EJB3.1

最近のJavaEE事情 ~Java EE 6の向かう先~ (1/2):CodeZine
EJB2.1のときは、EntityBeanもパフォーマンス面の課題などがあり、MessageDriveBeanも存在はしていたが実際に使用って事例を身近で聞いたことは無い。結局、主に使用されていたのはSessionBeanが中心だった(身の回りでは)。となると極端な話、EJBのメリットってRMIによる分散オブジェクトの呼び出しと、JTAによるトランザクション制御が主だったものだと思う。
そして、当然それまではJ2EEコンテナベースだったので、J2EEコンテナという重量コンテナのアンチテーゼとして軽量コンテナという名のもとIoCコンテナとしてPicoコンテナやSpringFrameworkが登場した。
で、DIコンテナの台頭から、EJBはその機能を取り込む形でEJB3.0という仕様策定に至った。
と、ここで改めてEJB3.1の仕様から感じるのは、まず前提としてコンテナ依存性からの脱却し、EJBを意識せずにPOJOベースのオブジェクトを作成することでEJBとして公開できるようになった。上手くいえないけど、EJB2.1の時はEJBって仕様を意識したプロダクトだったが、EJB3.1というかJavaEE5からは「どう開発するか」といったところに意識が置かれたプロダクトへと変遷したように感じる。(J2EE1.4から登場したWebServiceぐらいが、JAX-WSJAX-RSとして技術ベースで進化しているだけのようにも思える。)

でも、JPAJSFもそれらを結ぶWebBeansも結局、仕様の難易度が高い。だから結局それらを組み合わせて使用する開発も難易度が高い。「どう開発するか」を突き詰めるにはまだ課題は大きく感じるが、結局それを解消するには、NetBeansのVisual Web Packのような形で開発者に意識させないように閉じ込めるのが正解なのかもしれない。