2013/09/24

JavaOne 2013 SF 第3日目

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

3 日目のメインイベントはなんといっても、明日のライブのチケットを取得すること。えっ、違う?

チケットは夕方から受け取れるのですが、これがないと明日のライブに入れません。ということで、ちゃんと受け取りました ^ ^;;

さて、今日聴講したのは、以下のセッションです。

今日のはじめの Samll Chage and Big Files .... は Joe Darcy と Alan Bateman というスペックリード 2 人のセッションなのですが、Java SE 7 の Project Coin と New File System API を紹介しただけ。

もう Java SE 7 がリリースされてからかなり時間がたっているんだから、いつもと同じ話ではなく、もうちょっと深いところとか、実装がどうなっているかとか、それ以降の予定とか、何でもいいから違った観点から喋ってもらいたかったです。

Collection も、Stream とか最近の話題をもうちょっと取り入れてほしかったです。ただ、このセッションも人気があって、5 分前に部屋に入ったら、もう席が残りすくないぐらいでした。

JavaFX の Widget はもともとあまり期待していなかったのですが... もっとセッションの構成をしっかりしていればおもしろくなるんですけどねぇ。説明不足だということが分からないのかなぁ....




Alan Bateman



Joe Darcy



Hendrik Ebbers と Mark Heckler
 

CON7941 Lambda: A Peek Under the Hood


スピーカは Brain Goetz。

去年も同タイトルのセッションがありましたが、内容は同じです。でも、去年よりも InvokeDynamic について分かってきたのか、今年の方がより理解が深まりました。

大きな問題として、Lambda 式の型をどうするかという点があります。初期のプランでは関数型だったのですが、いろいろと問題があって却下されました。そこで、導入されたのが Functional Interface です。

Functional Interface であれば、いままでの Java とのコンパチビリティも保たれます。

その次に問題になるのが、Lambda 式の表現です。一番簡単なのは内部無名クラスとして表すことです。初期の Project Lambda の実装では実際に内部クラスで表現されていました。

しかし、内部クラスだと、Lambda 式ごとにクラス生成を行う必要があります。また、毎回新しいインスタンスをアロケーションしてしまうという問題もあります。

そこで、新しい表現である MethodHandle で表すという案が浮かびます。Lambda 式は言語レベルのメソッドオブジェクトですが、MethodHandle は VM レベルのメソッドオブジェクトと考えられます。

そこで、Lambda 式を脱シュガーして、メソッドを取り出し、MethodHandle で表すということです。

しかし、Lambda 式を直接 MethodHandle に置き換えるにも問題があります。たとえば、メソッドのシグネチャが変化してしまうなどです。

最終的には InvokeDynamic で Lambda 式を表現するということになっています。

InvokeDynamic で扱うには、Lambda 式を脱シュガー化して static のメソッドに変換します。この変換は Lambda 式がはじめにコールされた時の bootstrap で動的に行います。

フォーマンスには以下の 3 つの観点があります。

  • Linkage cost: Lambdaをキャプチャする時に一度だけ
  • Capture cost: Lambdaのインスタンスする時のコスト
  • Invocation cost: Lambdaのメソッド実行のコスト

Linkage Cost は無名クラスに比べると早くなっており、Capture Cost は無名クラスと同等です。ただし、キャプチャしない場合は無名クラスよりパフォーマンスがよくなります。

CON9732 The Modular Java Platform and Project Jigsaw


スピーカは Java SE のチーフアーキテクトであり、Jigsaw のスペックリードである Mark Reinhold です。

昨年の JavaOne でも Jigsaw のセッションがあったのですが、一昨年とまったく同じ内容でした。これでは、Java SE 8 からドロップするのもしかたがないと思ったのでした。

まさか、3 年連続で同じ内容にはならないとは思っていましたが、若干の不安が。しかし、今年はずいぶん内容が変わりました。

昨年まで、モジュールを Java の文法的にどうやって表すかということが、セッションの半分を占めていましたが、今年はまったく出てきません。これが、モジュールを Java で表すことにあきらめたのか、それとも変化がないから解説しなかったのかは、Jigsaw の ML などでチェックしないと分からないです。

今回のセッションの中心はモジュールファイルをどのようにリンクするかということでした。

その前に、Java SE 8 のコンパクトプロファイルの話です。

コンパクトプロファイルには Compact 1, Compact 2, Compact 3 の 3 種類があり、それぞれランタイムのライブラリが 11MB、16MB、30MB となります。JRE 全体だと 54MB です。

コンパクトプロファイルは基本的には Java SE Embedded で使用されるものですが、ネイティブパッケージングなどにも使用することができます。

後半はモジュールファイルのリンケージについて。

Project Jigsaw ではモジュールを *.jmod ファイルで表します。この jmod ファイルを JRE にリンクさせるのが jlink コマンドです。

jlink -mods [モジュール名] -d $JRE のように使用します。また、javac コマンドに -mods オプションでも大丈夫です。実行時にリンクするのであれば、java コマンドに -mods オプションを使用します。

jlink の入力は jmod だけではなく、jar や class も使用できます。出力先は $JRE、もしくは JVM のイメージ、また jmod や jar も可能です。

JVM のイメージは .jai ファイルです。これを実行するには java -jai app.jar のようにします。

続いてセキュリティの話題。

