2012/10/02

JavaOne 2012 Day 3

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

今朝、Yelp で見つけたホテルのすぐそばの Mo'z Cafe に朝ご飯にいってみたら、行列。第 2 候補としてピックアップしていた Cafe Venue も行列していて、結局朝ご飯をあきらめてしまいました。そんなこんなで、朝の街をうろうろしながら Hilton へ赴いたのでした。

ちなみに JavaOne では朝一に朝ご飯は出ないのですが、Taylor St. Cafe などでコーヒは飲むことができます。ということで、上の一枚はそんな様子です。

さて、今日聴講したセッションは...

Facebook の今日の備忘録

Advanced JVM Tuning はなんか期待と違うんですよね。こういう起動オプションを使えばこうなるという説明ばかりで、じゃあどういう時にそれを使えば効果的なのかとか、使うことによってどれだけ効果があるのかという具体的なところがないんですよね。そういえば、去年の JavaOne でも同じようなセッションで同じような感想を持ったことを思い出しました ^ ^;;

でも、セッションが終わっても、スピーカのところに質問に来る人が多数。それだけパフォーマンスで悩んでいる人が多いということでもあると思います。

Advanced JVM Tuning の Facebook に書いたメモ

BOF の最後の JSR 310 のセッションはなんと Q&A セッション。あれっ、JSR 310 のセッションって他になかったはずなのに! でも、もう一度調べ直してみたらありました。CON4350 - From Instants to Eras, the Future of Time in Java。しかし、このタイトルからだと JSR 310 とは分かりにくい >< 完全に見落としていました。

このセッションに出るために、夕ご飯を食べていた Ferry Building から大急ぎで帰ってきたのに....


_DSC0941

Advanced JVM Tuning の David Keenan

_DSC0973

Advanced JVM Tuning の Monica Beckwith

_DSC1020

セッション終わると人がスピーカの所にみんな集まる

_DSC1476

JSR 310 の Q&A セッション

Techincal Session

CON6080 - Lambda: A Peek Under the Hood - Brian Goetz

Facebook に書いたメモ

昨日の Lambda のセッションに引き続き Brian のセッション。昨日のセッションは Project Lambda 全般というか、API の方に重点があったのに対し、このセッションでは Lambda 式をどうやって表現するかという話題です。

それはそうと、Taylor St. Cafe などで写真を撮っていたせいで、セッションに出遅れ。もちろん、遅刻はしていないのですが、最前列は確保できず。前から 10 列目ぐらいで聴講しました。

ところが、セッション会場の Hilton の Golden Gate は天井が低いのに、スクリーンはさらに低い位置に設置されています。そして、Brian は小さい字で、しかも後ろの方からだと絶対に見えない下の方にも字を書いてくる。やめてー。

結局、デジカメをライブビューにして写真を撮って、それで資料を確認するということをしてました。

別にホテルでセッションをするのはいいんだけど、こういうところはもうちょっと気をつかって欲しいなぁ。

さて、セッション内容です。

Java の Lambda 式は無名クラスのインスタンシエーションの簡易記法であるわけです。でも、Lambda式をすべて内部クラスに変換していたら、クラスがむちゃくちゃいっぱいになるよねが出発点。

じゃあ、InvokeDynamic で導入された MethodHandle で書いたらどうかと続きます。

しかし、Lambda が言語レベルのメソッドオブジェクトを表しているのに対し、MethodHandle は VM レベルのメソッドオブジェクトを表すという違いがあります。

MethodHandle を使うとしたら、Lambda の脱糖衣化してメソッドに変換するか、MethodHandle を使って Lambda を表現するかのどちらかになります。

しかし、この場合、Lambda を引数にとれる (というか、関数型インタフェースを引数にする) メソッドのシグネチャを MethodHandler にしなくてはならなってしまいます。

だったら、invokedynamic 使えばいいじゃないということになるわけです。Lambda は引数の型を省略して書けるので、indy を使えば型推論を実行時に行なうことが可能です。

