2010/09/21

JavaOne 2 日目

このエントリーをはてなブックマークに追加
Bringing in beverage

今日は 2 日目ですが、日曜日にもイベントがあったので 3 日目のような気がしてなりません。

上の写真は OOW/JavaOne のためにペプシなどを搬入しているところなのですが、量が半端じゃないです。写真には写ってませんけど、このとなりにペプシが山になってます。

参加者が多いのはこういうところでも分かりますね。

そういえば、昨日朝ごはんがあることを知ったので、見にいってみました。

去年はパックに入ったドーナツ 2 個だったのが、食べ放題になったのはいいですね。でも、もっと早い時間からにしてくれないと、使えない!!

Breakfastt, JavaOne + Develop 2010 San Francisco Breakfastt, JavaOne + Develop 2010 San Francisco

さて、今日、聞いたセッションは以下の通り。

Technical Session

Keynote

BOF

おまけ

今日ははずれのセッションばかり。

HTML 5 はこれからの話が全然なくて、HTML 5 の説明と、それに対応する Java の説明だけ。これからどうやって Java が HTML 5 に対応していくのかを聞きたいのに。

Project Jigsaw も既知のことばかりでした。なるべく早く、今日話した仕様をドキュメント化してもらいたいところです。

Concurrency の話は Brian Goetz と Cliff Click。ほとんどが HW の話で、それに対応して SW はどうすればいいのかというところがはしょられてしまいました。Java 技術者にとってはそこが聞きたいところなのですが...

それにしても、Goetz 氏と Click 氏はすごい早口。全然ついて行けません orz

BOF の Jigsaw は完全に Q&A セッション。通常は Q&A に行く前に、少しは何らかの発表をするのですが、それもなし。Q&A は言葉だけで説明するので、英語が苦手な櫻庭にはかなりつらいです。

Technical Sesssion

S314557 The Modular Java Platform and Project Jigsaw

[S314557] Mark Reinhold "The Modular Java Platform and Project Jigsaw", JavaOne + Develop 2010 San Francisco
Mark Reinhold

Java SE 7で導入予定だった、Java の新しいモジュラリティの話。昨日の JDK のセッションで Java SE 8 にスリップすることに決まってしまいましたけど。

ちなみに右の写真で Mark の顔が青いのは演台の上にあるノート PC の色のせいです。

今までのパッケージや JAR ファイルを使ったモジュールシステムはいろいろと問題があったわけで、それらに対応するのが Project Jigsaw です。

コンセプトとしては Grouping + Dependence + Versioning + Encapsulation + Optional Modules + Virtual Modules です。

Grouping として、新しい概念の module を使用します。モジュールは複数のパッケージをまとめたものと考えることができます。module の定義は module-info.java に記述します。

Dependence はモジュールが依存している (必要としている) モジュールを module-info.java に記述することによって実現します。

たとえば、 com.foo モジュールが org.bar.lib と edu.baz.util モジュールに依存している場合下のように module-info.java を書きます。

module com.foo {
    requires org.bar.lib;
    requires edu.baz.util;
}

バージョンも module-info.java に記述します。バージョンは数字以外でも大丈夫で、@ の後に記述します。

module com.foo @ 1.0.0 {
    requires org.bar.lib @ 2.1-alpha;
    requires edu.baz.util @ 5.2_11;
}

上のように書くと、依存するモジュールのバージョンも指定できます。

Encapusulation はモジュールを使用するモジュールを限定することです。また、Optional Modules はモジュールへの依存がオプションの場合です。この場合 requires の後に optional を追記します。

ここまでは言語の方のモジュラリティです。

そして、パッケージングの方のモジュラリティには JAR ファイルに代わり、jmod ファイルを使用します。

jmod ファイルは jpkg コマンドで作成します。この時に、ネイティブのライブラリも一緒に含めることができます。

jmod ファイルをレポジトリにあげたりするには jmod コマンドを使用します。実際に java コマンドでは -m モジュールを指定します。

最後に rt.jar の分割について。rt.jar はでかいですから、Jigsaw を使って分割する予定になっています。

S314037 The Concurrency Revolution: The Hardware Story

Brian Goetz と Cliff Click によるコンカレンシーのセッション。

前半が HW のトレンドに関して。もちろん、マルチコア化のトレンドです。

もう 1 つ考慮しなくてはならないのが、メモリ。メモリは CPU の時間に比べると桁違いに遅いわけです。

その時間を埋めるのがキャッシュ。