今まで、Java では java もしくは javax ではじまるパッケージ以外にも sun.misc パッケージなどのクラスを使うことがありました。たとえば BASE64Encoder とか。

これらのクラスを使用してコンパイルすると警告が出たのですが、今後は使用することができなくなります。特にもモジュールを使用する場合は、アプリケーションの起動時に検出して IllegalAccessError を発生させます。

これに関して実際にデモが行われました。

CON6727 The invokedynamic Instruction in 45 Minutes


JRuby の Charles Nutter による invokedynamic の紹介セッション。

JVM での Java 以外の言語の取り組みというのはいろいろと行われてきましたが、2006 年までは Sun からの公式なサポートはありませんでした。

その後、JRuby チームを雇用したり、Java と他の言語との連携を行うフレームワークの導入など、サポートが行われ来ました。そして、JSR 292 InvokeDynamic が発足し、Java SE 7 に導入されています。

InvokeDynamic は動的言語だけと思われがちで、新しいインボケーションの仕組み、もしくは新しいバイトコードだと思われています。しかし、実際はそれにはとどまりません。

Charles は InvokeDynamic とはユーザがカスタマイズできるバイトコードとメソッドへのポインタの組み合わせといいます。

まず、メソッドへのポインタについて。これには MethodHandle クラスが使用されます。実際にはメソッドだけではなく、フィールドや配列へのポインタも含み、引数を操作したり、処理の順番を変えたりということもできます。

MethodHandles は MethodHandle のためのユーティリティクラスで、static な内部クラスにメソッドはフィールドを探索する MethodHandles.Lookup クラスがあります。その後、インボケーションを行いますが、これはリフレクションと同じように行います。

また、MethodHandles クラスには引数の操作などを行うメソッドも定義されています。これらを使うことにより、メソッドインボケーションをカスタマイズしていきます。

今までメソッドインボケーションを行うバイトコードは 4 種類ありましたが、新しく invokedynamic が加わりました。

invokedynami であるメソッドをはじめてコールする場合、まず bootstrap メソッドが実行されます。bootstrap では CallSite オブジェクトを作成し、そこには MethodHandle オブジェクトを保持させるようにします。そして、MethodHandle が指すメソッドの実行が行われます。

2 度目以降は bootstrap は実行されず、直接 MethodHandle が指すメソッドが実行されることになります。

BOF5802 No Guts, No Glory! A Deep Dive into the Internals of JavaFX

Richar Bair, Stephen Northover, Kevin Rushforth という JavaFX のコア部分を作成している 3 人による、JavaFX の内部構造に関するセッション。Jasper Potts がいないのは、私が予想するに、彼は比較的上位層の Controls などを担当しているからだと思います。

JavaFX にはいろいろとモジュールがあり、Base, Graphics, Controls などがあります。このセッションでは最大のモジュールである Graphics に関する解説が行われました。

Graphics モジュールは Glass, Prism, Quantum を含み、アプリケーションのライフサイクルから、実際の描画処理までを担当します。

Glass は OS や Window System に対する仮想レイヤになり、OS が異なっていても同じように使用できるためのレイヤとなります。Glass は UI-Thread で動作し、Window や View (Scene) を相当します。また、ネイティブのクリップボードやドラッグ & ドロップ、イベントなどに対する仮想化も行います。

実際に描画を行うのが Prism です。Glass は UI-Thread で動作しますが、Prism は Render Thread で動作し、Glass で Sync のイベントが処理される時に Prism でレンダリングが開始されます。

Quantum は AWT における Toolkit に相当します。

次にスレッドの話。

Glass では Scene Graph を Node で表しますが、これを Prism の Render Thread では NG Nodes として表し、描画を行います。この時に Lock が重要になり、Scene の状態によって synchronize を行うという方法で解決しています。

Prism ではハードウェアアクセラレーションを多用して描画行います。NG Nodes のツリーを ViewPainters がトラバースして描画を行います。イメージなどはテクスチャとして描画していきます。

GPU がマルチコアで構成されているのに対し、JavaFX 側では UI-Thread と Render Thread の 2 つのスレッドしか使用していません。そこで Command Buffer を使用してパフォーマンスを向上させています。

かなり内部のことに言及していて、かついろいろと話題が飛ぶので、追いつくのがやっとだったのですが、こういうセッションこそ JavaOne という感じがするセッションでした。




Stephen Northover



Richard Bair



Kevin Rushforth


BOF6223 Project Sumatra Update

Oracle の John Rose と、AMD の Gary Frost によるセッション。

Sumatra は昨年の JavaOne で発表された、GPU を高速演算に使用するためのプロジェクトです。

このような用途には OpenCL と CUDA という標準があり、Java からシームレスにこれらを使用していくようにします。GPU は多くの演算コアも持っており、これらを Java から使用していきます。

Java でマルチコアを扱う場合、スレッドを用います。しかし、スレッドは Java フレームやスタックなどを持ち、またシェアードメモリも使用します。このモデルは GPU での演算には向いていません。より小さい単位での処理を GPU で行わせます。

このセッションでは CUDA 用のアセンブラである PTX への変換と、AMD の HSA について解説されました。

Java のコードと変換後の PTX のコードを見せられたのですが、PTX はよく分かりません。アセンブラなので、ロードやらストアやらの命令が並んでいます。

現状は実験的な状態であるらしく、ゆくゆくは ParallelStream の演算をほぼ自動で変換していくことを目標にしています。

