ラッシュを避けて早めに会場である東京国際フォーラムに着いたのですが、受付に向かうとそこには巨大なDukeが浮いていました。そこでハチマキ姿ののに子さんと再会。公式ブロガーの扱いについては受付まで話が通っていなかったのか、しばらく待ったあとでプレスパスをもらいました。その後 Fujitsukiさん、Iwakamiさん、nissinさんと合流。そんな感じで始まったJavaOne Tokyo Day-0のレポートです。
- Technical Keynote
David Rivas氏からJavaMEについて、John Pampuch氏からJavaSEについて、Mark Hapnete氏からJavaEEについて、それぞれ最近の動向やトレンド、ロードマップなどに関する発表がありました。内容はサンフランシスコのときと似たような感じで、特にこれといって目新しい部分ことはありませんでした。大きなテーマはもちろん「The Participation Age : 参加の時代」ということで、これについてJohn Pampuch氏からJCPの仕組みやJavaに関連する各ライセンス(JDL, JRL, JIUL, そしてCDDL)に関する詳しい解説があり、この点は英語の苦手な日本人にとっては良かったと思います。
余談なのですが、 司会の末次氏の挨拶で最後に公式ブロガーの一覧(公式にあるもの)がスクリーンに映し出されちょっと驚きました。真面目に履歴書みたいな写真にしていなくてよかった:-)
- JTSJ003-02 Extreme GUI Makeover, Episode 1: Lookin' Good
このセッションと次のセッションは続き物です。Episode 1では、Javaで作成したGUIについて、より見た目を美しく作り込んでいくためのテクニックが紹介されました。結論を一言で言ってしまえば、要するにレンダラをカスタマイズして見栄えを良くしていくということのようでした。
取り挙げられたのはメッセンジャーアプリケーションで、ログインウィンドウと仲間リストのレイアウトについて、それぞれそこそこ見栄えの良い例とエクストリームな例についてそれぞれデモを交えた解説が行われました。
まずログインウィンドウについては、ListCellRendererをカスタマイズしてコンボボックスを見易くする点と、ResourceBundleと Locale、BIDIを利用してローカライズする点がポイント。BIDIはアラビア語などに代表される右から左に記述する言語に対応させるための双方向アルゴリズムを実装したクラスです。エクストリームバージョンでは、StackLayoutによる重ね合わせを巧みに利用してアイコンを3Dっぽく見せる手法などが紹介されました。仲間リストではJTreeを利用して仲間をツリー状するのですが、その際にTableCellRendererをカスタマイズすることで見栄えを良くするというものでした。
確かにSwingとは思えないレベルのGUIに仕上がっているのですが、技術的にはそれほど高レベルのことをやっているわけではないと思います。要はセンスの問題ではないかなぁというのが率直な印象でした。見てる分には楽しかったです。
- JTSJ003-02 Extreme GUI Makeover, Episode 2: Runnin' Fast
Episode 2はGUI操作のレスポンスを向上させるためのテクニックの紹介でした。ポイントは以下の4点。
* スタートアップ時間を短縮する
* レスポンスを向上させる
* 描画速度を向上させる
* メモリ使用量の最適化
スタートアップについては、VMのチューニング(-Xmsオプションや-Xverify:noeオプションを使用するなどして GCの回数を減らす)やオブジェクトの生成順序を見直すことで、時間を短縮できるということです。またスプラッシュウィンドウを使用すればユーザの体感速度は向上します。スプラッシュウィンドウについてはMustangで便利なAPIが追加されます。
レスポンスや描画速度の向上に関しては、例えばRepaint Managerの最適化や再描画回数の抑制などによって実現できるということです。また必要に応じてJava2Dを利用すれば描画速度は向上するとのこと。また、Mustangで導入されるSwingWorkerを利用するればSwingでも非同期処理が利用できるということが紹介されました。
- JTSJ004-04 Evolving the Java Language
Mustangのさらに次のバージョンであるDolphinへの導入が検討されている機能が紹介されました。内容はサンフランシスコで行われたセッションの焼き直しですが、実装方法のアイデアなどは最新のものに修正されているそうです。
まず最初に、Javaの持つ背景として「可読性」や「シンプルさ」などが重要であることが協調され、これを維持するために以下のような機能は導入されないという点が強調されました。
* 多重継承
* 演算子オーバーロード
* AOP
* Continuation
* プリプロセッサ/マクロ
* 多重ディスパッチ
* 複数の返り値
次に導入が検討されている機能は以下のものが紹介されました。
* 言語レベルでのXMLのサポート
* クロージャ/メソッドリファレンス
* モジュール化の強化
* バイトコードの拡張による多言語サポート
XMLサポートについては、java.lang.XMLというクラスを用意してjava.lang.Stringのように特殊な扱いをしたらどうかということになっているようです。例えばStringが"hogehoge"で文字列を表現できるのに対して、XMLは< mytag>という表記を許可することでコード中にタグを直接記述できるようにするといった具合です。ポイントは「XMLとして読める状態のままで Javaコードに埋め込むことができる」点です。ここでいくつかのクラスのコード例が紹介されました。java.lang.XMLはこんな感じ。Name は名前、Attributeは属性を表すクラスだそうです。
class XML
{
Name name();
Map<Name, Attribute> attribute();
List<Content> content();
}
クロージャについてはライブラリの強化や独自の制御構造が定義できるなどのメリットが見込めるため検討中とのこと。モジュール化については、パッケージをまとめて扱うためのsuper packageや、パッケージ用のインタフェースを作成するためのpackage interfaceなどが検討されているとのことです。
多言語サポートについてですが、新たにinvoke命令を追加することで JVM上で動的言語を動作させらるようにするということです。基本的な姿勢としては、JavaプラットフォームだからといってJava言語だけにこだわる必要はなく、様々が言語が動作するようにしたいということのようです。
- JTSJ004-05 Project Looking Glass: Cool Apps and How to Write Them
川原英哉によるLG3Dのセッションです。冒頭、川原さんがDukeleleを弾きながら登場。なぜかさくらばさんも一緒でした(笑)。
内容はいつもと同じ感じで、LG3Dに関する簡単な解説をした上で、あとは3Dデスクトップ上で動作するアプリケーションの数々を、デモを見せながら紹介していくというものでした。1年前に比べると動作するアプリケーションはかなり増えています。その多くがプロジェクトメンバーの手によって開発されたものです。開発者に日本人が多いのも特徴です。
セッションの後で一緒に写真を撮らせていただきました。もちろんDukeネクタイをつけたままです:-)
- JBOF004-06 Mustangを乗りこなす方法教えます
さくらばさんによるMustangの新機能を紹介するBOFです。冒頭、Dukeleleを弾きながら登場(笑)。
内容は利用する側の立場に立った新機能の紹介です。「MustangではTigerのように言語仕様の大幅な変更はないので急いで乗り換える必要はないが、ツボにはまる機能があったら使ってみる価値がある」というのが結論で、その「ツボにはまりそうな機能」が紹介されました。
このセッションに合わせて、Mustangの新機能を紹介する「じゃじゃ馬ならし」がJava in the Boxで公開されています。
http://www.javainthebox.net/laboratory/JavaSE6/index.html
もちろん新機能は面白いものも多いのですが、個人的にはスライドに描かれていた顔の絵がツボにはまりました。そのスライドが同じくJava In the Boxで公開されています(Flashです)。
http://www.javainthebox.net/publication/20051108JavaOne/mustang.html
- JHOL014-06 Project LookingGlass (LG3D) プログラミング
MustangのBOFの後はLG3DのHoLに参加させていただきました。満席御礼だったのですが予備用のSPARCマシンでよければ空きがあるとのことで、取材ついでに触らせてもらったのです。ちなみにDay-0のLG3D HoLはいち早く満席になってしまったそうですが、キャンセル待ちで集まった人が多く、特別に空いているSPARCマシンを解放したそうです。おまけにこの日はスペシャルゲストとして川原さん自身がプロクタに参加という特典付。当日まであきらめずに並んだ人はラッキーでした:-)
資料を与えられ、それに沿って簡単なアプリケーションを作るというものでしたが、たはりLG3Dは作っているものが見た目に分かり易いのでこういうセッションには向いていますね。ちなみに作ったのは、四角いボックスにテクスチャを貼り付けて、マウスでくりくり回転させるというものです。私自身は一応LG3D プログラムを触ったことくらいはありますが、体験のために一緒にやってみました。
終了後、藤槻さんや川原さん、プロクタの方々で食事に行くところに、一緒になってちゃっかり参加させていただきました。みなさま、お世話になりました。