2008/05/06

JavaOne 1 日目

このエントリーをはてなブックマークに追加
Alumni Lounge, JavaOne 2008

というわけで、今日から本番。

今年は InterContinental Hotel に Alumni Loung が設営されているので、さっそくいってみました。

ラウンジは 4F なので、エレベータをおりて誘導されるままにすすんだら、外にでてしまいました。

そう、ラウンジは外のテラスにあるんです。

サンフランシスコの朝はむちゃくちゃ寒いので、凍えながら朝ごはん。

Moscone Center からは歩かなくてはいけないし、寒いし、全然いいことがありません。なんでこんなところにしたんでしょうね。

ちなみに、今日だけで 1294 枚もの写真を撮ってしまっいました。こんなに撮るとは思ってもなかったので、メディアが足りない。セッション中に PC にコピーして、やっと間に合わせることができました。

さて、今日櫻庭が聴講したのは

今日のハズレは TS-6609。JavaFX と Swing を会わせて使うということが主題のはずなのに、その部分はわずかしかありませんでした。でも、久しぶりに Amy Fowler を見たからよしということにしよう。

General Session

John Gage's Memo, General Session, JavaOne 2008

今回の General はかなり地味。新しい発表はまったくないです。メディアはこういう General Session を見て、批判的な記事を書くんだろうなぁ。

ちなみに上の写真は John Gage の MC 用メモ。舞台脇に無造作に置いてあるのを発見して撮ってしまいました ^ ^;;

さて、General Session はダンスユニットによるパフォーマンスから始まり、次に恒例の T-Shirt 投げ。今年はプリミティブなパチンコ形式のもの。T-Shirt 投げも今までいろいろと趣向を凝らしてきたのだけれども、どれもイマイチだったということですかね。

そして、再びダンスユニットによるパフォーマンスです。

今年はかんり大きなダンスユニット。20 人ぐらいいるかな。基本は Hip Hop。でも、特に後半はわざと古いスタイルのダンスを織りこんでいました。これは見応えがある。

で、John Gage と James Gosling が登壇。そして、もう 1 人 Chris Melissinos。いつものごとく Don't be shy から始まります。

はじめに James Gosling が示したのは、消しゴムぐらいの大きさのガジェット。Sentilla Mote というセンサーネットワークを構築するための機器で、CLDC が動作します。デモで紹介されたのは CO2の測定。Sun SPOT と狙いがかぶる部分はありますが、よりセンサーネットに特化しているような感じです。

General Session, JavaOne 2008 General Session, JavaOne 2008
General Session, JavaOne 2008 General Session, JavaOne 2008
ステージ上でなくて、スチール写真みたい
T-Shirt Toss, General Session, JavaOne 2008
ここから 5 枚は連続写真
T-Shirt Toss, General Session, JavaOne 2008
T-Shirt Toss, General Session, JavaOne 2008 T-Shirt Toss, General Session, JavaOne 2008
T-Shirt Toss, General Session, JavaOne 2008 T-Shirt Toss, General Session, JavaOne 2008
自分に当たりそうで怖かった写真
T-Shirt Toss, General Session, JavaOne 2008 General Session, JavaOne 2008
カッコイイ!
General Session, JavaOne 2008 General Session, JavaOne 2008
General Session, JavaOne 2008
いつもより多く回っております。床が斜めなのはご愛敬
General Session, JavaOne 2008
John Gage, James Gosling and Chris Melissinos, General Session, JavaOne 2008
James Gosling and Chris Melissinos, General Session, JavaOne 2008
手に持っているのが Sentilla Mote
John Gage, James Gosling and Chris Melissinos, General Session, JavaOne 2008
後ろに CO2 がモニタリングされています
John Gage, James Gosling and Chris Melissinos, General Session, JavaOne 2008
防爆タイプもあります
Rich Green, General Session, JavaOne 2008
テーマは Java + You
Rich Green, General Session, JavaOne 2008

そして、登場したのが Rich Green。今年のテーマは Java + You。

Rich Green は自分の話はそこそこに、ゲストを壇上にあげました。はじめに紹介されたのが Amazon の Kindle。Kindle では Java が動作します (PC Watch の記事を参照)。そして、Sony Ericsson。