後半は AMD の HSA (Heterogeneous System Architecture) について。こちらは AMD の Gary Frost がプレゼンしています。

現在のプロトタイプでは Stream の forEach を HSA のオフロードコードに変換しているらしいです。こちらも HSA のコードが出されたのですが、いまいちよく分からず。

ここら辺は個人的にも、もうちょっと勉強しないと。

Gary Frost



John Rose


BOF7862 What and How Java Troubleshooters Think: Eight Years of Troubleshooting Java


今日の最後はアクロクエストの谷本さん、勝本さんによるトラブルシューティングについてのセッション。意外といっては失礼ですけど、結構人が入っていました。その中には Rockit の開発者というか、Flight Recorder の開発者の Marcus Hirt も!!

内容的には昨年の JavaOne Tokyo での焼き直し的な内容。そこそこ笑いもとっていたので、よかったのではないでしょうか。

ちなみに上の写真はやらせです。セッションの後に撮ってます ^ ^;; セッション後なので、この笑顔な分けです。

セッション前は、谷本さんにはめずらしく、ガチガチに緊張してました。セッション中もかなり脇汗が目立ってましたww それにもまして緊張していたように見えたのが勝本さん。まぁ、しかたないですけどね。

個人的に感じたことをいくつか書いておきます。

Java Puzzlers のようにクイズ形式で勧めていくのですが、選択肢にないものが答えだったりするのはどうかなと思いました。1 回はいいんです。そこで笑いをとれますから。でも、それを繰り返すと、聞いている方はどうせ答えは違うものだと考えて、思考停止してしまうと思います。

また、クイズ形式の構成が、状況の説明、選択肢とその回答、解説、モラルと進んでいくのですが、特に解説、モラル、とその次の問題に移行する時の間が悪いように感じました。モラルを解説しているのかと思うと、すでに次の問題に進んでいたりすることもあったので、ここからがモラルですよ、これから次の問題ですよとすぐに分かるように間を入れていくことが必要ではないかと思います。

まぁ、ネイティブではない英語で喋っているためというのはあると思うのですが、ちょっと浮き足立ってしまっていた部分もあったのかもしれません。

それにしても、ネイティブではない英語なのですから、全部を覚えようと思わずにカンペを使えばいいのではないかと感じます。

プレゼンでカンペを使うのは全然問題ありません。たとえば、今はなき Sun Microsystems の CEO だった Scott McNealy などは、スピーチに常にカンペを使っていました。

カンペを見ながら喋るのはダメですが、カンペを見て、それから顔を上げて喋るのは OK です。

それに、プレゼン用のカンペのカードって売っているんですよ。携帯電話ぐらいの大きさのカードを使うのですが、そこに書くこともルールがあります。

そこにすべての文章を書いてはダメです。自分もやったことがあるのですが、カードから目を離すと自分がいま読んでいる部分が分からなくなってしまうということがよくあるんです。そうなると頭が真っ白です。

私がネイティブの人に教えられたのは、原稿の名刺だけ写せというもの。日本人としては動詞も写しておきたいのですが、ダメだそうです。名詞がキーワードになるからなんでしょうね。

そして、1 枚のカードに 2 から多くて 5 センテンスを書いていきます。このぐらいの量であれば、かなり大きい文字で書けるので、今話している部分が分からなくなるということも少なくなります。

でも、谷本さんの場合は、直前まで資料を作っていたりするので、まずは余裕を持って準備をするということから始めなくてはダメでしょうね ^ ^;;




緊張で目が潤んでる






おまけ


今日の昼間、Taylor Street Cafe にいったら、四角いコンクリの塊がドーンと置いてありました。なにこれと思ったのですが、ロープの先を見てみると、テントの屋根につながっています。

ようするに、風でテントが飛ばされないようにするためのおもりだったわけです。

普段はビニールのカバーがかかっているので、気がつかなかったのですが、こうなっていたわけですね。




ロープの先を見てみると...






King of Thai Noodle House

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

Takao さんがランチがおいしくなくてつらいと Twitter でやりとりしていたので、じゃあということで今日は外でランチ。

1 時間でいって帰れるところということで、Geary St. の King of Thai Noodle House へ。私はパッタイとガパオガイ。Takao さんたちは麺を頼んでいました。ここは手早く食べられるけど、味はまあまあ。便利だからいいんだけどね。





天成酒家 Tian Sing Chinese Restaurant

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

谷本さん (@cero_t)、勝本さんのセッションの後、みんなでごはん。

大山さんたちはもうご飯を食べたというので、ビールが飲める Jasper's Corner Tap にいってみたら、満席。で、 @yusuke がお勧めする天成酒家 へ。

でも、ここおいしくない ><

典型的な観光客向けの店。ここはおいしくないだろうなぁと思っていたところだったのですが、ほんとにおいしくなかった。Yelp の評価もかなり悪いし。

@yusuke がお勧めするところでおいしかった記憶がないんだよなぁ... あぁ、Hog Island Oyster Co. があるけど、あそこは例外かなww

写真を載せたくないレベルなんだよねぇ... 載せるけど。

それでも、@cero_t は Flight Recorder の作者の Marcus Hirt と熱く議論してたので、よかったんじゃない ^ ^;;



















ボケとツッコミではありませんww

今日のおやつ - La Boulange

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

Keynote の後にも行った La Boulange は、去年 Starbucks に買収されたのでした。

