Java Day Tokyo 2016 に行ってきました

毎年恒例?の Java Day Tokyo 2016 に行ってきました。午前のセッションは会場に行くほどではないかなーと思ったので、午前は会社で仕事しつつ Ustream で午前のセッションの中継を見て、午後から現地で各セッションを見てきました。

[1-A] Java SE 9 Overview

スピーカーは Bernard Traversat 氏。英語セッションです。英語のリスニングは不得意なんですが、今回わざと同時通訳無しで聞いてみようとトライしてみましたが、見事撃沈しました。所々聞き取れる英単語とスライドの内容からなんとか理解を進めてました。

個人的に、"Linking" という開発フェーズが追加されたという内容が気になり、そのフェーズで使用する jlink コマンドが用意されたという話をしていたのですが、スライド上は具体的な話をしていなかったのでどういうものかはわからず。

他、Data Layout の話で、value というキーワードが出てきて気になりました。例えば

final class Point {
    final int x;
    final int y;
}

Point[] pts = ...;

というコードで、配列 pts は Point クラスのインスタンスの配列として、要素はそれぞれひとつのデータとしてメモリ上に存在するという話だったのが、

value class Point {
    final int x;
    final int y;
}

Point[] pts = ...;

と宣言することで、メモリ上は変数 x と y がずらっと並ぶ構造になるという話が面白かったです。

[2-A] Project Jigsaw ではじめるモジュール開発

スピーカーはさくらば (@skrb) さん。なんだかんだで Java Day Tokyo に来ると毎回さくらばさんのセッション見てます。

Project Jigsaw で解決する問題点と、歴史についての話が冒頭で行われました。Project Jigsaw までの道のりってこんなに長かったんですね・・・。

あと、前のセッションでよくわからなかった jlink の具体的な話をされていて、目的のアプリケーションを実行するための最低限のモジュールを含んだ、最小構成の JRE を作るということでした。これはかなりびっくりしました。このまままるっと tar とかでアーカイブしちゃえば、目的のホスト上で JVM の面倒なインストール作業とかもいらなくなりますしね。あとは最小構成なので、メモリ消費も最低限と。

[3-C] Java Concurrency, A(nother) Peek Under the Hood

スピーカーは David Buck 氏。毎回 JVM の深い話をしてくれるので大ファンです。Java Day Tokyo 2014 から氏のセッション毎回見てます。今回も例に漏れず。

並列処理プログラミングの話でしたが、JIT コンパイラが生成したコードをディスアセンブル HSDIS が出てきて個人的に激震が走りました。こんなことできるんですね、今の Java。C1 コンパイラと C2 コンパイラで生成するコードが違って、デッドロックが発生する / しないパターンの話とか興奮してました。

書籍「Java 並行処理プログラミング」の紹介もされていましたが、もちろん私も持っているので、再度読み直そうと思いました。まる。

[4-A] Java 9 で進化する診断ツール

スピーカーは末永氏。OpenJDK コミッタで、HeapStats の開発者でもあります。JDK 9 から解析ツールは jcmd と jhsdb コマンドで十分だよというお話をされていました。というか、JDK 8 の時点で jstack やら jmap は既に非推奨で、jcmd 経由で叩くことすら知りませんでした。

jhsdb を使えばハングした Java プロセスの解析もできるという話や、core 吐いて死んだプロセスの解析に HSDB というツールが使えるという話もありました。今後の仕事に活かせそうです。

まとめ

開発ではなくサポートのお仕事をしているので、どちらかというとトラブルシューティングに活かせそうな話を中心に聞いて回ってたので、こんなラインナップでした。このあともセッションはあるんですが、まだ下の子が小さいので早々に引き上げました。ナイトセッションまで参加するのは、下の子がもう少し大きくなってからですかね。

というわけで、来年もあればまた行きます。