Javaの今、JavaとRuby:JBoss Gavin King氏語る

白石俊平(あゆた)
2007-12-19 18:45:00
  • このエントリーをはてなブックマークに追加

 Java EEエンジニアであれば、Gavin King氏の名前を聞いたことがある方も少なくないだろう。Hibernate、JBoss Seamといった、Javaでは超メジャーなフレームワークを開発した人物、それがKing氏だ。

 同氏は現在、「JSR-299 Web Beans」と呼ばれる標準仕様の策定に携わっている。同仕様は同氏が開発したSeamのコンセプトをさらに発展させ、Java EEの次期バージョン「6」では目玉となる技術のひとつだ。

 今回は、名実ともに世界トップクラスのJavaエンジニアである同氏に、単独インタビューを行う機会を得ることができた。やはり話題はWeb Beansが中心となったが、他にもJava SEやリッチクライアント、動的言語についても語ってくれた。まさにJava開発者必見のインタビューだ。

現在、Red Hatにおいて従事されているお仕事について、差し支えのない範囲で教えてください。

 私の主な仕事は、統一プラットフォームの開拓です。特に、JavaEE5の標準に則ったフレームワークやツールをいかにシームレスに統合し、みなさんのWeb開発に役立つ環境を提供できるか、と言う点に重点を置いて日々作業を進めています。

JBoss Seamの開発が現在主と言うことでしょうか?

 そのうちのひとつだと言う捉え方が正しいですね。Seamについては先日2.0をリリースしたばかりです。他にはHibernateの開発作業はもちろんのこと、標準仕様の策定という点ではWeb Beans、JSF2.0、EJB3.1、JPA2といった仕様に携わっています。

 他に私が携わっているのは、JBossが提供するツール類です。最近バージョン1.0がリリースされたばかりのJBoss Developer Studioには、私たち自身も大変な期待を寄せています。生産性や統合化の向上と言う部分で、私たちが抱いていたビジョンを実現した製品という点において、非常にわくわくしています。

本日の基調講演での主題でもあったWeb Beansとは、どういう技術ですか?コンセプトと利点について簡潔に教えてください。

 Web Beansのコンセプトは大きく分けて3つあります。

 ひとつ目は、Java EEに統合されたコンポーネントモデルをもたらすことです。ご存じのように現状では、JCP内でいくつものエクスパートグループが、狭い意味でのコンポーネントモデルをばらばらに作ってきている、という経緯があります。代表的なところでは、JSFやEJBです。それらを組み合わせて使うとすると、それぞれのコンポーネントモデルに合わせてクラスを複数作る必要があります。

 こうした状況を改善するため、Web Beansによってコンポーネントモデルを一本化し、その上で固有の技術要素を構築しよう、と言うわけです。

 ふたつ目のコンセプトは、コンポーネントモデルとしては疎結合を目指しながらも、厳密な型システムを提供するということです。例えば、システムとしてダイナミックな振舞いを追求し、かつ疎結合を徹底的に目指すとなると、どうしても動的言語や文字列だらけのメタデータを使うという方向に向いてしまい、型の安全性が犠牲になりがちです。

 こうしたトレードオフも、Web Beansを使えば、アノテーションやメタアノテーションによって、型の安全性を犠牲にすることなく疎結合を実現できます。

 最後はステートフルなコンテキストの扱いです。

 今までのJava EEではステートレスなサービス、ないしはスコープに状態を保持しておくと言うのが主流でしたが、Web Beansには複数のリクエストに渡って状態を保持できる対話 (Conversation) コンテキストがあります。

JSFやEJBが個々に持っていたコンポーネントモデルを統合する、と言うコンセプトは分かりました。他にはGuiceやSpring Frameworkと言った、既存のDIコンテナも独自でコンポーネントモデルを提供しますが、それらとの統合においてもWeb Beansは有効なのでしょうか?

 前提として、SpringやHibernate、SeamをJava EEのプラットフォーム基盤に組み込むことはできません。標準化プロセスを経ていませんから。

 その上で、今の質問には側面が二つあると思います。

  • 新着記事
  • 特集
  • ブログ