最近の CPU はだいたい L1 から L3 まで 3 段階のキャッシュを使用しています。L1 が一番 CPU に近いところで容量も少なくなっています。

マルチコアの CPU では L1 は各コアに 1 対 1 で対応しており、L2 は数個、L3 はより多くのコアと共有するようになっています。

その一方でメインメモリはどんどん大きくなっているわけです。CPU との時間差を考えると、メモリは新しい種類のディスクと考えるべきです。

つまり、メインメモリにアクセスするようになるととたんに実行時間は遅くなります。このことからキャッシュミスを如何にしないかといいうことを考えなくてはいけません。

さて、このような HW のトレンドに対して、SW を作成する時はどうすればいいのでしょう。この部分が一番興味があるわけですが、ちょっと弱い。ということはまだ王道が確立していないということなのかもしれません。

原則としては、データについて考えるべきであって、コードではないということです (Think Data, Not Code)。そして、もう 1 つ。共有やミューテートはなるべく減らすということです (Share Less, Mutae Less)。

共有データを使用することはかまいません。また、ミューテートを使うのも大丈夫です。しかし、それらを混ぜて使用するのはダメです。

ソリューションとしてあげられたのが、スレッドープール/ワークキューやFork/Join、Map/Reduce などです。Scale などで使用できる Actor もソリューションの 1 つにあげられていました。

最後にあげられたのが GPU を使った処理。

しかし、いずれもポイントを上げただけで具体的な手法がなかったのが、残念なところです。

[S314037] Brian Goetz "The Concurrency Revolution: The Hardware Story", JavaOne + Develop 2010 San Francisco
Brian Goetz
[S314037] Cliff Click "The Concurrency Revolution: The Hardware Story", JavaOne + Develop 2010 San Francisco
Cliff Click

Keynote

JavaOne Technical General Session

JavaOne Technical General Session, JavaOne + Develop 2010 San Francisco

日本語で言うところの基調講演は OOW ではすべて Keynote なのですが、このセッションだけは今までの JavaOne と同じく General Session でした。

この General Session が行なわれたセッションは昨日の JDK 7 の部屋。つまりランチ会場だったところ。

ところが今日はランチの後、この部屋は封鎖されていたのです。で、General Session が開場したら、なんと丸テーブルが取り去られていて、イスだけになっていました。

スタッフは大変だったでしょうね。

Technical General Session は SE が Mark Reinhold、EE が Roberto Chinnici、ME が Greg Bollella でした。

Greg Bollella はずっと Sun Lab. でリアルタイム Java をやっていたのですが、ME の担当になったのでしょうか? よく分りません。

ついでにいうと、JavaFX はありません。昨日の JavaOne Keynote では取りあげられているのに、今日は取りあげられないというのは、どういう扱いなのでしょうか? ほんとよく分らないです。

はじめの Java SE のパートは昨日の JDK 7 のセッションとまったく同一だったので割愛。

Mark Reinhold, JavaOne Technical General Session, JavaOne + Develop 2010 San Francisco Mark Reinhold, JavaOne Technical General Session, JavaOne + Develop 2010 San Francisco

Java EE は半分以上が Java EE 6 の話。最後にほんのちょっとだけ未来の話。キーワードとしてはクラウドなのですが、Java EE の方向性やクラウドで何がしたいのかという総論の話はまったくなし。

説明するのは各論ばかり。ちょっと肩すかしでした。

Roberto Chinnici, JavaOne Technical General Session, JavaOne + Develop 2010 San Francisco Arun Gupta and Roberto Chinnici, JavaOne Technical General Session, JavaOne + Develop 2010 San Francisco
一緒に写っているのは Arun Gupta

もっと肩すかしだったのが、Java ME。昨日のキーノートで Java ME はかなりぶち上げたのですが、今日はそれが急速にしぼんでしまいました。

Java ME.Next プロジェクトを進めているようですが、コンフィギュレーションは CDC と CLDC のまま。CDC と CLDC を決めたのは 10 年以上も前であり、現在の状況とはかけ離れています。

いつまでも CDC、CLDC を引きずるのではなく、新しいコンフィギューレションを立ち上げる時だと思うのですが、どうなんでしょう。

また、スマートフォン対応も今見せられるものが何もありません。これから作るのでは、完全に取り残されるだけだと思います。

Greg Bollella, JavaOne Technical General Session, JavaOne + Develop 2010 San Francisco Mohamed Abdelazlz and Greg Bollella, JavaOne Technical General Session, JavaOne + Develop 2010 San Francisco
一緒に写っているのは Mohamed Abdelazlz