そのために、Lambda 式を脱糖衣化してメソッドに変換する必要があります。そして、bootstrap でその変換を行なってしまうわけです。

このように indy を使うことでパフォーマンスもかなり向上します。最悪の場合でも、内部クラスとして Lambda を表現するのと同等、通常は 5 ~ 20 倍ぐらいパフォーマンスが向上します。

なお、JavaOne 後に公開された Project Lambda の Dveloper Preview b62 では Lambda を indy で表現するようになっています。

CON7263 - JVM JIT for Dummies - Charles Nutter
_DSC1025

Facebook に書いたメモ

Charles による JVM 講座で昨日の続きです。今日は JVM の最適化や JVM をどうやって実装するかという、より深いところについて。でも、これ絶対に for Dummies じゃないですよ!

HotSpot VM はミックスモードで動作していて、インタープリター的な動作とネイティブコードにコンパイルしたコードの両方を扱っています。実行時にプロファイルを行なって、ボトルネックになるところをネイティブ化し、最適化を行ないます。

最適化として説明されたのが

  • メソッドインライン
  • ループの展開
  • ロックの省略
  • 使われないコードの排除
  • 重複コードの排除
  • エスケープ解析

です。

ちなみに、最適化された部分があまり使われていないようであれば、脱最適化が行なわれます。

後半はこのような JVM の状況を知るための起動オプションや、どうやってスタックマシンをレジスタマシン上に実装するかという話題。最後はほんとにアセンブラですよ!

さすがにアセンブラを見せられてもという感じはするのですが... それでも Charles の話し方だと、なんとなく理解しているように錯覚させてしまうのが怖いww

CON4644 - JavaFX Extreme GUI Makeover - Angela Caicedo and Simon Ritter

Facebook に書いたメモ

前の 2 つのセッションは Hilton の Plaza という部屋だったのですが、ここはまったく WiFi がつながらないし、携帯も使えないぐらい電波が弱い。しかも天井低いので見にくいし...

で、やっとこのセッションで Imperial Ballroom へ移動。ここは天井高いし、スクリーンも高い位置なので、すごい楽。しかも WiFi つながるし。こっちをメインにしてほしいなぁ。

さて、GUI Makeover は Sun の時代から綿々と続けられているセッション。以前は Chet Haase などの Swing の開発者が担当していて、JavaFX になってからも Jasper Potts などの JavaFX の開発者が担当していたのですが... 今年は Angelar と Simon というエヴァンジェリストチームになってました。ちょっと残念。

Angela は黒い服のことが多くて、今日も黒の Oracle のポロシャツ。Simon はいつも通り赤いシャツです。

City Explorer というデモアプリと、Casino のデモアプリの 2 つを題材にするのですが、このコンビはもう 1 つセッションを持っているらしく、City Explorer はそちらで説明するらしいです。

で、Casino のデモアプリをどうやって作るかという説明。といっても見た目のところだけですが。

はじめは Angela が CSS について。

JavaFX の CSS には HTML の CSS にはない機能もいくつかあります。

たとえば、derive 関数。derive 関数はある色から明度を 10% あげた色などを得ることができます。フォーカスされている時には明るくするとかなどが簡単に書けるようになるわけです。

また、グラデーションも HTML の CSS よりいろいろと指定ができるようです。

続いて、Simon によるエフェクトとアニメーション。

カジノのアプリではアイコンにリフレクションを使うなど、いろいろなところにエフェクトを使用しています。選択されたら大きく表示されるなどもアニメーションで行ないます。

具体例として、スライドインしてくるメニューで解説が行なわれています。

最後に複数画面を持ったアプリケーションをどうやって制御するかという話題。ここでは個々の画面について FXML とコントローラクラスを記述して、場面によって動的に入れ替えている様子を説明していました。

それにしても、このデモアプリ公開してくれないかなぁ....


_DSC1138

_DSC1185
CON10844 - The Modular Java Platform and Project Jigsaw - Mark Reinhold

Facebook に書いたメモ

なんと、90% ぐらい去年と同じですよ!!! 大丈夫なのか Jigsaw!!

新しいところは Export と View のみ。

細かいところを見ればいろいろと進んでいるようですが....

Jigsaw が Java SE 9 に伸びてしまったわけですが、その技術的な理由として次の 2 点が上げられています。

  • Dynamic Modularization
  • Containers

また、テストなどにかける時間がぜんぜん足りていないようです。すでに Dev Preview が公開されているので、ぜひフィードバックをと呼びかけていました。

また、Technical Keynote では失敗してしまった、最小限の JDK のモジュールで JavaFX のスケジュールビルダーをどうさせるというデモも行なっていて、今度はちゃんと成功してました。

Rasberry Pi ではないので、当たり前といえば当たり前なのですが。


_DSC1245

_DSC1341

デモ担当の Mandy Chung

BOF

BOF3673 - Dynamic Instrumentation of Java Statically Defined Tracing - Amit Hurvitz
_DSC1372

Facebook に書いたメモ

動的なバイトコードの操作についてのセッションで、もっとバイトコード操作の話があるかと思ったのですが、意外に少なかったのです。でも、BTrace をどうやって作っているかが聞けたので、よかった。

はじめは DTrace の話。

DTrace のように Java のアプリケーションをトレースする手法として Java Statically Defined Tracing (JSDT) があります。しかし、JSDT は静的なトレース。事前に DTrace のプローブを作って、埋め込んでおく必要があります。

動的にプローブをしかけるための手段としてバイトコード操作を使います。バイトコード操作をするには、

  • Java Attach API
  • Java Instrumentation
  • ASM

を使う必要があります。最後の ASM は他のバイトコード操作のライブラリでもかまわないと思いますが。

で、これらを使っているのが BTrace です。

BTrace のプローブはもちろん Java で書けます。プローブには @BTrace アノテーションを付加して定義します。

BTrace と JSDT を使ったトレースについては以下のドキュメントがリファレンスとしてあげられていました

おまけ

_DSC0453

去年、Duke はあんまり表われなかったのですが、今年は Hilton 近辺にいることが多いみたいです。それにしても、今年は妙に行動が激しい。ダンスしたり、鼻 (なのか?) を押しつぶしてみたり。

あまりにも行動が速いので、写真に撮っても被写体ぶればかり。もうちょっと落ち着いてよ、Duke!!

Taylor St. Cafe でおもしろいものも見つけました。水筒に水を入れるための Water Station です。

JavaOne 以外にも、こういう水筒に水を入れるための水飲み場を何カ所か見たので、流行なんですかねぇ。

JavaOne にはぜんぜん関係ないのですが、今月末はハロウィーン。街の中でもハロウィーンにちなんだものがいろいろとあります。デカイお菓子のパッケージとか。

そんな中、ハロウィーンの店というか、ホラー的なものを扱う店があるのです。店先には下の写真のようなディスプレイが。これはかなり怖いですよ。それにしてもこれを買う人いるのかなぁ。


_DSC1223

_DSC1479

Hog Island Oyster Co.

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

JavaOne 前から大山さんと牡蠣を食べにいこうと画策していたのですが、考えてみれば今日しかありません。昨日の夜、誰か明日牡蠣食べに行かないと募集。大山、ゆうすけ、木村、小出、橋本 (敬称略) で行くことになりました。

もちろん、いったのは Ferry Building にある Hog Island Oyster Co.

いつも行列しているこの店ですが、たまたまほとんど並ばずに入ることができました。しかもカウンター席。

とりあえず、生牡蠣。その後、焼き牡蠣も。クラムチャウダーと水菜サラダも。水菜サラダはほんとに Mizuna Salad と書いてありましたよ。日本語なのに、これでみんな分かるのかなぁ。

ということで、牡蠣を堪能。やっぱりここの牡蠣はおいしいです。その分、かなりいい値段になってしまいました ^ ^;;


_DSC1384

_DSC1393

_DSC1401

_DSC1407

_DSC1413

_DSC1420

