##Java 10以降の知識の整理に
2020/3/13「新世代Javaプログラミングガイド」という本が発売されました
この本は4部で構成されていて
- 第1部 Java 10
- 第2部 Java 11
- 第3部 Java 12
- 第4部 Java 言語拡張 プロジェクト「Amber」
となっています。
先日Java 14がリリースされたばかりなので最新のJavaのバージョンまで対応していなさそうですが、訳者がJava 13やJava 14についての追記や訳注をつけておりJava10からの変更点や新機能などについてわかりやすく整理されておりJavaに関わる仕事をしている人にはぜひ読んでほしい本だと感じました。
今回は上記4部のうちの「第1部 Java 10」の部分について感想などを述べたいと思います。
(内容についてはあまり深く解説いたしませんので、興味を持たれたら本を読むことをお勧めいたします)
##Java10 での変更点
Java 10については以下の4つについて書かれています。
- ローカル変数の型推論
- AppCDS アプリケーション・クラスデータ共有
- ガベージコレクタの最適化
- その他の改良点
###ローカル変数の型推論
Javaで変数の型宣言で var が使えるようになったことはわりと多くのJavaユーザが知っている思いまが、書籍ではどのような場合にvarが使えるのか、どのような場合は使えないのかについて詳しく書かれています。
また、コードチェックという簡単なクイズ形式の確認問題がついています。自分の理解度を確かめるのに役立つと思います。
ただ、時々ひっかけというか直接本題とは関係ない問題もでたりしますが、その場合は解説に「この問題は、〇〇とは直接関係ありません」などのように補足されています。
そして最後にvarを使うことで(型を明示的に記述しないために)変数名のつけ方がより重要になるという意見にまで言及されています。
###AppCDS アプリケーション・クラスデータ共有
アプリケーション・クラスデータ共有はJavaアプリの起動パフォーマンの向上やメモリ使用量の削減などに役立つ便利な機能ですが、日本語でのまとまった情報が少ないと思います。
書籍では実際にコマンドを実行してアプリケーション共有アーカイブファイルを作成するサンプルがあり実際に試してみることができます。
###ガベージコレクタの最適化
Java 9でデフォルトとなったG1 GCについて簡単に解説した上で、Java 9までは単一スレッドを使って実行されていたフルGCがJava 10では並列フルGCが提供されたことについて書かれています。
また、G1 GCのログの読み方なども解説されており内部の動作について理解が深まるでしょう
###その他の改良点
その他の改良点では以下の項目について説明されています
- JDKのソースを単一リポジトリへ統合
- スレッドローカル・ハンドシェイク
- ネイティブヘッダー生成ツールの削除
- 追加のUnicode言語タグ拡張
- 代替メモリデバイスでのヒープ割り当て
- Javaで書かれた実験的なJITコンパイラ
- ルート証明書
- 時間に基づくリリースのバージョン付け
開発者が直接使えない機能が多く、どの項目も簡単に触れられているだけですがGraalの話が出たり(もうご存じの方も多いと思いますが)Javaのバージョン付けについて解説されています。
以上、新世代Javaプログラミングガイドの紹介(Java 10編)でした。