JavaOne は昨日から始まっていますが、カンファレンスセッションと BOF は今日から。
去年からトピックごとに会場が決まっていて、Java SE 関連は Hilton、Java EE は Parc 55、Java ME は Nikko という振り分けです。
あいかわらず、Java SE 関連のセッションしか聞かない櫻庭なので、ずっと Hilton にいます。この Hilton がほんとに迷路なんです。何年たっても、場所がよく覚えられません ><
そういえば、去年まで普通のセッションってテクニカルセッションという名前だったと思うのですが、今年からカンファレンスセッションになってました。
さて、今日聴講したセッションです。
- CON7859 The Road to Lambda
- CON5767 What's New in JavaFX 8
- CON1861 Enhanced Metadata in Java SE 8
- CON6064 Introducing the Java Time API in JDK 8
- CON5497 Garbage-First Collector: Current and Future Adaptability and Ergonomics -- Manual Tuning
- BOF4424 Porting OpenJFX to New Devices
- BOF4244 Swing 2 JavaFX
- BOF4471 JVM Performance
- おまけ
今日のチョイスの失敗は Porting OpenJFX to New Devices と JVM Performance でした。
Porting OpenJFX は参加者数人。いちおう資料もあったのですが、資料がおざなり。ほとんど前の方に座っている人たちと議論してました。こちらは移植について全然知識がないので、純粋に興味本位でいったのですが、まったくついて行けなかったです。
もう 1 つの JVM Performance は Q&A セッションでした。英語が得意でない櫻庭にとっては鬼門のセッション。ほんと分からないんですよね。英語勉強しないとと、毎年思うのですが....
また、G1GC のセッションも難しかった。こちらは技術的に難しくて.... これはもう一度資料を見直して、書けるようであれば、書くことにします。
CON7859 The Road to Lambda
もちろん、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
スピーカは 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 | Joseph Darcy |
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 のセッションの方が何倍もわかりやすかったですね。
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 のプレゼンがダメダメ。座ったまま話すし、かなりボソボソとしたしゃべり方。たぶん、英語がネイティブではないのだと思いますが、それでもダメなものはダメですね。
おまけ
今年も Duke は会場をウロウロしてます。Sun の時と違って、ここに現れるという予告がないので、どこにいけば会えるのかいまいちよく分からず。
パビリオンにいることが多いようですが。
さて、その Duke、去年とは性格も運動能力も変わってしまったらしく、今年はいたって静かな Duke でした。去年はまるでフナッシーかとおもうぐらいはしゃいでましたが、それが普通ではなかったということなんでしょう。
今年もお昼休みはなし。ランチはセッションの合間の 30 分間で食べなくてはいけません。逆に 2 時から 3 時までは 1 時間の休憩が挟まってます。でも、ランチボックスの配布時間は 2 時まで。なんだかなぁ...
もちろん、ランチボックスは今年もおいしくない。もっと景気がよくなれば、ランチにも予算をかけられるのでしょうか?
ホテルによってランチは異なるのですが、今日の Hilton はベトナムサンドウィッチのバインミーと、チキンラップ、ベジタリアン用のサラダのサンドウィッチの 3 種類。
私はもちろんバインミー。
Twitter を見ていると、@cero_t がパクチーはいってると大騒ぎしています。それはバインミーを選択したのが悪いんだよ。ベトナムなんだからパクチーが入るのは当たり前。
0 件のコメント:
コメントを投稿