そんなこともあって、種類や量は限られているのですが、Starbucks でも La Boulange のパンやケーキが置かれるようになっています。

ということで、Starbucks で買った Cheesecake Brownie。

Cafe Madeleine よりはましですが、ドングリのせいくらべレベルかな。それでも、夜中に買えるというのはすごいメリット。

2013/09/23

JavaOne 2013 SF 第2日目

このエントリーをはてなブックマークに追加
JavaOne 2013 San Francisco

JavaOne は昨日から始まっていますが、カンファレンスセッションと BOF は今日から。

去年からトピックごとに会場が決まっていて、Java SE 関連は Hilton、Java EE は Parc 55、Java ME は Nikko という振り分けです。

あいかわらず、Java SE 関連のセッションしか聞かない櫻庭なので、ずっと Hilton にいます。この Hilton がほんとに迷路なんです。何年たっても、場所がよく覚えられません ><

そういえば、去年まで普通のセッションってテクニカルセッションという名前だったと思うのですが、今年からカンファレンスセッションになってました。

さて、今日聴講したセッションです。

今日のチョイスの失敗は Porting OpenJFX to New Devices と JVM Performance でした。

Porting OpenJFX は参加者数人。いちおう資料もあったのですが、資料がおざなり。ほとんど前の方に座っている人たちと議論してました。こちらは移植について全然知識がないので、純粋に興味本位でいったのですが、まったくついて行けなかったです。

もう 1 つの JVM Performance は Q&A セッションでした。英語が得意でない櫻庭にとっては鬼門のセッション。ほんと分からないんですよね。英語勉強しないとと、毎年思うのですが....

また、G1GC のセッションも難しかった。こちらは技術的に難しくて.... これはもう一度資料を見直して、書けるようであれば、書くことにします。

 

CON7859 The Road to Lambda

Brian Goetz, CON7859 The Road to Lambda, JavaOne 2013 San Francisco

もちろん、Brian Goetz のセッションです。

内容的には新しいことはないのですが、話のもって行き方がおもしろいので、飽きさせないプレゼンです。Brian はむちゃくちゃ早口なのですが、彼の早口にもようやく慣れてきましたww 彼は早口なんですけど、英語はきれいなので、慣れれば聞きやすいです。

Java の近代化の話から始まって、他の言語では Closure をサポートしているのに Java ではされていないということや、内部イテレーションと外部イテレーションの話など。

そして、Functional Interface。問題になるのはインタフェースの拡張で、これはデフォルトメソッドで解決できるとしています。

デフォルトメソッドはステートレスなので、Scala のトレイトなどとは違うということや、多重継承のルールなどについて説明がありました。

Lambda Exp. とデフォルトメソッドを導入することで、API も革新されるとして、その結果が Stream になるわけです。このセッションでは Stream についてはサンプルコードだけで具体的な説明はしませんでしたが、その代わりに Stream のセッションが水曜日にあります。

最後にパラレル処理について。Fork-Join は使うのが難しいが、Stream と合わせることで容易にパラレルにすることができるとしています。しかし、ほんとにパラレルにするのであれば、いろいろと考えないといけないと思うんですけどね。

CON5767 What's New in JavaFX 8

Jasper Potts and Richard Bair, CON5767 What's New in JavaFX 8, JavaOne 2013 San Francisco

スピーカは JavaFX のチーフアーキテクトの Richard Bair と、相棒の Jasper Potts。

JavaFX 8 の機能は 3D や Rich Text などの大きな機能の追加については、今までもいろいろなところで言及されていましたが、このセッションはかなり細かい。

でも、なぜか JavaFX 8 の機能ではなくて、Java SE 8 の機能から。

Lambda と Nashorn について。もともと、JavaFX のイベント処理は Functional Interface だったので、Lambda によってかなり簡単に書けるようになります。

Nashorn の紹介では、JavaScript で JavaFX のアプリケーションを書いていましたけど、こういう使い方は特にうれしいとは思えないですね。それよりも、FXML で使える JavaScript が高速化したり、WebView の JavaScript の実行が高速化されることの方が利点があると思います。

続いてコレクション。

JavaFX ではコレクションとして ObservableList クラスなどが提供されていましたが、それに加えて FilteredList クラスや SortedList クラスなどが追加されるそうです。しかも、FilteredList クラスなどはデフォルトで処理が遅延されそうな API ですね。実際はコード見てみないと分からないですけど。

コレクションのすべての要素をバインドさせるなどの拡張も行われています。

ここからグラフィクスに関して。

フルスクリーンの解除にショートカットキーを登録できることや、はじめからツールバーなどがついている Unified Stage Style など。また、JavaFX に Swing の部品を貼るための SwingNode クラスも提供されます。

最後に Rich Text、印刷、3D、コントロールの追加など。

印刷は当初は AWT の印刷の機能を使って実装されるらしいですが、徐々に独自のものに置き換えるということです。

3D に関しては、昨日のキーノートでも紹介されていましたが、Maya や 3D Studio Max のファイルを読み込むことができるようです。こういうローダがないと、結局使えなくなってしまうので、いいですね。とはいうものの、3D は OpenGL を直接扱えるようにした方がいいのではと、今でも思っています。

コントロールの追加では DatePicker クラスが紹介されました。JSR 310 が導入されたので、Date Picker も JSR 310 対応です。

