Java for All！みんなのJavaを読みました #minjava

みんなのJavaを読みました！

<a target="_blank"  href="https://www.amazon.co.jp/gp/product/B085H7BKGY/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=B085H7BKGY&linkCode=as2&tag=kozake0a-22&linkId=9ca87bece105b8124559006bc64c49db"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=B085H7BKGY&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL250_&tag=kozake0a-22" ></a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=kozake0a-22&l=am2&o=9&a=B085H7BKGY" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
著者のJVMに（詳しく）なりたい人（[@jyukutyo](https://twitter.com/jyukutyo)）から献本頂きました。
ありがとうございます！
ちょうど読みたかった本なので、とても嬉しかったです。

## どんな本？

Javaの今を知る本です。Java 5で導入されたジェネリック、Java 8で導入されたラムダと、ここまでJavaの技術動向に追随してきた方でも、Java 9以降の変化の速さについていけてないエンジニアも多いかと思います。
Java 9のリリース後から、半年に一度、3月、9月にメジャーバージョンを上げる方針になりました。
これに伴い、進化の遅れからくるレガシー感を払しょくし、Javaは正常な進化を再び歩み始めました。
昔のJavaで知識が止まっている方は、この本を読むことで、驚くべきJavaの進化と可能性を発見できるかと思います。

## どれくらいで読める？

各分野に詳しい著名人が、それぞれの得意分野について記述しています。
僕は本を読むのが遅いほうですが、集中すれば、1章あたり2時間もあれば読めるくらいのボリュームでした。6章あるので、読むのが速い方なら1日で読めそうですね。

各章を読み、気になる技術はそこから深追いできる構成になっています。
これらの内容をネットで集めようとすると大変です。それがコンパクトに纏まっており、非常に効率よく知識を仕入れることが出来ました。

## どんな人にお勧めか？

次のような方にお勧め出来るかと思います。

- 最近のJava動向を知りたい方
- どのJDKディストリビューションを選択するか迷っている方
- サーバレスやマイクロサービスに興味のある方
- 新しい技術に興味のある方

一方で、これからJavaを勉強しようという方向きではないので、ご注意ください。

## 各章の感想
#### 第1章 進化するJava！Java9から14までのJavaの変化を紹介

Java9から14までの言語仕様や標準ライブラリの変化について紹介されています。
僕のお気に入りの技術変化は次のとおりです。

- ローカル変数型推論
- インタフェースでのprivateメソッド
- Switch式
- シールド型
- パターンマッチング
- 新しいHTTP Client

他にも沢山の技術変化が紹介されています。今後期待するのは、Project Loomで開発が進められている軽量スレッドです。

長年Javaを用いて開発してる僕でも、Java9以降の変化の速さにはびっくりです。
「はじめに」に書いてる、

『Javaはみんなで作るものになりました。』

がまさしくと思える出だしの章でした。

#### 第2章 これでもう迷わない！？JDKディストリビューション徹底解説

Oracle JDK/JREのライセンス変更の発表で、一時「Javaが有償化！？」などの混乱を招きました。
この混乱は有志の努力のかいもあり、一応の収まりは見せたように思います。一方で「どのJDKディストリビューションを使うのがいいか？」については、各現場のエンジニアの関心ごとの一つだと思います。

この章は、OpenJDKとJDKディストリビューションの歴史から説明しており、「どのJDKディストリビューションを採用するか」を判断する上で、今日本一纏まってる情報だと思います。
また、今までOracleが如何にJavaに貢献し、今後も貢献し続けるかがわかる章でした。

Javaを活用する現場のエンジニアは、一度は目に通しておいたほうがいいでしょう。

#### 第3章 Jakarta EEとは！？新しいEnterprise Javaの近況

3章は「新しいEnterprise Java」です。
新機能の紹介というより、Jakarta EEに至るまでの歴史を学べる章です。
現場では、Java EEで作成されたシステムが今なお運用されており、今後のエンハンスを考える上で、この章の知識があるといいでしょう。
私も昔、JAX-RSでモバイル向けAPI作った記憶が蘇りました。
今はJakarta RESTful Web Servicesと呼ぶそうです。知らなかった！

#### 第4章 Javaでマイクロサービス！MicroProfileの紹介

マイクロサービスの為のコミュニティ標準、MicroProfileの章です。

- コミュニティ主導
- 仕様より動作する実装を優先
- 頻繁かつ定期的なリリース

という方針が時流にあってますね。
Long Running ActionsとかGraphQLなど、今後の仕様策定も気になります。
この後の第6章で出てくる、Java軽量フレームワーク「Quarkus」を知る上でもこの章の知識が役立つと思います。

#### 第5章 今一番熱い！？GraalVMの紹介

次世代Javaの可能性を一気に広げるGraalVMのお話です。
全ページに渡り、なんか愛を感じますw

「GraalVMってJavaでネイティブイメージを生成する技術でしょ？」

という知識の方は、ぜひこの章をご覧ください。
GraalVMの本当のすごさを知ることになるかと思います。
あらゆる言語がGraalVM上で動き、様々な環境でネイティブイメージのJavaが動く未来があるかも。
素晴らしいですね！

#### 第6章 Lambdaで使えないとか言わせない！サーバレス対応の[新世代]Java軽量フレームワーク

マイクロサービス、サーバレスといった背景から出てきた、次世代軽量Javaフレームワークの紹介です。
Micronaut/Quarkus/Helidonといった、次世代に活躍するかもしれないフレームワークの特徴を、それぞれ比較して知ることが出来ます。

Javaフレームワークについては、Spring Bootの1強時代になるかと思いましたが、ここにきて有力な対抗馬が出てきました。面白いですね！
僕はQuarkusが好みかな？
どこかで時間が取れれば、追っていきたいと思います。そのうえで、本章はその導入役として役立つ内容だと感じました。

## まとめ

私自身、Java 8あたりで知識が止まっていたので、この書籍が非常に役立ちしました。
最近はアプリケーションを開発する技術も多方面に渡り、一つの技術だけを深く追っていくのは大変です。こういう時、本書のような纏まった情報があると非常に助かります。

著者のみなさん、本当にありがとうございました。