Java EE関連のトピックを中心に

JBUG 野上 忍

Bay Area に着いてから昨日火曜までの真夏のような暑さが影を潜め、今日は、いつもの夜の冷え込みがやたらと厳しく、寒さがことさら身にしみるBOF帰りであった。(日中はセッションをはしごしていて Moscone Center の外に出ることはほとんどないので、昼間の気候を体感することはないのだけれども)

JavaOne 2007 初日の General Session では、Java SE のオープン・ソース化 (OpenJDK) の完了や、新しいプロダクト・ファミリ「JavaFX」として位置づけられた「JavaFX Script」や「JavaFX Mobile」の発表などが目立ち、Java EE については、ほとんど触れられることがなかった。もはや、Java ME、Java SE、Java EE と言った区分の中だけで話が片付く時代ではなく、各レイヤーがシームレスに連携してJava Platform を構成していると考えた方がよいかもしれないと感じられた。Java EE 自体は、JavaOne 2005 でオープン・ソース化が発表され、JavaOne 2006 では Java EE 5 と GlassFish v1 のリリースと、ここ近年の JavaOne の目玉のトピックだっただけに少し寂しい感じもしたが、Java EE がすでに2年以上完全なオープンソースとして開発されてきている以上、JavaOne でいきなり新発表がないのも当たり前といえば当たり前の話である。

それでも、JavaOne 2007 の 2 日目には、JavaEE 関連の Technical Session や BOF がいくつかあった。

  • TS-4945 Java Persistence 2.0
  • TS-4089 Web Beans Update
  • BOF-4641 Java Platform, Enterprise Edition (Java EE): Meet the Experts (Part 1)

各 JSR の Expert Group のスペック・リードやメンバーから直接に標準化の状況をきけるのは、やはり JavaOne ならではのメリットである。 この他にも、JavaOne 2007 初日の夕方には

  • TS-4247 Enterprise JavaBeans 3.1 Technology

もあって、主要な JSR の状況を網羅的にキャッチアップできるのも JavaOne ならではである。

BOF-4641 Java Platform, Enterprise Edition (Java EE): Meet the Experts (Part 1)

Bill Shannon (Sun Microsystems, Inc.) や Roberto Chinnici (Sun Microsystems, Inc.)、Linda DeMichiel (Sun Microsystems, Inc.) などの Java EE 関連の JSR の Expert Group の主要メンバーが、直接コミュニティのユーザと Java EE 6 で計画している仕様についてディスカッションを行う BOF である。

現在計画されている Java EE 6 のリリース・プランは、思っていたよりも早く以下のように計画されているとのこと。

  • Dec 2007 Public reviwe
  • Mar 2008 Proposed final draft
  • Q2 2008 RI beta release
  • Q4 2008 Final release

GlassFish v3 としての開発とあわせて、2008 年内にリリース予定との計画が立てられている。Java2 EE 1.4 から Java EE 5 へのがジャンプアップは、ベースとなる Java SE を Java2 SE 1.4 から Java SE 5.0 へと変更し、言語仕様の拡張やアノテーションの導入を行い、さらに Heavyweight な EJB 2.x のコンポーネント・モデルから、POJO ベースの EJB 3.0 と JPA へと大きく舵を切って、EoD (Ease of Development) を目指す大きいものであったため、Java EE 5 からの大きな流れはさほど変わらないようだ。

JavaEE 6の目標として掲げられたものは、以下の3つ

  • Extensibility(拡張性向上)
  • Profiles(プロファイル)
    コンフィグレーションを簡単にするために、プロファイルの機能を導入し、デフォルトでいくつかのプロファイル(Standard、Cluster、Development)を用意するとのこと
  • Pruning(仕様削除)
    Java SE 7で検討されている古くなって使われなくなった API の削除プロセスを、Java EE にも適用する

JavaEE 6に含まれる予定の主なJSRは、以下の通り。

  • Enterprise JavaBeans 3.1
  • Java Percistence 2.0
  • Servlet 3.0
  • JSF 2.0
  • Web Beans (JSR-299)
  • JAX-RS 1.0 (新JSR : Java API for RESTful Web Services) (JSR-311)
  • Java Authentication SPI for Containers (JSR-196)