ちなみに Technical General Session の後は Oracle Develop Keynote。こっちの Keynote は DB の話だったので、途中退出しました。

ちょっと可愛そうだったのですが、このキーノートはガラガラ。ほとんどの人が退出してしまっていました。

Develop に参加している人たちは Keynote にでないんですかねぇ?

Thomas Kyte, Oracle Develop Keynote, JavaOne + Develop 2010 San Francisco Thomas Kyte, Oracle Develop Keynote, JavaOne + Develop 2010 San Francisco

BOF

S313920 Using CSS to Create JavaFX UI Controls: Visual Designers’ Experience

JavaFX では以前より CSS を扱うことができたのですが、JavaFX 1.3 でかなり CSS の機能が強化されています。

ほとんどのコンポーネントで CSS を扱うことができるのは当然ですが、円や四角などのシェイプでも CSS を使うことができます。

このセッションではアプリケーションの外観を CSS を使うことで、変化させるデモを行なっています。

しかし、櫻庭的には CSS の書き方が気に入らないのです。というのも、すべてに fx がついているからです。たとえば、フォントサイズの指定は -fx-font-size です。なぜ普通に使われる font-size にしなかったんでしょう? 不思議です。

後半は JavaFX 1.3 でサポートされた JavaFX TV の CSS サポートに関してでした。

JavaFX TV でも、JavaFX Desktop とほぼ同じ CSS が使用できます。これも実際のアプリケーションでデモをしました。実際のアプリケーションといっても、シミュレータで動かしているだけですが。

このセッションはとても参加者がすくなく、関係者以外は 4, 5 人。最後まで聞いていたのが 2 人だけです。

そのため、参加者も含めてインタラクティブなセッションになってしまいました。これ幸いと自作のプレゼンツールの宣伝をしてしました ^ ^;;

しかし、こういう状況だと写真撮るのがつらいです。もともとこの会場は暗くて写真を撮るのがつらいので、写真はなしです。

S314787 Hot Class Swapping: Avoiding Redeployment During Java EE Development

BOF S313337 Advanced Monitoring and Troubleshooting with VisualVM, JavaOne + Develop 2010, Moscone South
Jaroslav Bachorik

クラスファイルを動的に切り替えるホットスワップに関するセッション。本日、最後のセッションにも関わらず、参加者はかなり多くいました。最近のトレンドなんでしょうか?

ホットスワップと聞くと、クラスローダの切り替えによって実現することなのかと思っていたのですが、どうやら違うようです。

ここで話題になっているホットスワップはインスツルメンテーションを使って実現する手法です。

現在のインスツルメンテーションではメソッドの中身を変更することはできますが、フィールドやメソッドの追加はできません。

Java SE 7 では JSR 292 でホットスワップが可能になります。JSR 292 は動的型付け言語が対象ですが、その機能は Java でも使用できます。

現状、ホットスワップが可能なものとして、次の 3 種類が紹介されました。

スピーカーの Tim Quinn は Project Beagle を率いているので、最後に Beagle のデモがありました。

ちょっと不完全燃焼だったのが、Project Beagle ではどのようにホットスワップを実現しているのかについて説明がなかったこと。どうやっているんでしょうね?

おまけ

Lunch

Lunch, JavaOne + Develop 2010 San Francisco
こんなところまでテリヤキが...

昨日は外に食べにいってしまったのですが、今日は午後に Brian Goetz と Cliff Click のセッションがあるので欠かすわけにはいきません。ということはセッションの合間の 30 分の休憩時間で食べなければいけないということ。

ということで、今日は Hilton にランチを取りにいきました。

Oracle は OOW では、いろんなところにすごいお金をかけているのはわかるのですが、ランチは普通。去年までとたいして変わりません。なんかお金のかけ方が違うような気がしてなりません。

道路ふさいでテント立てるより、よっぽどランチをよくしてくれた方が参加者にとってはうれしいのですけど、そういうのが分からないのでしょうね。

Lunch, JavaOne + Develop 2010 San Francisco Lunchbox, JavaOne + Develop 2010 San Francisco

2 件のコメント:

challenge-1 さんのコメント...

>櫻庭的には既知のことばかりでしたが...

これは悲しいですね。私も「俺の知らない事を教えくれ」と言ってみたい...

Yuichi Sakuraba さんのコメント...

まぁ、動きがあまりないからしかたないですけどね。
速報版では書かなかったですけど、書き直すときに Jigsaw も含めようと思ってます。