そして、JavaFX のデモに移ります。デモされたのは...

  • Connected Line - Facebook Widget
    Flickr と Twitter のマッシュアプリ。新しい Plug-in の上で動作し、起動時間などもかなり向上しています
  • Flockr
    タグを入力すると Flickr から画像を引っ張ってきて表示するというアプリ
  • 3D のレンダリング
    ポリゴンのテクスチャーに動画を使用し、かなり多くの動画を同時にレンダリングするというデモ
  • JavaFX Mobile
    Andoroid 上で動作する JavaFX Mobile ランタイム。Connected Line が動作していました。

ちなみに Flockr で Flickr の写真を見られるのですが、Rich がタグに「James Gosling」を入れたのです。そうしたら何と私の写真が使われていましたよ。この写真です。これにはビックリ。

この写真は昨年の Sun Tech Days で撮ったもの。そのとき撮った写真が何枚もサムネイルで表示されていましたが、中には某氏の写真も。そうか、彼の写真にも James Gosling のタグが付いていたんだ。まぁ、ご愛敬。

Rich Green は最後に Ubuntu で JRE がバンドルされたこと、Apple が MacOS X 用の Java SE 6 をリリースしたことを発表しました。

Rich Green, General Session, JavaOne 2008 Rich Green, General Session, JavaOne 2008
Rich Green, General Session, JavaOne 2008
Nandini Ramani
Rich Green, General Session, JavaOne 2008
Nandini がデモを失敗させた瞬間 ^ ^;;
Rich Green, General Session, JavaOne 2008
Anthony Rogers
Rich Green, General Session, JavaOne 2008
Android エミュレータでデモ
Neil Young, General Session, JavaOne 2008

そして、Jonathan Schwartz の登場。

彼が呼んだのが、あのミュージシャンの Neil Young。彼は今 Blu-ray で 40 年以上に渡る彼の音楽活動のアーカイブを作成しているのですが、それについて喋っていきました。もちろん、Blu-ray なので、Java です。BD-J です。

Neil Young が出てきたのは嬉しいのですが、残念なことに歌はなし。 1 曲ぐらい歌ってくれればいいのに。

それにしても、Rich や Jonathan の時よりも、Neil に多くのカメラマンが群がる、群がる ^ ^;; もちろん、櫻庭はステージのかぶりつきで写真撮りましたよ。

Jonathan Schwartz and Rich Green, General Session, JavaOne 2008 Jonathan Schwartz and Rich Green, General Session, JavaOne 2008
Neil Young, General Session, JavaOne 2008 Neil Young, General Session, JavaOne 2008
Neil Young, General Session, JavaOne 2008 Neil Young, General Session, JavaOne 2008
後ろの写真は Baffalo Springfield の頃
Neil Young, General Session, JavaOne 2008 Neil Young, General Session, JavaOne 2008
Neil Young, General Session, JavaOne 2008
PS3 を持って帰ろうとする Neil Young

Technical General Session

Robert Brewin, Technical General Session, JavaOne 2008

本当は General Session と Technical General Session の間にはテクニカルセッションが挟まるのですが、ちょっと順番を変えて、こちらを先に紹介します。

去年の Technical General Session はほとんどの時間を JavaFX に費やされていましたが、今年は Java EE も Java SE も登場し、以前のような形式に戻りました。

Java EE は Roberto Chinnici。Java EE 6 の話と、その RI である Glassfish の話をしていました。

Java EE 6 では Profile が導入されるのですが、プロファイルの1 つである Web Profile を説明。Web Profile には JSF, Servlet, JPA, そして EJB−Lite が含まれるようです。

その他には web.xml の編集がいらなくなることや、JAX-RS が新たに含まれること、EAR ファイルの作成が簡単になることなどをあげてました。

Glassfish は、Kernel を小さくしたことや、OSGi ベースのコンポーネント管理、フッとプリントの減少、起動時間の短縮などがあげられてました。デモでは、ほんとにあっという間に Glassfish が起動する様子とか示してました。

Java SE は Danny Coward。