それにしても、ほんと盛りだくさんですね。

CON1861 Enhanced Metadata in Java SE 8

JSR 308 Annotations on Java Types に関するセッション。スピーカは Alex Buckley、Joseph Darcy、Michael Ernst

Alex は JDK の Core チーム、Joe は Project Coin をやっていた人で言語仕様のとりまとめ、Michael はワシントン大学の先生です。

Alex はいつも黒のシャツ。そして、Joe はいつも赤のシャツ。同じ服を何枚も持っているのでしょうか?

Type Annotation は型を修飾するためのアノテーションで、今までアノテーションを書けなかった、ジェネリクスのパラメータなどに対してアノテーションを付加することができます。

これに応じて、リフレクションのクラスやメソッドがかなり手を入れられています。ずらずらと並べられたのですが、そんなに並べるだけだとぜんぜん追いつけないです。後でゆっくり Javadoc みます ^ ^;;;

でも、Type Annotation を活かすには、そのアノテーションを解釈するためのツールが必要になります。たとえば、@NonNull というアノテーションで修飾されている場合、その変数がほんとに null を代入していないかどうかを調べないといけないわけです。

そこで、紹介されたのが Michael Ernst が開発している The Checker Framework です。

The Checker Framework が役に立つのは分かるのですが、本来ならこういうフレームワークを標準化してやらなければ、Type Annotation も使われないと思うんですけどねぇ... どうなんでしょう。


Alex Buckley, CON1861 Enhanced Metadata in Java SE 8, JavaOne 2013 San Francisco

Alex Buckley

Joseph Darcy, CON1861 Enhanced Metadata in Java SE 8, JavaOne 2013 San Francisco

Joseph Darcy

Michael Ernst, CON1861 Enhanced Metadata in Java SE 8, JavaOne 2013 San Francisco

Michael Ernst


CON6064 Introducing the Java Time API in JDK 8

Java SE 8 に導入される JSR 310 Date & Time API のセッション。スピーカは JSR 310 のスペックリードの Stephen Coleboune と、Oracle の Roger Riggs。

Date & Time API は Joda Time をリファインしたものと思われていることが多いのですが、Joda Time を参考にして、スクラッチで作った API です。それにしても、かなり複雑なのは、どうにかならないものでしょうか....

日時を表すクラスだけでも LocalDateTime、ZonedDateTime、OffsetDateTime と 3 種類もあります。これ以外にも Instant や Duration、Period など用途に合わせて多くのクラスが定義されています。

しかも、単純にこういうクラスをずらずらと並べて説明するだけなので、とても分かりにくい説明。去年の JJUG CCC の蓮沼さんの Date & Time API のセッションの方が何倍もわかりやすかったですね。


Stephen Cleboune, CON6064 Introducing the Java Time API in JDK 8, JavaOne 2013 San Francisco

Roger Riggs, CON6064 Introducing the Java Time API in JDK 8, JavaOne 2013 San Francisco

BOF4244 Swing 2 JavaFX

スピーカは Oracle の Anton Tarasov とSteve Northover。

てっきり Swing から JavaFX のマイグレーションのセッションかと思いましたが、そうではなくて SwingNode のセッションでした。

SwingNode クラスは、JavaFX に Swing の部品を貼るための JavaFX のコントロールで、JavaFX 8 から使うことができます。今まで JFXPanel という Swing に JavaFX を貼る部品は提供されていたのですが、逆はなかったのです。

前半は Anton で SwingNode の使い方など。Anton は英語がネイティブではないようで、かなり訥々と喋っていました。

使い方は予想通り。特に難しいことはありません。ただ、Swing と JavaFX のスレッドが異なるので、情報をやりとりする時などは注意が必要です。とはいうものの、JFXPanel クラスの場合もそうだったので、JFXPanel クラスを使ったことがあれば、だいたい分かるはずです。

現状、SwingNode では DnD や IME に対応していないらしいです。

後半は Steve から、Swing と JavaFX のスレッドの統合化に関して。

前述しましたけど、現状では Swing と JavaFX のスレッドが異なっているため、扱いがやっかいでした。これに対して、スレッドを統一して、同じスレッドで Swing も JavaFX も動かすことができるようになるというものです。

しかし、実際にはかなり難しいらしく、JavaFX 8 ではいちおう提供はされるものの、実験的な機能で、デフォルトではオフになっているようです。

ちなみに、当初はこのセッションを聞く気はなくて、裏番組の Richard Bair の Build and Test with OpenJFX を聞く気だったのですが、会場に人がすごい少ない。これはその前のセッションの二の舞になってしまうと危惧して、セッションを移ったわけです。マイグレーションの話ではなかったですけど、それなりにおもしろかったです。

でも、スピーカの 1 人の Anton のプレゼンがダメダメ。座ったまま話すし、かなりボソボソとしたしゃべり方。たぶん、英語がネイティブではないのだと思いますが、それでもダメなものはダメですね。


Steve Northover, BOF4244 Swing 2 JavaFX, JavaOne 2013 San Francisco

Anton Tarasov, BOF4244 Swing 2 JavaFX, JavaOne 2013 San Francisco

おまけ

Duke, JavaOne 2013 San Francisco

今年も Duke は会場をウロウロしてます。Sun の時と違って、ここに現れるという予告がないので、どこにいけば会えるのかいまいちよく分からず。

