先日、JJUGナイトセミナー「JDK 11リリース記念:今知っておくべきJDK 11の重要ポイント」に行ってきました。簡単に所感をまとめます。
メモから抜粋。(詳しくは資料をご参照ください)
Java Is Still Free
Java Is Still Free の翻訳がついに来た。ありがたい。
JDK 11 リリースなので改めて「新しい JDK リリースモデル解説 (サマリー&アップデート)」
www.slideshare.net
- Oracle OpenJDK
- Oracle JDK
- OTNLAが6ヶ月で切れるかどうかは未定 (LTSと同期間になる可能性はある)
- JMCは個別にダウンロードできるようになる
- Subscription
Java 11 : サポートとVM機能編
www.slideshare.net
サポート
- 開発サポート
- OpenJDK コミュニティ
- 配信サポート
- OpenJDK コミュニティは配信はしていない
- 問い合わせサポート
- AdoptOpenJDK
- 配信サポート期間が一番長い(4年)
- OpenJDK の開発サポートは現時点では3年間
- 今後より長くなる可能性もある
- Oracle JDK から OpenJDK のマイグレーション
- 証明書周りがネックになるかも (配信元による)
- だいたいはライセンスの問題
- AdoptOpenJDK のリリースが遅れているかのは大丈夫か
- JRE
- コンテナなどで、バイナリサイズを削減したいなら jlink を使う
- モジュール化が進むとより効果がありそう
- 特に理由がなければ OpenJDK の開発サイクルが短いバージョンは無視してOK
- 多くの場合、必要なのは配信サポート
VM機能
- JEP 330
- JEP 328 (Flight Recorder)
- JEP 318 (Epsilon)
- No-Op GC
- 主に開発や研究用途を想定
- JEP 333 (ZGC)
Java 11 : APIの変更点編
- JEP 181 (Nest-Based Access Control)
- Nestmates
- 第5のアクセス制御 (インナークラス間の private メンバ参照)
- NestHost, NestMembers
- JEP 309 (Constant Dynamic, condy)
- Constant Dynamic が Constant Pool に入る
- static final フィールドではなく、class-file 上の定数
- JEP 320
- JEP 321 (HTTP Client)
- モダンな API, HTTP2, Reactive
- 非同期呼び出しの場合は Flow が返る
- JEP 323
- ローカル変数の型推論が Lambda で使えるように
trim
は全角空白は取れないが、strip
は全角空白が取れるCollection#toArray
がIntFunction
を取るようにList.of("aaa").toArray(String[]::new)
(要素数を指定せずにメソッド参照で書ける)
Predicate.not
- 今までメソッド参照が使えなかったところが使えるように (
String::inEmpty
とか)
- 今までメソッド参照が使えなかったところが使えるように (
- 新元号対応 (Japanese Era)
- "JapaneseEra.HEISEI 31/5/1" 以降を指定するとエラーになる
+=
のバグ- TimSort
JDK12
- JEP 326 (Raw String Literals)
- バッククォートで囲む
- 変数の埋込は今のところない
- JEP 325: Switch Expressions
さり気なく JShell のバージョンが JDK 12 っていうのがなんとも。