JJUG ナイトセミナー 「Java SE 10 / JDK10リリース特集」に行ってきた
花粉症つらい・・・
お知らせ
JavaDayTokyo2018
5/17(木)に決定。
キーノートはMark Reinhold(初来日?)
登録サイトは近日オープン(多分、今週後半くらいとのこと)
JJUG CCC 2018 CfP募集中
JDKリリースモデル変更について(おさらい) by 伊藤 敬さん(Oracle)
Java 10はおそらく初めて予定通りリリースされたJava。
リリースノートには削除予定のAPIも記載されているので確認しておくこと。
JDK10の追加機能解説 - JEP286/ローカル変数の型省略(var記法)を中心に
ローカル変数の型推論
冗長な変数の型の宣言をvarに置き換えられる。
動的言語になるわけじゃない。
メソッドの引数・戻り値には使えない。
また、匿名クラスにも使えない。
varは予約語ではないキーワード。
そのかわり、クラスやインターフェースでは使えなくなった。
(非互換だけど、流石に使ってる人いないよね・・・)
変数やフィールド、メソッドでは使えるからこれはOK。(絶対やるなよ的な・・・)
var var = var();
varの使いどころは、読みやすさが向上する箇所。
Javaの書きやすさより読みやすさを重視している文化は破っちゃダメ。
型をタイプするのが面倒とかそんな理由で使ってはダメ。
IDEがなくても理解できる状態で使うべき。
マウスポインタを上に乗っければわかるはNG。
varのガイドラインも出ている。
GCの変更
G1のパラレルFullGCが追加された。
でも、G1GCを使っている時にFull GCを起こした時点で負けなので、恩恵を受けないような運用が理想。
Garbage-Collector Interfaceの追加で、GCをモジュールとして追加削除できるようになる。
ZGC
https://wiki.openjdk.java.net/display/zgc/Main
4TB(!)までのヒープに対応。
ヒープサイズに関わりなく、Stop The Worldを10ms以下に抑えるのがゴール。
Java 10でぼくたちの生活は どうかわるの?
今まではすぐにでも欲しい便利な機能でも、追加されるのが3年後だった。
それが比較的すぐに手に入る。
でも、アップデートに追従するコストが大変。
新しいバージョンへの対応方法
新しいバージョンの変更箇所は、以下の
- JEPから新機能
- 最新のJRSからAPIの変更点
- リリースノートから非互換
STSで非推奨化・削除と続くと、LTSから次のLTSにいきなり移った時に、サイレント削除が発生する可能性がある
Class-Data Sharing
元々はコマーシャル機能。
クラスデータを複数のプロセスで共有する。
バッチとかのプロセスをたくさん起動するアプリで利用できる
読み込むクラスの量が多いほど効果的