そこに仁義はあるのか(仮)

略してそこ仁!

Java Day Tokyo 2018 の参加レポと、Night Sessionで司会をしました! #JavaDayTokyo

遅くなってしまいましたが、個人的な観点からのJava Day Tokyoの参加レポートです。

www.oracle.co.jp

💬 全体を通しての感想

基調講演は参加出来ず、午後からの参加でした…!

Night SessionでAsk the speakersという企画の司会をやることになっていたので、なるべく登壇者のセッションを聞きにいくようにしていた結果、海外からの登壇者ばかりのセッションばかり参加していました…!
でも、翻訳イヤホンがもらえるので問題なし!

私が受けたセッションがそうだったのかもしれませんが、ジャバジャバ(Java Java)した話というよりは、
コンテナやサーバレスなど、これからのプラットフォームに対してJavaで作るシステムを適用していくための話、というのが多かった印象でした。

あとは、私は聞いていないセッションでしたが、JDKのリリースモデルの変更に関するセッションは会場から人が溢れるほど聴講者が居て、やはり関心が高いんだなぁ、と感じました。

📖 全ての資料はこちらで公開されています

Java Day Tokyo 2018


以下、セッションのメモや感想です。
慣れない英語セッションの参加だったので、解釈間違ってるところもあるかもですが・・・。

🎤 Java in a World of Container

発表者:Mikael Vidstedt(@MikaelVidstedt)さん | Twitter

資料はこちら

Javaのアプリケーションをコンテナ上で動かしたい。
でもJavaのDockerイメージは大きすぎる。
いろんなモノを最適化してImageサイズを小さくしていこう!という話

お話されていたことで、結構衝撃だったのは、
「コンテナのサイズを小さくすることで、StartUp時間が20% 〜 30%ほど改善されているし、
 Memory footprintのも10%ほど削減された。
 メモリはコストが一番かかるものなので、ビジネスに大きく影響する。」
という話でした。

f:id:syobochim:20180530143219p:plain:w400
※PCは画像クリックで大きくなります

JREを最適化しよう!

必要最低限のJREモジュールのみパッケージングしてサイズを小さくしよう。
JDK9からのモジュールシステムのおかげで、JREのカスタマイズが出来る!

f:id:syobochim:20180530141055p:plain:w400

f:id:syobochim:20180530141118p:plain:w400

✊ Docker Imageを最適化しよう!

Docker ImageはJREとベースイメージでサイズが大きくなっていくので、JREとベースイメージを小さくしていこう!

f:id:syobochim:20180530142523p:plain:w400

JREの最適化だけで、568MBが46MBまでサイズを小さくすることが出来る。

f:id:syobochim:20180530141704p:plain:w400

さらになんと、Project "Portola"で、Alpine Linuxのベースイメージを提供していて、それがなんとサイズが4MBになる?!

f:id:syobochim:20180530142746p:plain:w400

他にも、共通的なクラスをコンテナ間をまたがって共有できる機能Class Data Sharing(CDS)などがあると紹介されていました。

🎤 Project Valhalla

発表者:David Buck (@DavidBuckJP) | Twitter

資料はこちら

Valhallaの名前が、「value types」と似ているから、という衝撃的な話。

メモリから情報を取り出す速度よりもCPUの処理速度の方が早い。
オブジェクトは(プリミティブ型とは異なり)参照を利用する。
参照を利用すると、上記のCPUとメモリの速度の差によって、オブジェクトの参照・格納・利用の際に、キャッシュのミスが発生することがある。(?!)
それを回避するためにValue typeを活用しよう!という話でした。

✊ データをどのように保持したいか

上で書いた問題から、本来であれば、x 、y のプロパティを持ったデータを下の図(隠れてしまっているけれど)のように持ちたい。

f:id:syobochim:20180601110801p:plain:w400

しかし、実際、オブジェクトは参照されてしまうので、以下のようにデータを持つことになってしまう。

f:id:syobochim:20180601102746p:plain:w400

Value Typeを利用すれば、
プリミティブと同じように参照を使わずに直接メモリにデータを格納できる。かつ、使い勝手は普通のクラスと同じように使うことができる。

普通のクラスと同じように(メソッドを使えて、インターフェースも使える、実装を隠せる(カプセル化)、ジェネリクスも使える)

🎤 Java in Serverless Land

発表者:Real Matthew Gilliard (@MaximumGilliard) | Twitter

資料はこちら

個人的には、この話が一番すき。
最近、サーバレスに興味がありすぎる。

Javaは、サーバレスと相性がいいのか? -> yes!!
というお話と、Fn Projectの紹介をされていました。

✊ Functionってなに?

  • 短命で
  • イベントドリブンで
  • ステートレス

Javaはサーバレスと相性がいい

Fn projectJavaを利用したサーバレスなシステムに最適、という話。

  • プレーンな状態のJavaを利用することが出来る
  • オープンソースと強く結びついている
  • めちゃくちゃ多くのツールやライブラリが利用出来る
    • Jenkinsなどなどから実行可能。
  • 複雑なモデルに対応するアプリケーションに適用することが出来る
  • JVMを効果的に利用することが出来る
    • JVMは柔軟で、色々なコンフィグレーションで活用可能
    • 多くのエンジニアがJVMのチューニングを理解している

書きたいことありすぎるので、別の記事にまとめることにします。

🎤 Night Session

Night Sessionでは、Ask the experts!!という企画をやりました!
私は@さんと一緒に司会をしました!@さん、本当にありがとう…!><

司会というポジションだったので、すごくためになるお話がたくさんあったのにメモが取れず、、、、
録音すればよかったと、めちゃくちゃ後悔しました。。。。

✊ イベントの概要について

「Ask the experts」は、技術のエキスパートたちに対して、自分がその技術で疑問に思っていることを何でも質問が出来るイベントです!

今回のイベントでは、

というざっくりとしたテーマで質問を募集しました。

始まる前は、本当に質問がくるのか不安だったのですが、結果的に時間が足りなくなるほど質問が来て、本当によかったです!
イベントにご参加いただいたみなさま、質問していただいたみなさま、ありがとうございました!!

✊ エキスパートのみなさま

質問に答えていただいたエキスパートは、こちらの方々です!
日本の文化を考慮した内容についても、回答いただきたかったので、 @さん、 @さんにもご協力をいただきました!
みなさま、本当にありがとうございました!

f:id:syobochim:20180601130946p:plain

✌️ 印象に残った話

クラウドのプラットフォームに機能が充実してきているなか、Java EEなどのフレームワークはどういう方向に進んでいくのか
というような質問がでました。
私も、今回のJava Day Tokyoでは「プラットフォームとJavaをどう組み合わせていくか」というお話が多い気がしていたので、確かに、、、という感じでした。

それに対しての回答が
セキュリティやパフォーマンスなど、様々な観点でプラットフォームに任せられるようになっていく。
開発者はビジネスロジックに集中出来るようになる。
という答えでした。
なるほど・・・。サーバレスなんて、その最たる例ですよね…!


スタッフのみなさま、本当にお疲れ様でした!!
また、こんな機会を与えてもらってありがとうございました!!