2016/09/22

JavaOne 2016 Day 5

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

やっとというか、あっという間というか、今日が最終日です。

今日はあさイチで Community Keynote。昨日の Appreciation Event の次の日のあさイチはつらい ><

ということで、今日聴講したセッション。

  • Java Community Keynote
  • Troubleshooting the Java HotSpot VM [CON1640]
  • Vectors for Java [CON1560]

通常、最終日の午後はまったりムードで、リピートセッションなどが多いのです。金曜の午後には帰ってしまう人も多いし。でも、今年はなぜか Panama のセッション。これは出ないわけにはいかないです。

でも、その前の Troubleshooting のセッションはイマイチ。話題を盛り込みすぎて、1 つ 1 つが浅くなってしまってました。もったいない。

Java Community Keynote

キーノートは後で写真を加えて、更新する予定です。

キーノートは去年と同じく、前半が IBM で、後半が Community Keynote です。

IBM は 3 年連続 John Duimovich。まぁ、普通のキーノートです。

初日のキーノートで Oracle JDK を Docker に対応させることが発表されましたけど、IBM も IBM SDK for Java を Docker 対応させるのだそうです。また、J9 をオープンソースにするという発表は、Eclipse OMR についても言及してます。

最後に Devoxx の人たちを迎えてデモ。Nao にしゃべらせてみたり、同じエンジンを使ってスマホからアクセスするものです。

さて、Community Keynote です。

Community Keynote は去年と同じ寸劇。Starwars の超劣化版パロディ。JUG のメンバや Java Champion たちが出演しているのですが、なんだかなぁ。みんなこれおもしろいと思っているのかなぁ。やっている人たちはおもしろそうですけど。

James Gosling が悪役なのですが、まったくセリフ覚えていないで、台本見てしゃべっていたりするのは、まぁご愛敬。

今年は日本オラクルの伊藤さんと、HeapStats の久保田さん (@sugarlife) さんも出演してました。HeapStats も一緒に出演 (?) してました。

とはいえ、技術的な要素はなにもないし、ほんとうちわノリなんですよね。来年はどうにかしてほしいなぁ....

Vectors for Java [CON1560]

さて、今年の最後のセッションです。スピーカーは Oracle の Paul Sandoz と Intel の Ian Graves。資料はこちら

火曜日にも Panama のセッションがありましたが、あちらは JFFI に関して。このセッションは Panama のもう一方の Vector API について。java.util.Vector の話じゃないよとお約束のつっこみw

そのあと、Safe Harbor が提示されたのですが、Oracle の Safe Harbor に比べて、Intel の Safe Harbor が長い! Safe Horbor もネタとしてしか扱われないというのは ^ ^;;

さて、本題に入って、パラレル処理です。Hadoop のように複数マシンでパラレル処理はもちろん、CPU 単体でもマルチコアでパラレルになっています。

このセッションでは後者の単体の CPU での話。

CPU では Single Instruction, Multiple Data (SIMD) や SPARC で扱っている Data Analytics Accelarator (DAX) などがあります。その他にも GPU や FPGA があるのはご存知の通り。このセッションでは SIMD と Java について。

GPGPU に関しては Project Sumatra があったのですが、最近進捗がないようなんですよね。

HotSpot ではすでに Intel の AVX インストラクションは扱っていて、C2 コンパイラで SIMD のコードに最適化しているようです。配列のコピーなどに使用していると。でも、まだまだ限定的です。

そこで、Java でも低レベルでデータを扱えるようにしようというのが発端。これには 2 つのプロジェクトが関わっており、ハードに近いのが Project Panama、Java に近い方が Project Valhalla です。

たとえば 128bit を扱う Long2 とか、256bit を扱う Long4、さらに Long8 などを新たに導入するわけですが、だからといってそれをそのまま扱うにはなかなか難しい点があります。

そこで、使うのが Value Type と MethodHandle です。MethodHandle はもともと invokeDynamic のために作られた API ですけど、indy ほんといろいろ使われてるww こんなに使われるとは導入当時は思いもつかなかったろうなぁ。

さらに多ビットを表すために Vector API を導入します。多ビット演算や map なども定義されていて、それをパラレルに処理していくわけです。

なんかすごいおもしろい。こういうのが出てくるとワクワクしますねw

ということで、今年の JavaOne はこれでおしまい。

0 件のコメント: