Introduction to Web Beans

The theme of Web Beans
Loose coupling with strong typing!
• Stateful components interact as if they were services
• Everything built around Java types, no strings hiding waiting to bite you when something changes

ステートフルなコンポーネントは、コンテキスト上で管理されます。たとえば、リクエストスコープ上であるBeanが必要になれば、WebBeansコンテナによってBeanが自動的に生成され、リクエストコンテキストにバインドされ、リクエストスコープが終了するときにそのBeanは削除されます。これがコンテキストによるステート管理です。

これにより、ステート管理がクライアントからサーバー側に移るのでクライアントコードがとてもシンプルになります。だから、サーバ内にあたかもクライアントごとに専用の「サービス」が提供されているように見えるのです。連携し合うコンポーネント同士が互いの状態を意識する必要がない。なんて素敵でしょう。疎結合APIが規定されているだけでは不十分です。相手が存在するか否かを意識しなければならないとしたらプログラミングコードは複雑になるでしょう。

クライアントはどのようにしてWebBeansの参照を手に入れるのでしょうか?WebBeansでは@Inによるコンポーネントのインジェクションを使います。ここで欲しいWebBeansをどのように指定するかが課題になります。UIからELで参照するときには文字列による名前の参照が便利ですが、文字列の名前でコンポーネントを参照すると、その文字列が間違っていてもシンタクス上のチェックはできません。WebBeansではDIのときにJavaタイプやアノテーションを指定しますので、IDEによるコード補完やコンパイラのチェックが可能になります。

これが"Loose coupling with strong typing"の意味するところ、だと思います。