SE 7 の話としてはモジュラリティ、複数言語のサポート (スクリプト言語というわけではなく、C# とかも含まれていました)。リッチクライアントの話。リリースは 2009 年夏に延期されてました。

ConsumerJRE は 2008 年の秋。その前に 6u5p というバージョンが出ます。p はパフォーマンスの p。64 tbit OS 向けだけにリリースされ、64bit 向けのパフォーマンスチューニングが施されているようです。

Consumer JRE は Plug-in を刷新するようで、Applet 復活をうたってました。この Plug-in はなかなか良さそうです。起動時間も早いし、プロセスが Browser とは切り離され、かつ複数のプロセスで Applet/JWS が動作するようになっています。

後は JavaFX。リリース時期が示されたのですが、あいかわらず開発環境に関してはたいしたものが出てきません。これは重大なミスだと思います。 Photoshop との連携を示していましたが、Photoshop のレイヤーがそれぞれ PNG に分割して、JavaFX で取り込むだけというもの。これでは、さいさきが暗いです。

Roberto Chinnici, Technical General Session, JavaOne 2008
Roberto Chinnici
Danny Coward, Technical General Session, JavaOne 2008
Danny Coward
Danny Coward, Technical General Session, JavaOne 2008 Robert Brewin, Chris Oliver and Anthony Rogers, Technical General Session, JavaOne 2008
スキンヘッドが Chris Oliver

Technical Session

TS-6271 Java Platform, Standard Edition: A Youthful Maturity

前半の Java SE 6 はどうでもいいので、後半の Java SE 7 を中心に聴講しました。

やはり、Java SE 7 で中心になるのはモジュールの話です。

  • Modules
  • Annotation syntax の拡張
  • Closure
    • その他
    • Improved type interface
    • Strings in switch statements
    • Enum comparisons
    • Catching multiple exception types

モジュールは去年までは superpackage といってましたが、module と変更になりました。名前が変っただけで、機能は superpackage と同じようです。

最後の複数例外のキャッチは結構うれしいです。リリース時期が延びたためか Closure が入るようですね。

複数言語のサポートも強化されます。バイトコードの追加も行なわれるようですが SE 7 に間に合うかは微妙。資料では 「SE 7 の」ではなくて、「未来の」となっていましたし。

また、Java SE 7 ではプロファイルが導入されることになりそうです。個人的にはプロファイルは反対なんですが......

今のところ、Rich Client Profile、Headless Profile の 2 つのようです。

また、jconsole とプロファイラが一緒になったような Visual VM のデモも行なわれました。この Visual VM のデモをしていたのは、去年 JMX のセッションを担当していた Luis Miguel-Alventosa。チームが変ったのか、それとも JMX のチームの中で行なっているのか、よく分からないんですけど。まぁ、それはさておき、Visual VM は使えそうですよ。

最後に JRE の話。Performance JRE と Consumer JRE です。特に Java Plug-in が刷新されたことがうれしいですね。

Danny Coward, TS-6271 Java Platform, Standard Edition: A Youthful Maturity, JavaOne 2008
Danny Coward
Luis-Miguel Alventosa and Tomas Hurka, TS-6271 Java Platform, Standard Edition: A Youthful Maturity, JavaOne 2008
Luis-Miguel Alventosa と Tomas Hurka

TS-5581 Upcoming Java Programming Language Changes

Java 言語の変更点についてまとめたセッション。

Sun の Alex Buckley、Google の Neal Gafter、MIT の Michael D. Ernst がスピーカですが、Alex が中心になって喋っていました。

はじめに言語仕様の変更に対するポリシー的なものを説明しました。それにしても言語開発者は大変ですね。論点としては

  • Applications vs. Languages
  • Fewer, more regular features are better
  • Respect the past, Respect the future, Respect the model

ということで、Java の言語仕様の変更に関して。取りあげられたのは

  • 例外の Multi Catch
  • 安全な例外の再 throw
  • module
  • Annotation
  • Annotation を用いた型チェック

例外の Multi Catch は同じ例外処理の場合、まとめて記述できるというもの。たとえば、以下のように記述します。

    try{
        ...
    } catch (X1Eception, X2Exception e) { ... }
    } catch (X3Eception e) { ... }

これは地味だけどうれしい変更点ですね。

再 throw も同じく地味ですが、結構うれしいです。というか、今まで再 throw が安全にできなかったということにビックリですが。

モジュールは何度も出ているので、省略。

Annotation は、Annotation で修飾できる対象を大幅に増加させたということ。たとえば、次のような要素に Annotation を記述することができるようになります。

  • ジェネリクス
  • ローカル変数
  • キャスト
  • メソッドの引数
  • メソッドの戻り値

ジェネリクスやキャストに Annotation を記述できるようにするのは、Annotation を使って型チェックをするためといっても過言ではありません。

