読者です 読者をやめる 読者になる 読者になる

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

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

Java Day Tokyo 2016 参加レポート1 今後のJavaの動向、特にJava9について #javadaytokyo

Java JavaDayTokyo2016

3年ぶりにJavaDayTokyoに参加しました。

今回の自分のテーマは2つ
・今後のJavaの動向、特にJava9について
・マイクロサービスの実践例と、支援するようなJavaアーキテクチャについて


前者については、Java8導入直前にSan FranciscoでのJavaOneに参加させてもらった時に感じた、以下の気付きによります。
「いざ導入となった時にその素晴らしさを理解し、メンバー全員で使い始めるには、ある程度の事前知識を、自分はもちろん、メンバー皆が持っていることで、導入のハードルを下げることができるだろう」
http://taichiw.hatenablog.com/entry/2013/10/01/065607

(とは言え、いろんな外的要因があって、実際に自分のチームでJava8を使いはじめるまで2年はかかりましたが…)


後者については、今まさに日々、サービスの切り方やら作り方やらについて悩んでいるところなので、なにかヒントがあればなーという思いでした。


この記事では前者、「今後のJavaの動向、特にJava9について」に関わるところをご紹介したいと思います。

Cloud

Keynote および 「1-A Java SE 9 Overview」を聞いて、「クラウド」を非常に意識していると感じました。


Java9、及び今後Javaが注力することとして挙げられていたことの多くが、クラウドでの利用へ繋がっているようでした。
・セキュリティ
 → クラウド上で動かすならセキュリティが重要である
 Java9での実装としては、モジュール化による隠蔽があたる。PublicがPublic過ぎる問題を解決。
 
・Density(密度)
 必要なもののみを含むアプリケーションの動作。
 → メモリフットプリントを削減。クラウド上では数%の効率化が、何万ドルものコスト削減に繋がる。
 Java9での実装は同じくProject Jigsaw関連。Javaのランタイムコアrt.jarが小さなモジュールに解体され、必要な物だけ使用してアプリを作ることができるようになった。
 また、jlink(http://openjdk.java.net/jeps/282)により、Custmoized JREを作成可能。実行に必要な機能だけ揃えた、小さなJREを作ることができる。
 
・Start upの速度
 クラウドにおいて、プロビジョニングが高速になったのでJVMの起動がボトルネックになっている。
 コンテナが数ミリ秒で作られるのに、JVMの起動に数百ミリ秒かかってしまっている。

などなど。

Project Jigsaw Module

Java9の目玉であるModuleについては、「A-2 Project Jigsawではじめるモジュール開発」で櫻庭さんが丁寧に背景、作り方、使い方を説明してくださいました。

実は、昨日の夜、「予習しとかんと明日絶対ヤバイ!」と思ってProject Jigsawでググッて出てきた記事が、まさに今櫻庭さんがItproに連載されているもので
http://itpro.nikkeibp.co.jp/atcl/column/15/120700278/040500010/?ST=upper
http://itpro.nikkeibp.co.jp/atcl/column/15/120700278/042000011/?ST=upper
http://itpro.nikkeibp.co.jp/atcl/column/15/120700278/050900012/?ST=upper
セッションの内容はかなり「これゼミに出てたところだ!」的でしたw


モジュールごとに内部APIを隠蔽できる考え方はとても良いのですが、
・そもそもマイクロサービス化が進んでいるので、1アプリケーションに含まれるクラスは減りつつある
・一方、周りを見れば(自分も含めて)残念ながら今のクラスやメソッドのpublic/privateすらちゃんと考えられてるのか怪しい
背景を考えると、これそこまでちゃんと使われるのかなぁ… と思ったり。

一部、Mavenのようなパッケージ管理ツールの代わりの機能になりそうですが、完全に置き換えられるものでもないですし…。

正直なところ

Java8のLambdaがパラダイムシフトすぎたので比較すると、ではありますが、
言語仕様的には「是非Java9を使いたい」、とはまだ思えてないのが正直なところでした。

パフォーマンス面を中心に攻めているようなので、こちらの効果に期待ですが、あまり現在のプロダクトでは困ってるところではないんですよね。

 

自分の理解が追いついていないところも激しくあると思うので、今日をきっかけに今後も情報をキャッチアップしていきます。

 

いずれにしても(一夜漬けとはいえ)予習して、最新の話が聞けて、とても良い日でした。