2006年 6月 04日 日曜日 
最近、Java EE (旧 J2EE)ブランドについて考えることがあったので、少し記してみたいと思います。
Java EE ブランドに関して、Sun が最も強固だったことは、誕生以来、長らくの間、J2EE のサブセットを認めてこなかったことと言ってよいでしょう。各種ベンダからの要望 - 一番多かった例は、Web コンテナ(つまり、JSP と Servlet コンテナだけのセット)だけの製品に J2EE ブランドをかぶせて欲しいという要望でしたが、それを Sun は拒み続けてきました。
この圧力は相当強いものだったにもかかわらず、Sun が決して認めなかった理由は二つあると私は考えています。
一つは、プラットフォーム・ブランドの維持です。Microsoft のテクノロジーの場合、テクノロジーは即ちマイクロソフト社の製品であるので分化は起こりえませんが、Java ソフトウェアは誰もが自由に実装することが許されています。J2EE という仕様があっても、それに忠実に従った製品もあれば、サブセット版もあり、仕様に一部反する亜流も存在します。それらすべての存在が許される混沌とした世界だからこそ、互換性がきちんと保障された製品には明確なお墨付きによって差別化することは重要です。
「それにしても、Web コンタナ限定のサブセット版くらいは存在を認めてもよかったのでは」という議論もあるかと思います。これは難しい問題ですが、プラットフォームやブランドはいたずらに分化すべきではない、のも事実です。Java ME の世界では、ハードウェアの特性からフラグメンテーションやプロファイリングを認めざるを得ませんが、エンタープライズの世界は、できればきれいな単一のプラットフォームが存在はより重要でしょう。"J2EE Web Edition " を認めれば、"J2EE XML Edition" やら "J2EE Web + DB Edition" といった、様々な Edition への要望が出てきて収集がつかなくなったことも容易に想像出来ます。"Web Edition"を認めないことで、ブランドが瓦解することの歯止めとしていたと言ってもよいかもしれません。
Sun のブランド関連チーム、リーガルのこの必死の防衛作業は、誕生まもなく、まだまだ、か弱かったJ2EE ブランドにとっては大きな意義のあったことだと思います。統一された正統ななブランドを確立することで、J2EE は「中心と周縁」の中心としての役割をきっちりと果たしたわけです。周縁は、様々な次世代のテクノロジー、アイデアが生まれる exciting な場ですが、中心がしっかりしているからこそ周縁も存在意義が与えられ、活性化するわけです。
二番目の理由は、最初の理由とも関連するのですが、Sun (及び主だった J2EE ベンダー)は EJB を守ろうとした、ということです。EJB はエンタープライズシステムの中核となるべく生まれてきたテクノロジーで、アイデアそのものはすばらしいものでした。今でこそ、DI の発想が普通になりつつありますが、DI のベースとなるコンテナ/コンポーネントのアイデアは EJB が Java の世界に導入したことは忘れてはなりません。
ともかく、J2EE を普及させるにあたって、EJB は戦略的に必須の要素でした。一方、当時主流だった Web アプリケーション開発は Web コンテナのみが利用され、EJB 層の実用度は低いとみられていました。。ただ、ビジネスロジックの層になんらかの中核コンテナが必要なことは明らかで、今日の Spring や Seasoar などの軽量コンテナの普及は図らずもそれを実証しているといえなくはないと思います。Java エンタープライズシステムの開発に「中核コンテナ」をもたらす意味でも EJB コンテナは必ず普及させなくてはいけなかったのです。(それが EJB でなくてもよかったという議論は成り立つかもしれませんが、軽量コンテナも注目されていなかった当時、ほかに代わるものはあり得なかったでしょう)
(To Be Continued)