nekop's blog

OpenShift / JBoss / WildFly / Infinispanの中の人 http://twitter.com/nekop

Seam 3.1とSeam.Nextのアナウンス

JBoss Advent Calendar 2011の2日目のエントリです。

12/1にSeam 3.1.0.CR1がリリースされ、Seam 3.1の機能セットがfeature completeの状態になりました。これ以上の機能追加は3.2など別のバージョンに取り込まれていくことになります。

また、先月の終わりにSeam.NextのアナウンスというSeamの方向性についてのアナウンスが発表されました。

Seam 2ではフレームワークのコアとしてDependency Injection, Contexts, Eventsなどの豊富かつ強力な機能が型安全(タイプセーフ)な形で提供され、それを利用してDrools, jBPM, Wicket, Springなどなど、多数のテクノロジを簡単に統合でき、アプリケーションに合わせた拡張も非常に簡単に行える生産性の高いフレームワークとして成功しました。

SeamのコアエッセンスはCDIとして標準化され、Java EE 6の進化の中心となりました。Java EEを利用した開発はより簡単に、より拡張性の高く、より汎用性が高いものになりました。

CDIが標準化されてしばらく経ち、既存のソフトウェアやライブラリの多くがCDIをサポートするようになりました。ソフトウェアをアプリケーションへ統合し利用するためにプロプライエタリフレームワークを利用する必要がなくなり、プロプライエタリフレームワークへ依存していた多くのソフトウェアは、標準仕様となったCDIへシフトするようになってきています。

その最も顕著な具体例がSeam 3です。Seam 2のように結合度の高い一つの統合されたフレームワークではなくなり、すべての機能はCDI拡張としてモジュール化され、Seam 3はCDIの拡張モジュール集という形になりました。ユーザはSeam 3が提供するjarのうち、必要な機能のjarだけアプリケーションに追加すればすぐ利用可能となるのです。

ところが、この「Seam 2のように統合されたフレームワークではなくなった」という事実が、一定量のユーザの期待に反することになります。Seam 3では複数のモジュールとそれに対応する複数のドキュメントという形で提供されていますが、ユーザからはSeam 2のような一つの統合フレームワーク、一つのドキュメント、という形態を期待する声があがりました。そこで、Seam 3のCDIの恩恵を最大化しつつ、Seam 2のころにあった統一感を取り戻すため、コミュニティで話し合いを行い、新しい提案をすることにしたのです。

まず、コミュニティによる標準的な機能をそろえたポータブルCDI拡張セットを作り、また、このプロジェクトを通じてJava EEコミュニティの成長と統合も目指します。このコミュニティにはApache MyFaces CODIチーム、CDISourceチーム、Java EEの主要メンバーが参加し、それぞれの知識や強みを統合します。このプロジェクトは中立を期すため、Apacheのプロジェクトとしてスタートします。

そしてJava EEコミュニティによるポータブルCDI拡張集コラボレーションプロジェクト、Apache DeltaSpikeは誕生しました。Apache DeltaSpikeは既に企画が提出されておりApacheのトップレベルプロジェクトとなるプロセスを進めています。

Seam 3.1以降、そして「統合されたフレームワーク」についてはまた数ヶ月後にお話できると思います。Seamは最も生産性の高いフレームワークツールを提供することを目指す、という部分はこれからも変わりません。