また含まれる予定のMaintenace ReleaseのJSRは、次の通り。

  • JAXB 2.1
  • JAX-WS 2.2
  • Implementing Enterprise Web Services 1.3
  • JSP 2.2
  • EL 1.2

TS-4945 Java Persistence 2.0

Enterprise JavaBeans 3.0 と Java Persistence API (JSR-220) のスペック・リードであった Linda DeMichiel (Sun Microsystems, Inc.) による Java Persistence の次期バージョンについてのセッション。

Enterprise JavaBeans 3.0 のときには、最終的にはその一部として切り出された Java Persistence API であるが、今回からは独立した JSR として仕様が策定されるようになる。Enterprise JavaBeans 3.0 に含まれる Java Persistence API は、仕様策定の初期の段階で、基本機能のみの 1.0 バージョンでにとどまったいうことで、今回 Java Persistence 2.0 と大きくバージョン番号を上げ、機能強化に取り組むようだが、地味だという話もちらほら。Hibernate や TopLink Essentials、OpenJPA などの JPA 実装にすでに独自機能として実装されている機能などを、いかに標準化して JCP の標準仕様に取り込むかというところから始まるので、目新しさがなく地味に見えてしまうのかも。

Validation フレームワークの新標準仕様 Beans Validation (JSR-303) との連携も JavaEE 6 のタイムラインに合えば検討したいとのこと。

TS-4247 Enterprise JavaBeans 3.1 Technology

Enterprise JavaBeans 3.1 のスペック・リードとなった Kenneth Saks (Sun Microsystems, Inc.) によるセッションで、小幅な機能アップが計画されているようだ。

TS-4089 Web Beans Update

今回最も楽しみにしていた Technical Session の 1 つがこの TS-4089 Web Beans Update である。Web Beans (JSR-299) は、昨年の JavaOne 2006 で JBoss Inc, などが JCP に提案した、JavaEE 5 の JSF と EJB3 を前提とした Web Framework の標準化であり、Hibernate の Founder の Gavin King (JBoss Inc.) がコミッタとなって実装を進めている JBoss Seam をベースにし、Gavin King 自らが Spec Lead になるということで注目を浴びた JSR である。

今年のセッションは、この Web Beans のベースとなる JBoss Seam の Project Lead の Gavin King (Red Hat Inc., JBoss Division) に加え、2007/03/08 にバージョン 1.0 が公開されたばかりの DI コンテナ: Google Guice の Project Owner の "Crazy Bob" こと Bob Lee (Google Inc.) の注目の二人がスピーカを務めるセッションということでも興味を引かれていたのである。

Web Beans の狙いは

  • Need for unified component model (統一されたコンポーネントモデル)
  • Managing state (コンポーネントのステート管理)
  • Scoping components (スコープ管理)
  • Convasation management (会話管理)
  • Finding components (簡単なコンポーネント利用)
  • Configuration (簡単なコンポーネント定義)

ということで、現在 JBoss Seam が実現している基本機能のコンセプトをそのまま踏襲している。

Java EE 5 の EJB 3 により、POJO (Plain Old Java Object) ベースの Web アプリケーションのコンポーネントが標準仕様でもできるようになったわけだが、完全に疎結合になった POJO として開発するには、まだ、いくつものハードルがある。JSF 1.2 のManaged Bean のコンポーネントモデルと EJB 3 のコンポーネントモデルの相違を埋め、コンポーネントのライフサイクル管理やビジネスロジックには直接関係のないコンポーネント間のワイヤリング情報をコンポーネントから切り離すことにより、より疎結合になった POJO として開発できるようにしようとのこと。

セッションのプレゼンテーションの最後のスライドのSummaryには、

The Future Is Bright

と書いてプレゼンを締めくくっていたのも Gavin King らしい気がしたのは自分だけであろうか? プレゼンの後の Q&A では、会場から「Interface 21 は、Web Beans の Expert Group に入らないのか?」とか「Web Beans と SCA (Service Commponet Architecture) の連携は考えないのか?」などと、なかなか過激な質問がとんで笑いを誘っていた。

Web Beans が Java EE 6 に含まれる JSR として計画されていることからも、今後も注目にされる All-In-One の Web Framework になるのではないだろうか。