Technical General Sessionは技術にフォーカスしたGeneral Sessionであり、今後のJava EE/SEの動向を知るにはうってつけのセッションです。
写真1 Robert Brewin氏
Technical General Sessionの司会はRobert Brewin氏(写真1 ) 。Brewin氏がトピックに応じてスピーカーを壇上に上げるというスタイルでセッションは進行しました。
Java EE 6とGlassFish v3
Java EE 6
Java EEは、Java EE 6 (JSR 316 )のスペックリードであるRoberto Chinnici氏(写真2 )が登壇しました。
写真2 Roberto Chinnici氏
セッションの中心になったのが、Java EE 6とGlassFish v3です。
Java EE 6のテーマとなっているのが、Rightsizingです。Rightsizingは目的により適切なサイズにしていくということです。そして、Rightsizingを実現するためにプロファイルが導入されます。
Java EEは、ServletやEJBなど多くのAPIから構成されます。しかし、用途によっては必要としないAPIがあることも確かです。そこで、プロファイルを導入し、用途に応じて必要なAPIを選択していくという方向性を採用したわけです。セッションで紹介されたのはWebアプリケーションのためのWebプロファイルです。
Webプロファイルには以下のAPIが含まれます。
プロファイルはJCPで策定され、今後テレコミュニケーション向けのプロファイルなどが策定される予定になっています。その他にも、拡張性の向上や、スクリプト言語などが取り込まれる予定です。
Web層に目を向けると、アノテーションの拡充、web.xmlの編集が不要、Restful Webサービス向けのJAX-RSなどが新たに採用される予定です。また、最後にパッケージング、とくにEARファイルの作成が簡便になるとの説明がありました。
今までは、Web層はServletやJSPファイルなどをまとめたWARファイルと、EJBなどのクラスファイルをまとめたJARファイルをまとめて、EARファイルを作成していました。それに対し、Java EE 6ではClassファイルを直接WARファイルにまとめることができるようになります。
GlassFish v3
GlassFishはJava EEのリファレンスインプリメンテーションという位置づけですが、GlassFish自体の機能拡張も行われます。
GlassFish v3では、複数のコンテナを扱えるようになり、またフットプリントの減少、起動時間の高速化などが図られています。デモでは、わずか数秒でGlassFishが起動することが示されました。また、新しいモジュールを導入する場合も、単にJARファイルをコピーするだけで、設定などが不要になっています。
さらに、JRuby/Ruby on Railsだけでなく、Jython/Djangoや、Groovy/Grails、JavaScriptなどがサポートされます。
Java SE
Java SEのパートは、Danny Coward氏(写真3 )が登壇しました。
Java SE 6とロードマップ
写真3 Danny Coward氏
まず、Java SE 6に関して簡単にまとめた後、SE関連のリリースロードマップを示しました。既報 ともかぶりますが、まとめておきます。
2008年4月 JRE 6u5p ( Perfomance JRE)
2008年秋 JRE 6u10 ( Consumer JRE)
2008年秋 JavaFX SDK
2009年夏 Java SE 7
JRE 6u5pは、64ビットに特化してパフォーマンスチューニングを施したJREであり、ここで使われた最適化は今後のJREアップデートに適用されます。
Java SE 7
次にJava SE 7に話は移ります。
Java SE 7の主要なテーマは次の3項目です。
モジュラリティ
複数言語のサポート
リッチクライアントのサポート
モジュラリティに関しては大きな動きがありました。
今まで、開発時のモジュラリティとしてJSR 294 Improved Modularity Support in the Java Programming Language、デプロイメント時のモジュラリティとしてJSR 277 Java Module Systemと独立した仕様として策定されてきました。
ところが、別々に仕様策定するのではなく、共同で行うほうが良いとの判断からJSR 277に統合されたのです。このため、JSR 294で使用されるはずであったsuperpackageはmoduleというキーワードに変更されています。
開発時のモジュラリティはモジュールごとの可視性をコントロールするための機構です。たとえば、Javaのインターフェースは、常にパブリックメソッドしか定義できません。moduleを導入することで、インターフェースであっても可視範囲をコントロールすることができます。
一方のデプロイメント時のモジュラリティは、JARファイルに取って代わるJAM(JAva Module)ファイルが使用されます。JAMファイルはバージョニングや、依存するモジュールなどをメタデータとして記述することができます。
また、OSGiのモジュールもロードすることが可能になるようです。
複数言語のサポートもJava SE 7でさらに進められる予定です。昨年まではスクリプト言語という括りがされていましたが、スクリプト言語に限定せず、さまざまな言語をJVMで動作させられるようにしていくようです。
そのために、次に示す機能が計画されています。
ランタイムのアクセレーションのためJVMの拡大
ダイナミック インボケーション用の新しいバイトコートの導入
Continuation、テールリカージョン、シンボルの制限を撤廃
これらの機能はDa Vinci Machineプロジェクト によって開発が進められています。
最後のテーマがリッチクライアントのサポートです。
リッチクライアントは主にConsumer JREに関するものでした。とくに、Appletが再注目されています。
Consumer JREの機能として、次の3項目が挙げられました。
初期ダウンロードサイズを低減するためのJava Kernel
起動時間を短縮させるJava Quick Starter
新しいJava Pluginアーキテクチャ
また、JavaFXもConsumer JREでサポートされます。
ここで、Coward氏はPluginチームのKen Russell氏を壇上に上げました。Russell氏はJOGL (Java bindings for OpenGL)のプロジェクトリードでもあります。
Russel氏はJavaFXを使用したアプレットのデモを行いました。ストップウォッチのデモでは、滑らかなアニメーションやドロップシャドウなどの表現を示し、Palsと名付けられたデモではGoogle EarthのようなNASAのWorld Wind をブラウザ上で動作させました。
また、動画のデモでは、ブラウザだけでなく、アプレットをドラッグすることでブラウザとは別のプロセスとして動作するできることを示しました(写真4、5 ) 。この状態でブラウザを終了させても、アプレットは動作し続けます。
1日目午前中のGeneral Sessionで行ったFacebook Widgetsのデモも、この新しいPluginを使用したものでした。
写真4 Firefox上でAppletを動作させる
写真5 ドラッグすると、Firefoxから独立に動作する
JavaFX
JavaFXのパートはデモが中心でした。
まず、On2 Technology がJavaFX用の動画コーデックを提供することを発表しました。
次にJavaPolis カンファレンスをホストしているParleys.com のStephan Janssen氏が、Flexで構築されたJavaPolisサイトをJavaFXで再構築したサイトをデモしました。このデモサイトはセッションやスピーカの情報の閲覧だけでなく、セッションの動画や資料の公開もJavaFXで行っています。
ここで気になるのは、JavaFXの開発環境です。JavaFX自体はNetBeansを用いて開発できますが、デザイナーとの連携は不十分でした。
そこで、発表されたのがPhotoshopとの連携を行なうJavaFX Transformerです。
JavaFX Transformerを使用すると、Photoshopで作成したグラフィックスをレイヤ構造を保持したままで、JavaFXのソースとイメージにコンバートすることができます(写真6 ) 。
写真6 JavaFX Transformerによる変換。左がPhotoshop、右がNetBeans
最後に、JavaFXを使用した3Dのゲーム(写真7 )が紹介され、RIAだけでなくカジュアルゲームでもJavaFXの有効性を示しました。
写真7 左側よりChris Oliver氏、Anthony Roger氏、Robert Brewin氏。後ろに投影されているのがMoon Tankゲーム
昨年とはJavaFXの発表のようなインパクトのある発表はなかったものの、Java EE、Java SEとも次のバージョンに向かって着実に進んでいることが示されました。JavaFXもロードマップが示されましたが、開発環境はまだ十分とはいえません。今後、開発環境を充実させていくことが、重要な課題になるのではないでしょうか。