パビリオンにいることが多いようですが。

さて、その Duke、去年とは性格も運動能力も変わってしまったらしく、今年はいたって静かな Duke でした。去年はまるでフナッシーかとおもうぐらいはしゃいでましたが、それが普通ではなかったということなんでしょう。


Duke, JavaOne 2013 San Francisco

Duke, JavaOne 2013 San Francisco

今年もお昼休みはなし。ランチはセッションの合間の 30 分間で食べなくてはいけません。逆に 2 時から 3 時までは 1 時間の休憩が挟まってます。でも、ランチボックスの配布時間は 2 時まで。なんだかなぁ...

もちろん、ランチボックスは今年もおいしくない。もっと景気がよくなれば、ランチにも予算をかけられるのでしょうか?

ホテルによってランチは異なるのですが、今日の Hilton はベトナムサンドウィッチのバインミーと、チキンラップ、ベジタリアン用のサラダのサンドウィッチの 3 種類。

私はもちろんバインミー。

Twitter を見ていると、@cero_t がパクチーはいってると大騒ぎしています。それはバインミーを選択したのが悪いんだよ。ベトナムなんだからパクチーが入るのは当たり前。


Beef Bánh mì, JavaOne 2013 San Francisco

Beef Bánh mì, JavaOne 2013 San Francisco

Colibrí Mexican Bistro

このエントリーをはてなブックマークに追加
Guacamole, Colibrí Mexican Bistro, San Francisco

ちょっと早めの夕飯というか、遅めのランチでメキシカンの Colibrí Mexican Bistroへ。

ここに来るのは 3, 4 回目だと思うんだけど、味が落ちたような気がする。Guacamole も以前は席の横で作ってくれたのに、今は作り置きのような気がするし... もう来なくてもいいかなぁ....

食べたのは Guacamole と Ensalada Mixta。Ensalada Mixta はミックスサラダですね。ボリュームがあるので、メインにも十分です。

デザートはクレープの Crepas con Cajeta。Cajeta はキャラメルのことです。要するにキャラメルソースのクレープ。クレープがいちばん安定したおいしさだったかも。


Guacamole, Colibrí Mexican Bistro, San Francisco

Ensalada Mixta, Colibrí Mexican Bistro, San Francisco
Crepas con cajeta, Colibrí Mexican Bistro, San Francisco

Colibrí Mexican Bistro

今日のおやつ - Cafe Madeleine

このエントリーをはてなブックマークに追加
Chocolate Chip Cookie, Cafe Madeleine, San Francisco

昨日も Cafe Madeleine でしたけど、今日も。やっぱり夜中までやっているのはいいですね。

今日はクッキー 2 枚。アメリカのクッキーはでかいので、2 枚で十分。日本だと Starbucks で売っているのに近いですね。

味はいたって普通です ^ ^;;

2013/09/22

JavaOne 2013 SF 初日

このエントリーをはてなブックマークに追加
JavaOne 2013 San Francisco

今日から JavaOne が始まります。とはいっても、今日はコミュニティイベントと Keynote だけ。その後は、レセプションです。

ほんとは午前中、Java Champions と JUG Leaders のブランチミーティングがありました。そこで、今年の JavaOne のだいたいの概略を教えてくれます。もちろん、その時点では NDA ですけど。

こんなことははじめてだと思うんですが、その時くじ引きがあって、とあるものが当たりました。日本人の名前は発音しにくいらしく、自分も呼ばれたとは最初気がつかなくてスルーしてしまうところでしたww

何が当たったかは、今日のエントリーの最後のおまけのところに。


JavaOne 2013 San Francisco

JavaOne 2013 San Francisco

JavaOne 2013 San Francisco

JavaOne 2013 San Francisco

JavaOne 2013 San Francisco

JavaOne 2013 San Francisco

さて、今日聴講したのは、以下の 4 つのセッションです。

NetBeans のセッションに出たのは、単に James Gosling が話すからというだけです。テクニカルな話はほとんどなくて、今やっていることを説明しただけですが、JavaFX を使ったツールとかも見せてくれました。

ということで、メインは Keynote です。

James Gosling, UGF10336 NetBeans Power Tools with James and Kirk, User Group Forum, JavaOne 2013 San Francisco

Java の父、James Gosling

Java Strategy Keynote

"How do you feel about Oracle's strategy now?", JavaOne 2013 San Francisco

コミュニティイベントは Moscone West だったので、Keynote の会場である Moscone North へ。

Moscone Cnter で Keynote をやるのは、Oracle が主催になってはじめての JavaOne 2010 以来。

Moscone North は地上が Yerba Buena Park で、地下にあります。で、地下におりていこうとすると、見えたのはすごい行列。もちろん、JavaOne の Keynote の行列です。

それでも、私たちは比較的前の方に並んでいて、最終的には Moscone South まで列が続き、それでも並べなかった人が Moscone South の地上部分にいっぱいいたというのです。

Oracle 主催になった 2010 年には参加者がガクッと減ってしまったのですが、毎年徐々に増加していることが分かります。今年も去年よりも確実に増加していますね。

ところで、Moscone Center には上の写真のボタンがおいてあったのですが、赤い会社だから赤いボタンを押せばいいのかな?


Moscone North, JavaOne 2013 San Francisco

Moscone North, JavaOne 2013 San Francisco

Moscone North, JavaOne 2013 San Francisco