つまり、型チェック用の Annotation で修飾された要素は、コンパイラによってチェックされます。たとえば、

  • @NonNull
  • @Interned
  • @Readonly
  • @Immutable

などの Annotation が型チェック用の Annotation になります。

今後取り入れられそうな機能が最後に紹介されたのですが、それより興味深かったのが将来にわたって取りいれられることのない機能です。次の 4 項目が示されていました。

  • ユーザ定義の演算子オーバロード
  • マルチメソッド
  • マクロ
  • 動的型付け

TS-5515 Let's Resync: What's New for Concurrency on the Java Platform, Standard Edition

Brian Goetz, TS-5515 Let’s Resync: What’s New for Concurrency on the Java Platform, Standard Edition, JavaOne 2008
Brian Goetz

新幹線本の Brian Goetz によるセッション。

新幹線本というのは Java Concurrency in Practice のことです。とはいうものの、日本語訳の「Java 並行処理プログラミング」は新幹線じゃないのですが.... ^ ^;;

最近、Brian Goetz は JavaFX Compiler チームにいるのですが、今日は並列プログラミングの話。特に fork-join フレームワークが中心になっています。fork-join は UNIX 系の OS を使っている人にはおなじみの fork-join です。

J2SE 5.0 では並行プログラミングのための Concurrency Utilities が導入されました。

もちろん、Concurrency Utilities の中には非同期処理を行なう API が準備されています。もちろん、Executor + Future のことですね。しかし、これも並列化するためにはまだまだ粗いということなのです。

そこで、登場するのが fork-join です。

タスクの分だけ fork を行い、すべてのタスクが終了するまで (join するまで) サスペンドします。

この fork-join と合わせて、効率的に並列化がおこなえるのが PararrelArray クラスです。PararrelArray は withFilter メソッド、withMapping メソッド、max メソッドなどが定義されており、これらのメソッドは fork-join で並列化されます。

このとき、withMapping メソッドなどの引数にクロージャを用いることができるようです。

 

BOF

BOF-5061 は Q&A BOF なので省略します。このセッションは基本的には SPOT の Q&A ですが、いろいろとネタもありました。それにしても、かなりいろんな人が Sun SPOT 使って、遊んでますね。YouTube や Flickr にビデオ/写真がいっぱい上がってます。

このページがまとめページになっているので、ご参照ください。おもしろいですよ。

 

BOF-5031 Upcoming Java Programming Launguage Features

BOF-5031 は、テクニカルセッションと同じタイトル。つまり、言語仕様変更に関する Q&A セッションです。

とはいうものの、Q&A だけではありません。Annotation を使った新しい型チェックを、Eclipse の Plug-in を使ってデモをしました。Eclipse を使っているのは、これを書いたのは MIT の Michael Ernst だからです。

その後、言語の仕様変更のポリシーを J2SE 5.0 で導入された拡張 for 文について説明したのですが、これはなかなかおもしろかったです。

Iterator と Enumeration は、ユーザがイテレーションの処理を書かなくてはなりません。それに対して、拡張 for 文は内部でイテレーションの処理を行なっていると考えることができます。

ここでまず提案されたのが、for ではなく foreach を使う記法。しかし、これはすでに識別子として使われています。そのため、for が再利用されることになりました。

次にイテレーションにできる要素ですが、配列と Collection が候補にあがります。しかし、Collection であることが、常にイテレーション可能というわけではありません。そこで、よりよい表現を考えることになったわけです。

1 つの案として、for (Object o: collection.iterator()) { ... } のように iterator メソッドを使って記述する方法です。しかし、これも書き方が複雑になる、Iterator が java.util パッケージで言語でサポートするには適当でないなどの理由から却下されます。

そこで、java.lang パッケージに Iterable インタフェースが導入されたわけです。Iterable インタフェースは iterator メソッドが定義されており、Iterator オブジェクトを返すようになっています。

そして、レトロフィットのために Collection インタフェースは Iterable インタフェースの派生インタフェースとなったわけです。とはいうものの、java.util.Iterator インタフェースはコンパチビリティのため、java.util パッケージのままになり、Iterable インタフェースだけが java.lang パッケージになったということです。

拡張 for 文は比較的単純な例らしいのですが、やっぱり言語仕様を変更するというのは大変ですね。

 

BOF-5965 3-D Graphics APIs for the Java and JavaFX Platforms

去年までは Java3D と JOGL の BOF だったセッションです。