_DSC1423

_DSC1429

_DSC1447

_DSC1457

_DSC1461

_DSC1464

Caffé Central

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

夕飯に牡蠣を食べたわけですが、炭水化物をほとんど食べていないので、BOF の後小腹が空いてしまいました。

で、ちょっとだけ何か食べようと Westfield のフードコートにある Caffé Central へ。

Mixed Fruit Strip とカプチーノ。もうちょっとフルーツが新鮮だといいんだけどなぁ。まぁ、しかたないか。


_DSC1490

_DSC1506

2012/10/01

JavaOne 2012 Day 2

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

昨日は Keynote だけだったので、実質的には今日が JavaOne のスタートです。

Facebook の今日の備忘録

今年の JavaOne はテーマごとに会場が別れています。Java SE と JavaFX は Hilton Hotel、Java EE は Parc 55、Java ME は Nikko Hotel です。

櫻庭は Java SE と JavaFX のセッションしか聴講する予定がないので、ずっと Hilton。去年のようにホテルを渡り歩くのも大変なので、今年のようにテーマごとに別れているのはいいですね。とはいうものの、たまには他のホテルも見てみたいとは思いますが ^ ^;;

さて、今日聴講したセッションは次のとおりです。

それにしても、16:30 から BOF って早すぎないですか? テクニカルセッションより BOF の方が多く聴講したなんてはじめてです。

今日の Tech Session ははずれなし。みんなそれぞれおもしろかったです。

BOF は JavaFX のレイアウトのセッションが Scenen Builder のデモばかりで、あんまり役に立つことに言及してくれなかったのが残念。Facebook に書いたメモをいちおうあげておきます。

ところで、この BOF のスピーカーは Jean-François Denise。Jean-François は以前 JMX のチームにいたのですが、Scene Bulder のチームに変わったみたいです。

次の、JVM Performance BOF は Q&A セッション。Q&A セッションは取りあげる話題に対して興味があり、実際に何か聞いてみたい人にとっては有用なんですが... やっぱり、英語での Q&A はきついんですよね ^ ^;;

ほとんど聞き取れず、あえなく撃沈。

Lessons from Mathmatics は Project Coin の Joseph D. Darcy のセッション。数学的な見知からプログラム開発に役立てようという話でおもしろいんですけど、難しい。正直、blog に書けるほど理解できているかどうかおぼつかないので、とりあえず Facebook のメモで許してください。


_DSC0682


Jean-François さん

_DSC0790


Joseph さん

Technical Session

CON4616 What's New in JavaFX - Richard Bair and Jasper Potts

Facebook に書いたメモ

昨日の Tech Keynote があんな調子だったので、まったく JavaFX のテクニカルな情報がなかったわけです。JavaFX が Win, OS X, Ubutu, Linux/ARM で動くのなんか知っているしね。

で、このセッションが実質的な Tech Keynote になります。スピーカーも Richard Bair と Jasper Potts という JavaFX の二大巨頭ですし。

Richard は今日も服が黒。黒が好きなんでしょうね。

前半が最新バージョンの JavaFX 2.2 について、後半は JavaFX 8 について。

ちなみに JavaFX 8 は以前は JavaFX 3.0 というバージョンでした。でも、JavaFX が Java SE に正式に取り入れられることが決まったので、Java SE のバージョンに合わせて 8 ということになったわけです。

Java SE に含まれてしまった後は、Swing と同じようにバージョンはなくなります。Java SE 9 の JavaFX とか、Java SE 10 の JavaFX というようになるわけです。

で、まず JavaFX 2.2。

Richard のお気に入りの機能は Canvas、Jasper は PixelReader だそうです。前者は Java 2D を使った描画と同じような機能を持つコントロール、後者はイメージのピクセル情報を読み出すためのクラスです。

Canvas は今や HTML 5 の Canvas と同じようなクラスと行った方が通りがいいかもしれません。