Long Line for Java Strategy and Technical Keynote, JavaOne 2013 San Francisco

それにしても、これだけ話すことがすくない Keynote も珍しいですね ^ ^;;

  • Nandini が IoT を担ぎ出してきた
  • Java SE 8.1 と 8.2 がロードマップから消えているけど、説明はなし
  • Java EE の時間は 40 分中、たったの 10 分しかない
  • Avatar をオープンソース化したけど、いまさら感が強い

ぐらいでしょうか。

Publickey などでは Java SE と Java ME の統合ばかり書かれていますが、全然分かってないですね。

Java SE と Java ME の統合は 2011 年の JavaOne ですでに発表済みです。

JavaOne に限らず、だいたいの Keynote でそうだと思うのですが、興味深いのはスピーカーが言及しなかったことにあるのです。

Nandini は今でこそ副社長ですが、もともと Java ME のエンジニアなわけです。だから、バズワードになりつつある IoT に注目したことは意外ではないです。でも、これだけ大々的に担ぎ出してきたことに意味があると思うわけです。

40 分の Strategy Keynote のうち、半分ぐらいをこの話題で引っ張るというのは Oracle における Nandini の発言力が増したんでしょうね。

でも、IoT を担ぎ出したはいいけど、これでどうやっても儲けるつもりなんですかねぇ。ビジネスモデルの話は全然なかったのですが、パートナーがいれば儲かるというものでもないはずですけどねぇ。確かに JavaOne という場ではビジネスモデルの話はしにくいとは思いますけど...

ただ、Rasberry Pi とか LEGO Mindstorms で Java が動くというのはいいですね。特に若年層の取り込みには、こういうおもしろいガジェットを取り込むというのはありだと思います。後は Arduino で Java だな。

Java Strategy and Technical Keynote, JavaOne 2013 San Francisco

Java Strategy and Technical Keynote, JavaOne 2013 San Francisco

Java Strategy and Technical Keynote, JavaOne 2013 San Francisco

Java Strategy and Technical Keynote, JavaOne 2013 San Francisco

Make the Future Java, Java Strategy and Technical Keynote, JavaOne 2013 San Francisco
Peter Utzschneider, Java Strategy Keynote, JavaOne 2013 San Francisco

Strategy Keynote の MC は Peter Utschneider

Peter Utzschneider, Java Strategy Keynote, JavaOne 2013 San Francisco

Peter Utzschneider, Java Strategy Keynote, JavaOne 2013 San Francisco
Nandini Ramani, Java Strategy Keynote, JavaOne 2013 San Francisco

Nandini Ramani 登場

Nandini Ramani and Peter Utzschneider, Java Strategy Keynote, JavaOne 2013 San Francisco

Nandini Ramani and Peter Utzschneider, Java Strategy Keynote, JavaOne 2013 San Francisco

Nandini Ramani and Peter Utzschneider, Java Strategy Keynote, JavaOne 2013 San Francisco

Andrew Sugaya, Java Strategy Keynote, JavaOne 2013 San Francisco

Java ME 8 のハッカソンで優勝したらしい Andrew Sugaya

Java EE に関しては、なんで Java EE 8 の話が全然ないのだろう、というのが率直な感想。Java EE 7 が出てから半年、開発が終了してテスト過程になったことを加えれば、もっと時間が経っているはず。

それなのに、まったくそのことに触れていないというのは、どういうことなんでしょうね。ロードマップすら示されないというのは、目標を失って迷走しているとしか思えないです。

というか、Java EE 7 も迷走しましたからねぇ。クラウド対応の話は完全に黒歴史になってしまいましたね。

だからといって、Java EE 8 で Java EE 7 でもともと取り入れようとしていたクラウドの機能を取り入れるという話もほとんどないし。あるといえばキャッシュぐらいですけど、キャッシュの JSR 107 JCache はあまりにも古くて... これはなかったことにして、もう一度考えればいいのに。

で、Project Avatar は捨てるということなんでしょうかねぇ....


Cameron Purdy and Peter Utzschneider, Java Strategy Keynote, JavaOne 2013 San Francisco

Java EE は Cameron Purdy

Cameron Purdy and Peter Utzschneider, Java Strategy Keynote, JavaOne 2013 San Francisco
"Open Sourcing Project Avatar", Cameron Purdy and Peter Utzschneider, Java Strategy Keynote, JavaOne 2013 San Francisco

Java Technical Keynote

Mark Reinhold, Java Technical Keynote, JavaOne 2013 San Francisco

Techincal Keynote は Mark Reinhold が全体の MC。今まで Mark は Java SE/JavaFX だけだったんだけど、今年は Java EE も含めることになってしまいました。

というか、Java EE の扱いひどくない?

そんなに話すことないのかなぁ。

Strategy Keynote で取り上げられたトピックは

  • Project Lambda
  • NetBeans 7.4 + Project Easel
  • Demo のチェスのサーバ側の説明
  • DukePad
  • JavaFX 8 3D CG
  • Java ME で動作するチェスをするロボット
  • Java SE 9

いちばん時間をかけていたのは Project Lambda です。Brian Goetz が説明しただけでなく、Richard Bair が JavaFX での Lambda 対応についても話していたし。

Mark Reinhold, Java Technical Keynote, JavaOne 2013 San Francisco

Mark Reinhold, Java Technical Keynote, JavaOne 2013 San Francisco

