Web Beansについて語るとなると、どうしても上に挙げたように「何ができるか」という機能面を語ってしまいがちであるが、ここではGavin氏自身が語った「Web Beansのメリット」を紹介したい。

統一されたコンポーネントモデル

これについては前ページで詳しく解説した。具体例を挙げると、高度な機能を持つEJB3クラスを使って、JSFのマネージドビーンを作成する、と言った事が可能だ。また、JSF/JSPで使用できるUnified EL内でも、簡単にコンポーネントを参照することができる。ELは、Javaクラス内のアノテーションや、XMLデプロイメントデスクリプタ内でも使用できるので、コンポーネント間の依存関係などを非常に簡潔に記述することが可能となる。

疎結合と強い型付けを同時に実現

Gavin氏によると、この2つを同時に実現したことがWeb Beansの大きなメリットだという。これの意味するところは、疎結合を追及すると、結局のところ型をあいまいにすればよい、という方向に向かいがちだが、Web Beansを使えばその必要がないということだ。

疎結合を実現するためのさまざまなメタデータを、アノテーションやメタアノテーションを用いて簡潔に記述できること、そしてWeb Beansが持つ高度なバインディングアルゴリズムにより、型を犠牲にすることなく疎結合を実現できる。

ステートフルなサービス、コンテキストに応じた動的な変化

これらは、JBoss Seamが目指すアーキテクチャとほぼ同じものだ。現在のWebアーキテクチャは、ステートレスなサービスと、スコープへのオブジェクト保存を組み合わせて使用するのが主流だ。しかしこのアーキテクチャは、本来「データと振る舞いをクラスにカプセル化する」というオブジェクト指向(Java)的なコードとは趣を異にする。どちらかと言うと手続き型のコードに近いものだ。

Web Beansは、さまざまな側面からステートフルなサービスの作成を支援する。たとえばステートの開始や終了と、スコープへの格納や除去が、アノテーションを付与するだけで同じメソッドに統一できる。ステートフルなコンポーネントが実行中のコンテキストに応じて異なる振る舞いを行えるよう、DIやELはコンテキストに依存した動作を行う。

本稿では、Web Beansについての概略のみの紹介を行った。各機能についての詳細は機会を改めて、現在公開されているEDR(Early Draft Review)版の仕様に沿った形で詳しく紹介したいと思う。