エンジニア的なネタを毎週書くブログ

東京でWebサービスの開発をしています 【英語版やってみました】http://taichiw-e.hatenablog.com/

Java Day Tokyo 2013 キーノート感想 #jdt2013

Java Day Tokyo 2013  に参加しています。
KeyNote が終わったところで、お昼ごはん食べながらとりあえずまとめ。
興味深い話が諸々あったのですが、特に興味が湧いた部分を抜粋します。

Java SE   by Cameron Purdy

JDK8の、言語面での目玉はなんといってもLambda式で、マルチコアプロセッサで動かせるようになることが目的とのことです。
例えば以下の様な処理の場合、

for (Shape s : shapes) {
  if (s.getColor() == BLUE) {
   s.setColor(RED);
}

処理時間がコレクションの要素数に比例してかかってしまいます。
これを、Lambda式を使った場合、以下のように書けます。

shapes.forEach(s -> {
    if (s.getcolor() == BLUE)
        s.setColor(RED);
});

これだけだと単に書き方を変えただけですが、
この処理はマルチコアプロセッサ上で分散して実行されるとのこと。
各要素に対して判定・setするだけなので、シーケンスに実行する必要がないわけですね。

【疑問】
…って、逆にシーケンシャルに実行しないと結果が変わってしまうような処理はどうなるんだろう。
forEachの中をそこまで解析して行われるとは考えにくいけど、、
要調査。

【追記】
twitterで上記疑問に対して、@watermint さんが教えて下さいました

ということで、parallel()とsequential()というメソッドで、明示的に示せるそう。
ちとググってみるとこんなの発見。

people.parallel()
       .filter(p -> p.getAge() -> 65)
       .map(p -> p.getGroup())
       .removeDuplicates()
       .sorted(comparing(g -> g.getSize())
       .sequential()
       .forEach(g -> System.out.println(g -> getName());

http://www.oracle.com/webfolder/technetwork/jp/javamagazine/Java-SO12-QandA-Goetz.pdf

ふ、、、ふぁっ!?

この例は極端なんでしょうが、Javaの書き方はかなり大きく変わりそうです。
(で、あまりわかっていないくせに午後のセッションはlambda式の方じゃなくて、#idewarsに行ったという。
まぁ、Java 8の話はおいおい別の場所でも聞けそうなので。)

 

JavaFX   by Nandini Ramani

今日はじめて知った不勉強君なのですが、swingに代わる新しいGUIライブラリなのですね。
基本的に自分にはあまり縁がないしなぁ、、と思っていたら、これに実装されている3D機能がなかなかすごい!

デモがあったのですが、
・5行程度の短いコードで赤い立方体と青い球を描く
メルカトル図法のように、緯度経度が直行している地図を球体に貼る
 (きちんと北極・南極で経線が交わって地球になる)
・複数の光源を空間内に設置可能。
 光源は色や座標を時間とともに変化させることが可能。異なる色の光源を使った場合はちゃんと色が混ざる。
などなど、シンプルな記法で結構本格的な3Dを表現していました。

むかしむかし、OpenGLC++で同じようなものを書いた経験があるのですが、
アレと同じくらいのことができててすごいなぁと。


ここからJDKがダウンロード出来るそうです。
プレゼンターのJimの「イツヤルカ いまでしょ! (^-^)」という、よく拾ってくるなーと感心させられる時事ネタででも終了。
ちょっと時間見つけて遊んでみたいです。

英語

ちょっと調子こいて、キーノートは同時通訳なしで全部聴いてみました。
すごいなーと思ったのが、プレゼンターはみんな、英語がスゲー聞き取りやすい!

ゆっくり目に喋ってくれているし、おそらく単語もかなり選んでくれていて、
あらかたの内容を理解することができました。

英語でのプレゼンの時はああいう発表を目指さないといけないですね。
そして、おそらくは相当練習したり、場数を踏まないと、ああいう英語プレゼンは出来ないんだろうなぁ。