Brian Goetz and Mark Reinhold, Java Technical Keynote, JavaOne 2013 San Francisco

右が Brian Goetz

Brian Goetz, Java Technical Keynote, JavaOne 2013 San Francisco

Brian Goetz and Mark Reinhold, Java Technical Keynote, JavaOne 2013 San Francisco

Brian Goetz の後は、ずっとチェスのゲームで話が流れていきます。

はじめはクライアントが HTML 5 で書かれていて、それで NetBeans の Easel でデバッグできると John Ceccarelli が話し、Santiago Pericas-Geertsen がJava EE 7 で書かれたサーバについて説明し、DukePad では 3D CG のクライアント、ロボットもチェス、というぐあいです。

DukePad は Rasberry Pi で作られたハンドメイドのタブレット。メディアでまじめにオラクルが発表したというように書かれてしまっていますが、ネタです、ネタ。

去年は Linux/ARM の Panda Board で作られた JavaOne のタイムテーブルを閲覧できるキオスク端末を作ってきましたが、その延長線上ですね。

去年は Rasberry Pi を使って Mark が Jigsaw のデモをやって、落としてしまったのがハイライトでしたが、今年は JavaFX でもサクサク動いてます。

JavaFX 8 の目玉機能の 1 つが 3D CG なのですが、その紹介も兼ねています。

Cube とか Cylinder などのプリミティブなオブジェクトも提供されていますが、やっぱり 3D CG のツールで作られたモデルをインポートするのが主流です。そのための、3D Viewer を紹介して Maya で作られた Duke をインポートしてました。

モデルだけでなく、アニメーションもちゃんとインポートできます。

最後のロボットはおまけかな。

ロボットは展示会場で展示されてました。

Mark Reinhold, Java Technical Keynote, JavaOne 2013 San Francisco

John Ceccarelli and Mark Reinhold, Java Technical Keynote, JavaOne 2013 San Francisco

右が John Ceccarelli

John Ceccarelli and Mark Reinhold, Java Technical Keynote, JavaOne 2013 San Francisco

Project Easel のデモ

Santiago Pericas-Geertsen, Java Technical Keynote, JavaOne 2013 San Francisco

Santiago Pericas-Geertsen

Santiago Pericas-Geertsen and Mark Reinhold, Java Technical Keynote, JavaOne 2013 San Francisco
Duke Pad and Jasper Potts, Java Technical Keynote, JavaOne 2013 San Francisco

Duke Pad を持つ Jasper Potts

Richard Bair, Jasper Potts and Mark Reinhold, Java Technical Keynote, JavaOne 2013 San Francisco

Richard Bair, Jasper Potts and Mark Reinhold, Java Technical Keynote, JavaOne 2013 San Francisco

Richard Bair, Java Technical Keynote, JavaOne 2013 San Francisco

Richard Bair

Richard Bair, Jasper Potts and Mark Reinhold, Java Technical Keynote, JavaOne 2013 San Francisco

いちばん左が Duke Pad の出力

Richard Bair, Jasper Potts and Mark Reinhold, Java Technical Keynote, JavaOne 2013 San Francisco

3D Viewer で Maya のデータをインポート

Mark Reinhold, Java Technical Keynote, JavaOne 2013 San Francisco

チェスのロボット

Mark Reinhold, Java Technical Keynote, JavaOne 2013 San Francisco

Stephen Chin, Java Technical Keynote, JavaOne 2013 San Francisco

最後にちょっとだけ Stephan Chin
Duke Chess Robot

展示会場においてあった Duke のチェスロボット

Duke Chess Robot

Duke Chess Robot
_DSC9785

おまけ

"No notes on this slide", Cameron Purdy and Peter Utzschneider, Java Strategy Keynote, JavaOne 2013 San Francisco

プレゼンテーションでは目の動きが重要なのです。例年 Kenote では舞台下にあるモニターを見がちで、目線が下になっているが、とても気になっていました。

Snn 時代の John Gage とか、Rich Green などはそういう点、上手かったんですけど、Oracle になってからみんなダメ。

ところが、今年は Oracle の人は前を見ている率が高まりました。でも、目線が微妙に上なんですよね。

目線を追っていくと... なんとモニタが天井から吊ってあって、そこに台詞が書いてあったのです。下の写真の左の方に浮いている黒い四角の部分がモニタです。何かと思ったら、そういうことだったんですね。

ところが、Java SE 8 の EA があるよというスライドでは上の写真のようになってました。勝手に喋れと言うことなんでしょうねww

ちなみに、この吊したモニタは Oracle の人だけが使えるらしく、IBM の Keynote では、やっぱり下見てました ><


Peter Utzschneider, Java Strategy Keynote, JavaOne 2013 San Francisco

Java Strategy and Technical Keynote, JavaOne 2013 San Francisco

こんな感じになってます。青く光っているのがモニタ

で、Java Champions のブランチで当たったものです。

当たったのは、Nandini が Keynote で紹介していた gemalto の Cinterion のボード。Nandini は WiFi ボードって言っていたけど、WiFi ボードで Java が動くってどういうことなんだろう?

中には説明書も何も入っていなかったので、どうやって使うのかよく分かりません。ようするに、開けただけで、何もしていないということです ^ ^;;

時間ができたら、いろいろやってみようと思います。

_DSC3937

_DSC3953

_DSC3956
_DSC3964