ここ数年、JavaOne は月曜にはじまって、木曜までだったのですが、今年は火曜から金曜日までに変更されました。
というわけで、今日は火曜日です。
今年の会場は Moscone North の Hall A がパビリオン、South の Hall B, C が General Session という割りふりになりました。ずっと、General Session は North だったので、なんかへんな感じです。
でも、それがなぜかはすぐに分かりました。
人が多いのです。これだけ、人が多いのはずいぶん久しぶり。ここ、2、3 年増加傾向でしたが、今年は去年に比べるとかなり増加しています。下手をすると、一番参加者が多かったころに匹敵するかもしれません。
本当にどこにいっても人だらけという感じです。
さて、今日櫻庭が聴講したのは
この中でおもしろかったものについてレポートします。
General Session はわけあって、すべては聴講できませんでした。詳細は後述します。
というわけで、今年もフォトログ風に。
Technical General Session も途中まで。理由は General Session と同じなのです。
今年も三部構成でまず Java SE が Graham Hamiltion、そして Java EE が Bill Shanonn です。去年は最後に SOA だったのですが、今年は未来の話ということで、いろいろな話題について。櫻庭は最後のパートの Dolphin の所まで聴講しました。
このセッションの前に JAX-WS のスペックリードの Roberto Chinichi に会ったところ、Technical General Session に登壇するというではないですか。残念ながら、彼がステージに上がるところは見られなかったのです。残念。
Java EE や Mustang はさておいて、Dolphin では次のような言語仕様の変更があります。
スーパーパッケージは去年、friend と呼んでいたものらしいので、油断ができません。詳細はテクニカルセッションのレポートで紹介したいと思います。
新しい機能としては
などが紹介されました。
今日の最後の Beyond AJAX ははずれ。Justsystems の樋浦さんのセッションだったのですが、タイトルにだまされました。タイトルだけ見たら絶対 xfy のセッションだとは思いません。そのせいもあるのか、途中退出がムチャクチャ多いセッションでした。
というわけで、その他の 3 つのセッションについて
TS-3439 の Java SE のロードマップに関するセッションは途中から部屋に入ろうとしたところ、Full。ということで、オーバフローの部屋でビデオで聴講。しかし、ビデオだととても分かりにくいです。
ちょうど、Dolphin に話題が移ったところだったのですが、途中からということとビデオということで追いつくのがやっと。全然理解できていないのですが、キーワードだけでも紹介しようと思います。
まず、言語仕様の変更について。Tenchnical General Session では XML とスーパーパッケージが紹介されていましたが、それ以外に
が紹介されました。
プロパティは getFoo() とか setFoo() パターンをサポートするということらしいのですが、C# のような形になるのかはよく分かりません。
メソッドの参照は reference というキーワードが使われるようです。クロージャはどのように実現するのかはいまいちよく分かりませんでした。
スクリプト言語のサポートという点からは
などがあげられています。
Squawk は去年の JavaOne の最終日に John Gage がデモをしていた CLDC 準拠の JVM です。
そのデモで使われたガジェットが Sun SPOT として正式に発表され、そこで使われる JVM になります。その特徴は
Squawk 自体は Windows や Linux でも動作するらしいのですが、OS なしでいきなり VM というのは ARM 9 だけのようです。
割り込みやデバイスドライバが記述できるということは、組み込み用途には欠かせません。最後のアイソレーションは複数のアプリケーションを同一 JVM で動作させることができ、かつそれらを独立して動作させることができるというものです。
また、組み込み用途のために従来のバイトコード体系も手を入れており、そのためクラスファイルを使用せずにスイートファイルというものを使用しています。スイートはクラスをメモリに展開したイメージをそのまま、ファイルにマッピングしたもののようです。
使用するメモリは SPOT の場合、4MB のフラッシュを使用しており、そのうち、約 1/3 がシステム、残りの 2/3 がアプリケーションに解放されているようです。
Swing のアプリケーションで効果的なユーザインタフェースを作るための方法を紹介するセッションです。キーとなるのがアニメーションと 3D。
アニメーションは複数の絵を使って実現させますが、その時に使用するのがタイマです。つまり、一定周期で絵を差し替えることでアニメーションを実現させます。
Java では Swing のタイマと、java.util のタイマがあります。ところがこれらのタイマはアニメーションに使用することを前提においていないため、アニメーションを行なうにはちょっといまいちでした。
そこで、紹介されたのが java.net で開発されている Timing Framework です。
これはアニメーションにはかなりつかえそうです。複数のタイマを同時に管理できたり、イーズイン/アウト (はじめ速く動かして、だんだんゆっくりにするなどの効果) にも使えます。
また、トリガーを採用しており、誰かが止まったら、次のタイマを起動させるようなことができます。さらにタイマの区間を複数に分けることができ、それぞれ異なった周期でタイマを使うことができます。
これはすなわち、Flash などのタイムラインを実現させることも可能であるのではないかと思います。
次に消化されたのが、Swing での 3D です。
今まで Java 3D や JOGL は基本的に AWT の Heavyweight コンポーネントで使われることを前提にしており、Lightweight コンポーネントではパフォーマンスに問題がありました。
というのも、JOGL などでレンダリングしたイメージをバイト配列に配列に変換し、それを Lightweight コンポーネント上に描画するという二度手間なことをしていたからです。
それが、Mustang では 2D のレンダリングエンジンにも JOGL が使用されることになり、Lightweight コンポーネントでも直接 3D のレンダリングを行えるような構造になったのです。
JOGL を使う場合には GLJPanel クラスを使用することで JOGL の 3D のレンダリングを扱うことができます。
とはいうものの、3D をいきなり使うのはちょっとしきいが高いですね。3D というよりは、2D のアクセントとして 3D を使うことが紹介しました。
たとえば、
などです。 これらを実現したら、かなりカッコイイですよ。
最後の Dynamic Scripting Language はおもしろいのですが、いかんせん眠かった ^^;; 代表的な Java で扱えるスクリプト言語をあげて、比較するというものです。
Java 3D と JOGL の合同 BOF。両方とも一時期、更新がまったく止まってしまったのですが、再び息を吹きかえてきました。
まずは、Java 3D から。
現行バージョンの 1.4 はシェーダ言語をサポートするなど、かなり力が入っています。
気になるのは次の 1.5 です。
1.5 では JOGL との統合が行なわれます。とはいえ、Java 3D の使い方が変るというのではなく、あくまでも内部的なレンダリングエンジンとして JOGL を使うようです。JOGL は Mac にポーティングされているので、Java 3D も Mac で動きます。
また、JCanvas3D のパフォーマンスが向上します。これは先のセッションで説明したように Java2D の描画にも JOGL が使われていることが大きいようです。
次にテクスチャの効率化があげられました。
テクスチャに New I/O を使用することや、ミップマップの自動生成などの機能が加わるようです。
そして、コミュニティで作り込まれた機能として、Windows で Direct 3D を使用した場合、シェーダ言語に Cg が使えるようになります。
Java3D のデモでは JOGL を使用した Mac のデモや、パーティクルのデモなどが行なわれました。
さて、一方の JOGL です。
JOGL は JSR-231 で仕様策定されていますが、6 月末にも 1.0 が完成し、8 月には JCP で承認がとれそうだという予定が紹介されました。
去年からの変更点としてパッケージ名の変更、や GLU NURBS の採用を見送ったことなどがあげられます。
また、ポーティングは Solaris (SPARC, x86, AMD64)、Linux (x86, AMD64)、Windows (x86)、Mac OS X (PPC, x86) に対して行なわれています。Mac の Intel の石に対してもポーティングが行なわれていることは全く知りませんでした。
期待のガジェット SPOT です。
5 月に発売するというプレスリリースがあったので、てっきり JavaOne で売り出すと思っていたのですが... 残念ながら、延期されてしまったようです。まじで 5 セットぐらい買うつもりだったのですが ^^;;
その SPOT ですが、以下のような特徴を持ちます。
そして、センサや入出力として
これだけあればいろいろなことができそうです。
開発環境には NetBeans を使用します。
実際にいろいろデモをしてくれたのですが、本当に使えることを模索中のようです。
それにしても、Smith さん、もう、うれしくてうれしくてしかたがないようす。早く見せたくてうずうずしているのがよく分かるのです。で、SPOT を取り出すときに、「チャラーン」 こん平かと思ってしまいました ^^;;
櫻庭としても、こういうがジェットは大好き。売っていたらすぐ買っちゃうんだけどなぁ。
今日は 3D づいていて、これで 3D に関するセッションは 3 つめです。でも、これだけははずすことができません。
プロジェクトオーナーの Paul Byrne、川原さん、Deron Johnson の他に新しいメンバである Krishuna も。それにしてもこの部屋は暗くて写真を撮るのはつらい。おかげでインド人の Krishuna はみなぶれぶれの写真になってしまいました ^^;;
セッションではリリースされたばかりの 0.8.0 が中心になり、そのデモを組み合わせた形になっています。
0.8.0 で注目なのが、LG3D 用の AWT Toolkit の実装です。これで、LG3D で Swing を使用することがより容易になります。
そして、デモでは JavaOne Tokyo でいのうえさんが披露した LgScope や風になびく Swing の GUI、そしてビデオだけですがジェスチャーによるまったく新しいユーザインタフェースの GoMonkey など。
次のバージョンは 0.8.1 で、主にバグフィックスがメインになるようです。そして、1.0 を目指した活動も開始されているようです。
それにしても、この部屋は暗すぎ。ISO 1600 であるにもかかわらず、写真がほとんど被写体ぶれしてしまい巻いた。
なぜ、General Session を全部聴講できなかったか。
それは、バンドのパフォーマンスをしなければいけなかったからです。その名も Dukelele Band。
去年ゲリラ的にライブをしましたが、今年はパワーアップして戻ってきました。もちろん、去年大活躍だった中村さんも健在です。その他のメンバは
みな、Swing や Java2D の著名なエンジニアです。そして、今年は Duke もきてくれることになりました。
こうなると、半分ぐらいオフィシャルですね。とはいうものの、日本とアメリカという離れた場所なので、すべてのメンバが集まって練習することは一度もありません。かなり、不安...
パフォーマンスは午前中の General Session の直後と、午後の Technical General Session の直後の 2 回に渡って行ないました。演奏する予定の曲は
です。カッコ内がオリジナルを演奏している人たちです。
というわけで、General Session を途中で抜けてパフォーマンスの準備です。パフォーマンスの場所は Moscone North と South を結ぶ通路にあるショップの前。ところが、これが問題になってしまいました。
というのも、あまりに人が集まりすぎてしまったのです。
集まると何が問題なのか? それは、通路を塞いでしまうことです。消防法により、このような施設において通路を塞いではいけないらしいのです。
The Game of Love を演奏していたら、係の人たちがやってきて、ここで演奏してはいかんと。あえなく 2 曲だけでパフォーマンスは中止。まぁ、2 曲目の最後までやらせてくれたのはよかったのですが...
さぁ、ここからが大変です。2 回目のパフォーマンスの場所を探さなければいけません。係の人といろいろやりあって、結局 Moscone South の地上でやることになりました。もちろん、建物の中かと思ったら、外。できないよりはましなので、これで了承しました。
しかし、やはり場所が悪いため、2 度目のパフォーマンスはそれほど人は集まりませんでした。でも、最後までやれてよかった、よかった。
毎年、初日はパビリオンでレセプションがあります。
とはいうものの、BOF の時間は迫っているので、軽く食べて BOF に向かおうと思ったのですが... やっぱり、行列。
行列に並びながら、会場のようすを写真に撮っていたら、シェフが「なんで俺たちを写さないんだ」と。で、ちゃんとポーズまでつけてくれました。おちゃめ ^^;;
(May, 2006)