統合のためのフレームワーク

さまざまなフレームワークがあふれるJava EEの世界。フレームワークAとフレームワークBを一緒に使うと使いづらい。だって、AとBは一緒に使うことを想定して設計されていないんですから。本来はJava EE上のフレームワーク群のベースとなるコアモデルがあって、その上でフレームワークが構築されれば、フレームワーク間の連携は、もっと楽になるでしょう。

Web Beans Sneak Peek Part I: Introducing Web Beansの最初の段落には次のように書かれています:

We also need to get our work in front of the other EE6-related expert groups, so that they can start thinking about how they can possibly re-use and integrate with some of the mechanisms we have defined.

WebBeansはJSFEJBを統合します。でも、WebBeansはアノテーションがついた単なるPOJOです。既存Java EEフレームワークPOJOの「サービス」として再定義すれば、複雑なAPIを隠して、簡単に使えるようになるかもしれません。だから、WebBeansをJSFEJBのためのフレームワークだ、という捕らえ方は間違っています。WebBeansアプリケーションは、JSFEJBを一切使うことなく開発することも可能なのです。

Seamは、統合のためのフレームワークということを謳っていますが、実はSeamを拡張するためのベースとなるAPISeam実装内にあってAPIやSPIとしては外部に切り出されていませんでした。ですから、新しいフレームワークSeamに追加すると、Seamリファレンスマニュアルに新しいアノテーションが追加されるという形で実現されてきました。

一方、WebBeansは、フレームワークJava EEの世界にPOJOサービスとして追加するために必要となるコアモデルを提供しようとしています。ステレオタイプを使えばPOJOサービス群を整理できるでしょう。サービス群をプロファイルのような形で分野ごとに仕様定義することも可能でしょう。永続性、非同期通信、リモーティング..今までAPIとして提供されてきた機能群がすべてWebBeansのモデルでPOJOとして再定義されていく。そうなると面白いです。

参考:JBoss Seam: A Deep Integration Framework