Technical General Session で Ken Russell が新しい Plug-in のデモをしていたので、なんでだろうと思っていたのですが、いつのまにか Ken Russell が Plug-in チームに移動してました。

まずは、Kevin Rushforth による Java 3D について。

ところが、ほとんど新しい話はなし。去年のこのセッションでは 1.5 系と 2.0 系でどのように進めるかという話が議論されていたのですが、それもまったくありません。

なぜか。

それは、デスクトップ用の 3D ウィジェットを作成する Scene Graph 3D (SG3D) プロジェクトが始まったからです。これは主に JavaFX で使用されるものです。

以前、チーム単位で動きを見てみるといいよ、とある人が教えてくれたことがあります。

その時も、Java 3D の進捗がなくなってしまったときでした。その時は Java 3D のチームは CLDC 用の 3D ライブラリの開発に携わっていたのでした。

つまり、あるテクノロジーを開発するためのリソースは限られており、同時に 2 つのテクノロジーを開発するほどではないということ。そして、あるテクノロジーの進捗が滞っていたら、そのチームは他のテクノロジーの開発に狩りだされている可能性が高いということです。

まぁ、今回もそういうことのうちの 1 つなのでしょう。

SG3D のデモとして、JavaFX の 3D ゲームである Moontank。そして、LG3D の CD Viewer みたいな画像/動画ビューアがデモされました。

使いやすいといいんですけど、どうなんでしょうね。早く公開してくれないかなぁ。

さて、後半は Ken Russel による JOGL です... が、JOGL の話題はちょっとだけ。ほとんどの時間が Consumer JRE の新しい Plug-in の話でした。

まず、彼が紹介したのは Plug-in で動作する FPS ゲームの Jake 2。これは id Software の Quake 2 のゲームエンジンを Java に移植したものだそうです。

かなりサクサク動いてます。これはすごい。

つづいて、JavaScript と Applet の連携のデモ。NASA の World Wind という Java で実装された、Google Map のようなシステムがあるのですが、これをカスタマイズして JavaScript と連携させるというデモ

HTML のリンクをクリックすると、それに応じた場所にズームインするのです。

ソースを見てみると、JavaScript で getWWJApplet メソッドで Applet にアクセスできるようです。

また、Applet をドラッグして、ブラウザから Applet を切り離してしまうというデモも行ないました。これもブラウザと Applet が異なるプロセスで動作しているからできることなのでしょう。

ちなみに、Consumer JRE はベータ版がすでに公開されています。新しい Plug-in も提供されているので、いますぐ試すことができますよ。

さて、最後に JOGL のデモ。

携帯デバイス用に開発された NVidia の APX 2500 という CPU があります。このチップは NVidia ということで、Open GL ES 2.0 が動作します。Open GL ES は組み込み機器用の Open GL で、Open GL のサブセットになっています。

たとえば、PS3 などが Open GL ES を採用しています。

その APX 2500 で JOGL が動くというデモを行なっていました。これからは、携帯でも Open GL で JOGL という時代なのかもしれません。

Kevin Rushforth, BOF-5965 3-D Graphics APIs for the Java and JavaFX Platforms
Kevin Rushforth
Ken Russell, BOF-5965 3-D Graphics APIs for the Java and JavaFX Platforms
Ken Russell

Pavilion Reception

JavaOne 初日は恒例の Pavilion Reception。

そして、これまた恒例の食べ物に並ぶ行列。昨年よりも確実に長くなっています。こういうところでも、参加者の増減が分かるというものです。

でも、たいしたものは出ないんですけどね。トルティヤチップスやタコスなど。以前はもっと豪華だったのですが、やはり予算削減の影響なのでしょうか。

JavaOne Pavilion Welcome Reception, JavaOne 2008 JavaOne Pavilion Welcome Reception, JavaOne 2008

2 件のコメント:

Masako Ofuchi さんのコメント...

一つの冊子になりそうなくらい濃ーーい内容ですね!
Neil Youngがかっこいいのはもちろんですが、例のJonathanの写真はほんと性格が透けて見えるくらいよく撮れてて、見るたびに笑っちゃいます・・・

skrb さんのコメント...

コメント、ありがとうございます。
Jonathan のスピーチはポスチャーに特徴があるので、そういうところをなるべく撮れるように狙ってました ^ ^;;
2 日目以降も引き続き公開する予定なので、よろしくお願いします。