使い方はほんとに Java 2D に似ています。Java 2D の Graphics2D クラスに相当するのが GraphicsContext2D クラスです。GraphicsContext2D クラスに対し、drawRect したり、fillOval したりするわけです。

ところで、ここで Richard が出したソースコードが明らかに間違っている。JavaOne で示されたコードがそのままでちゃんと動くわけではないという、いい例です。

PixelReader クラスは Image クラスと、PixelWriter クラスは WritableImage と一緒に使います。WritableImage クラスは Image クラスのサブクラスなので、PixelReader は WritableImage でも、もちろん使えます。

でも、イメージをミニチュア風写真にするというデモがあって、ぼかしをダイナミックに変更できるのです。これはおもしろかった。

SnapShot はシーングラフのスナップショットをとってイメージに変換するクラスです。SnapShot よりも印刷の方が欲しいんだけどなぁ....

取得したイメージを保存するには、やっぱり BufferedImage にする必要があるんですよね。はやく Image I/O も JavaFX に対応してくれないかなぁ。

JavaScript-toJava は WebView の JavaScript と Java の連携に関する機能です。また、Pagination は複数のページを扱うコンテナクラスです。

後半は JavaFX 8 の機能。

代表的な機能として列挙されたのですが、それが昨日 Nandini が紹介したものとずいぶん違うのはどうなっているんでしょう。たとえば、このリストには印刷などは入っていません。どういうこと?

まぁ、それはそれとしても、その新機能のリストの中で唯一説明されたのが Rich Text。

えっ、他にも説明するものがあるんじゃないの? でも、Rich Text だけです。3D とか説明してよ!

気を取り直して Rich Text です。Rich Text を扱うためには TextFlow クラスを使用します。TextFlow クラスは、Text クラスのためのコンテナのようなクラスです。

Font regular = Font.font("Helvetica", 96);
    Font bold = Font.font("Helvetica", FontWeight.BOLD, 96);
 
    Text hello = new Text("Hello ");
    hello.setFont(regular);
 
    Text world = new Text("World");
    world.setFont(bold);
 
    TextFlow textFlow = new TextFlow(hello, world);

このように記述すると、Hello が普通のウェイト、World だけがボールドで描画されます。これは Text オブジェクトのフォントを直接指定していますが、CSS で指定することも可能です。

でも.... なんで、マークアップ形式にしなかったんでしょうね。マークアップの方が絶対にいいのに。たとえば、HTML のサブセットとか。

Swing のよさの 1 つにすべての文字列を HTML で記述できたことがあると思うのです。HTML のバージョンが低いのはしかたないとして、どこでも HTML で書けるというのはすごい便利だったんですけどねぇ。

絶対に HTML でマークアップできる方がいいと思うんだけどなぁ。

というわけで、ちょっと不満が残るセッションでした。


_DSC0150

右が Richard、左が Jasper

_DSC0162
CON4862 The Road to Lambda - Brian Goetz
_DSC0238

Facebook に書いたメモ

去年は登場しなかった Brian Goetz ですが、今年は 2 セッション。このセッションと、明日の CON6080 Lambda: A Peek Under the Hood です。

どちらも Project Lambda に関するセッションです。今年はこれ以外にも Lambda のセッションがあって、Lambda の完成間近の雰囲気が漂っています。

それにしても、Brian は喋る時の特徴がすごいあっておもしろいです。2 ~ 3 分ごとに、一歩ステップバック、再びステップイン。

そして、ちょっとかかとをあげる。これが基本形です。

常にせわしくなく動いているわけではないのですが、自分の中でなにかしらのリズムがあるんでしょうね。

さて、セッション内容です。セッションでは、もう Lambda はあるもののという感じで、Lambda に関する説明はほとんどなし。重点はコレクションの API の方でした。

forEach から始まって、コンビネータの reverse と compose、バルク処理として filter、map など。

ここでバルク処理を扱うためのインタフェースとして Stream が登場。Lambda の ML で議論になっていたので、知っていたけど、ようやく公式に登場ということです。

今までは filter や map は Iterable のメソッドということになっていましたが、これからは Stream になるようです。で、Iterable の stream メソッドで、Stream オブジェクトを取得できます。

Stream インタフェースは遅延評価がデフォルトらしく、filter して map するなんていうのも結合して評価するようになるのでパフォーマンスも高いらしいです。

また、パラレル処理のための Splitable インタフェースは Stream インタフェースのサブインタフェースとなるようです。

CON7257 JVM Bytecode for Dummies (and the Rest of Us Too) - Charles Nutter
_DSC0309

Facebook に書いたメモ

JRuby の Charles Nutter がまじめにバイトコードを解説したセッション。今さらバイトコードですよ!!

先ほどの Lambda の部屋と同じ部屋なのですが、どう比べてみてもこっちのセッションの方が人が入っています。Charles 人気のせいなのか、Lambda の人気がないからなのか....

このセッションは明日の CON7263 JVM JIT for Dummies とペアになっているらしいです。明日の JVM JIT for Dummies の時間は他のセッションの予定だったのですが、予定変更して JVM JIT for Dummies を聞くことにしました。

ところで、Charles Nutter いつものごとく帽子をかぶっています。でも、RedHat の人になったのに赤い帽子じゃないんだね。

バイトコードを表すのに javap -c をしてという説明から入ったのですが、途中から BiteScript で書いた表記になっています。JRuby でバイトコードを扱うための DSL らしいです。

JVM がスタックマシンで、スタックマシンの動作を説明してから、個々のバイトコードの説明に入りました。

スタックに対する操作、コンスタントの扱い、ローカル変数のテーブルに関する操作、計算、フローコントロールと続きます。しかし、これは Dummies には分からないんじゃないかなぁ。

これが分かる人はこの説明ではちょっともの足りないような気もします。

最後は InvokeDynamic の説明。やっぱり、indy は登場するわけですね。

CON4082 Nashorn: JavaScript on the JVM - Jim Laskey
_DSC0581

今まで Oracle 内部で開発されてましたけど、やっと OpenJDK でオープンソースになることが決まった Nashorn です。ただ、メディアの扱いが OpenJDK に寄贈されたというように書かれていることが多いような気がします。

でも、寄贈というニュアンスからはちょっと違うような気がするんですよね。だって、OpenJDK のプロジェクトになっても、結局開発には何も代わりがなくて、コミットする先が社内の hg から、OpenJDK の hg になったというだけだと思うので。

Java SE 8 に入るには、OpenJDK 8 にも入れなくてはいけないので、オープンソースになるのは既定の路線だったはずです。

まぁ、それはそれとして、セッションはおなじみのナスホンじゃなくて、ナズホンだよという発音ネタから。

クライアントサイドで Nashorn を使う場面として JavaFX との連携があるらしいです。FXML に JavaScript がかけるので、そういうところみたいです。WebView の JavaScript エンジンも Nashorn にすることを検討しているみたい。

サーバーサイドでは JSP やビジネスプロセスを JavaScript で記述する意外にも Node.jar プロジェクトや Avatar などで使われるようです。

Node.jar は Node.js を Nashorn に移植したものらしいです。

昨日の Keynote でも Twitter や IBM と協力していくことをいっていましたが、このセッションでも Twitter の人と、NetBeans の人がちょっとだけ喋っていきました。2 人ともファーストネームでしか呼ばないので、誰だか分かりません。もしご存じの方がいらっしゃいましたら教えてください。

さて、Java から Nashorn を使うには、Scripting API を使用します。getEngineByNameメソッドの引数は nashorn です。Java SE 8 になったら、JavaScript や ECMAScript でも取得できるようになるらしいです。

デモとして、テンプレートエンジンの mustache に Nashorn を使用するものと、JavaFX の花火のデモ。JavaFX のプログラムがそのまま JavaScript で書かれています。これはおもしろい。


_DSC0603

Twitter の Jim さん

_DSC0605

NetBeans の John さん

BOF

BOF4347 JavaFX Event System Walk-through - Eva Krejčířová
_DSC0729

明らかにアメリカ人とは違う雰囲気の人。セッションの後にスピーカー紹介を見たらフランスの人だった。どうりで!

まずはイベントに関するクラスのクラス図から。JavaFX のイベントは Event クラスがスーパークラス。MouseEvent などは InputEvent のサブクラスで、InputEvent クラスのサブクラス以外だと ActionEvent と WindowEvent があるぐらいです。

Event クラスはイベントの種類を表す EventType、Swing のリスナーに相当する EventHandler インタフェースなどを持ちます。

イベントはシーングラフを辿ってイベントが発生したノードを探し、再びルートまで登ってくるという動きをします。前者がキャプチャリングフェーズで、後者がバブリングフェーズです。

イベントのフィルタリングはキャプチャリングフェーズに行ない、イベントハンドリングはバブリングフェーズに行ないます。

イベントハンドリングするにはノードの setOnKeyPressed メソッドなどでイベントハンドラーを指定します。setOnKeyPressed イベントなどは内部で addEventHandler メソッドをコールしています。

addEventHandler メソッドはイベントタイプとイベントハンドラーの 2 つの引数をとるメソッドです。

Swing/AWT ではイベントリスナーはイベントの種類ごとにありましたが、JavaFX では EventHandler インタフェースだけです。というのも、ジェネリクスでイベントを指定できるので、1 つで済むわけです。

EventHandler インタフェースはメソッドが handle の 1 つだけ。ということは関数型インタフェースなので、Lambda 式でイベント処理を書くこともできますね。

JavaFX 2.2 からはマルチタッチイベントが使えるようになりました。もちろん、ジェスチャーも使えます。マルチタッチを扱うイベントは TouchEvent です。

組み込まれたジェスチャーとしては 2 本の指で回す動作をする回転、ピンチアウト・ピンチインのズーム、1 つの指で前後もしくは左右に動かすスクロールがあります。

BOF5112 Thermostat: An Open Source Instrumentation Tool for the HotSpot JVM - Mario Torre, Roman Kennke

私が聴講するセッションは木村さんと小出先生と一緒になることが非常に多いのです。特に木村さんとは 6 ~ 7 割ぐらい一緒だったんじゃないかなぁ。

でも、このセッションは珍しく、末永さん、高雄さんと一緒でした。末永さんが一緒ということは JVM に関するセッションです。

Thermostat は RedHat で開発している、JVM の監視ツールです。私はぜんぜん事前知識がなかったのですが、末永さんと高雄さんはウォッチしていたらしいです。さすがです。

このセッションも RedHat の 2 人。どちらも赤い帽子かぶってますよ > Nutter さん

Thermostat は VisualVM に非常に似た立ち位置のツールですけど、拡張性とかがずいぶん違うらしいです。VisualVM は NetBeans Platform で作られたものだけですが、Thermostat はクライアントにスタンドアロンのアプリや Web、Eclipse のプラグインなどを提供しているらしいです。

とはいっても、Eclipse のプラグインはまだ見たいですが。

また、プラグインで機能を拡張することができるそうです。VisualVM もプラグインで拡張できますが、VisualVM のプラグインは画面のペインだったのに対し、もっと幅広い拡張になるようです。そして、プラグインは OSGi に対応しているのだと。

とはいうものの、まだスタンドアロン版のクライアントの GUI はかなりしょぼいです。今はまだ VisualVM に負けているな。

とはいうものの、これからが楽しみなツールです。


_DSC0753

Mario さん。帽子は恥ずかしいのか、かぶったり脱いだりを繰り返してました

_DSC0757

Roman さん

おまけ

_DSC0439

今年もやっぱり朝食は朝から出ません。なんで朝一のセッションの前に出してくれないのでしょう。結局、最終日まで朝食に出会うことがありませんでした。

昼ご飯もいつも通りのランチボックス。ところが、今年のランチボックスはおいしくなったという噂が。明日食べてみようっと!

それにしても、昼の時間帯にはランチ休憩はなし。その代わり 2 時から 3 時までが休憩です。でも、ランチボックスの配布は 2 時には終わっているので、この時間に食べようとしても食べられないんです。

なんか絶対おかしいよ!!

まぁ怒っていてもしかたないので、Candy Bar でお菓子をゲットしました。今年も Candy Bar があって、グミやチョコレートなどが取り放題。

今年は、Candy Bar の時間も長くなったので、それほど行列ができることはなくなりましたが、やっぱり行列します。

そして、今年は Taylor St. Cafe で昼間からビールが出されているらしいです。というか去年も出ていたのかもしれませんが、あんまり興味がないので ^ ^;;

そういえば、今年は JavaOne でもゴミは分別になりました。Compost と Wastee Only と Recycle の 3 種類。Recycle はペットボトルや缶、ビンなどは分かるのですが、雑誌や紙のバッグも書いてあってよく分かりません。

もっと分からないのが Compost と Waste Only の違い。残飯的なものは Compost というのは分かるのですが、例に出ている写真を見ても結局どっちに捨てればよく分からないんですよね。プラスティックは Waste Only なのかと思うと、ランチボックスの容器は Compost に書いてあるし。

生分解性プラスティックということなのかな? でも、生分解性とそれ以外の区別がよく分からないのです。結局、最後までよく分かりませんでした ><

Hilton の廊下に昨日の Keynote で登場した PandBoard を使った JavaFX のキオスク端末がおいてありました。もちろん、スケジュールビルダーが動きます。

特に問題もなく、普通に動きます。というか、JavaFX は CPU がプアーでも、GPU がちゃんとしていれば動いちゃうんですよね。ハードウェアアクセラレーションがいかに重要かが分かります。

ちなみに操作しているのは、山本さんです。


_DSC0408

_DSC0421

これが噂のランチボックス

_DSC0401

Candy Bar!

_DSC0505

どれでも取り放題

_DSC0424

ここでビールをもらえます。もちろんタダ!

_DSC0429

Taylor St. Cafe はコーヒーも常においてあります

_DSC0512

ゴミは分別して

_DSC0658

JavaFX のキオスク端末

_DSC0662

_DSC0672

La Boulange Bakery

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

JavaOne が Oracle の主催になってから朝一に朝ご飯が出なくなってしまったので、今日は Sutter St. の La Boulange Bakery

Boulage Club Sandwich と Straberry Tart。おいしいのはいいんんだけど、Sutter St から Hilton は遠い...


_DSC0106

_DSC0076

Cha-Am Tahi

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

前の方に書いたけど、ランチボックスを食べ損ねて、しかたないので Candy Bar でお菓子をゲットしたわけです。でも、やっぱりおなかはすくので、誰かごはん食べに行こうとツイートしたら大山さんが反応してくれました。

ということで、久しぶりに Cha-Am Thai へ。

Moscone で JavaOne をやっていた頃はよくいっていたけど、Oracle になってからはぜんぜんいってません。Cha-Am は Moscone の裏の方にあるのですが、やっぱり遠い。

私はソムタムとパッタイ。大山さんは今日のスペシャルのマンゴーのサラダ。マンゴーのサラダってどういうのだろうと思ったら、ソムタムみたいなサラダでした。

でも、マンゴーの甘みがあってソムタムよりおいしいかも。

パッタイはおいしいんだけど、もうちょっとケチャップを減らしてくれるともっとおいしいような気が。酸味にタリマンドをつかっていないのは、しかたないのかもしれません。

SOMA はいろんなところが工事中。Moscone の方から見ると、本物の車の平面図が貼ってある駐車場が新しいビルに建て替えられているように見えます。Cha-Am の帰りにどうなっているか見にいってみると、ちゃんと平面図の駐車場は残っていました。新しく作っていたビルはその奥でした。

Moscone の横を歩いていたら、作業車がいっぱい並んでました。何だったんだろう、あれは?


_DSC0522

_DSC0549

_DSC0565

実車の平面図

_DSC0572

なんでこんなに集まっているのか?