【書評】みんなのJava OpenJDKから始まる大変革期! #minjava

技術評論社から最近のJavaの状況についてまとめた解説書が出ました。*1
光栄なことに献本をいただいたので、早速レビューをさせていただこうと思います。

gihyo.jp

紙版と電子版があって、電子版は技術評論社のサイト(Gihyo Digital Publishing)で買った場合はDRMフリーのpdf版およびepub版がダウンロードできます。AmazonではKindle版、楽天ではKobo版が買えるみたいです。この辺りのフォーマットは好みの問題もあるかと思いますが、Gihyo Digital PublishingはDRMフリーを貫いているので使い勝手がよくて重宝しています。

全体像

端的に言って、Java SEからJava EE、最近流行りのマイクロフレームワークまでを解説した本です。これを一冊読んでおけば、最近の動向は一通り頭に入ると思います。各章、この内容を聞くならこの人だろうと納得できる著者が名を連ねています。なぜそうなったのかといった背景にまで触れているので、初見でも理解しやすいかと思います。

広く浅く紹介することにフォーカスされているので、それぞれの技術に関する細かい解説は基本的にありません。この本はあくまで索引として、より深く知りたい人は、各解説の中で紹介されている情報ソースを辿るという使い方をするのがよさそうです。

第1章 - Java 9以降で起こった変化の総まとめ

著者は @kis@shinyafox のコンビ。
Java 9からJava 14までの言語仕様・ライブラリの変化から、Project Valhallaの解説、JVMの変更やJDK付属ツールの紹介まで、全部ちゃんと解説したらそれだけで1冊できてしまいそうな内容が、ぎゅっと一章にん詰まっています。最近の動向が非常に簡潔まとまっているので、Javaを使っている人にとっては必読の章です。ちょうど今月リリースされるJava 14の新機能までちゃんと押さえられているあたりは、さすがきしださんといったところですね。

第2章 - JDKディストリビューションを選ぶときの指針になる章

著者はOpenJDK警察ソムリエこと @yamadamn
OracleOracle JDKの商用機能をOpenJDKプロジェクトに寄贈し、ライセンス体系を変更したことによって、Java界隈ではJDKディストリビューションの群雄割拠時代が訪れました。それまでは何となくOracle JDKを使っていれば問題なかったわけですが、これからはプロジェクトで採用するJDKについて、ライセンスやサポート体制、個別機能の違いなどを考慮して、自分で選択しなければならないのです。

この章では、なぜそんな状況になったのかという背景をはじめとして、どんなJDKディストリビューションがあるのか、どういう観点で選べばいいのかなどが、具体的なJDKの名前を挙げながら紹介されています。各JDKの違いとか、事情を知っている人間が見てもややこしい。新しいプロジェクトに着手する際には、とりあえず手元に置いておきたい情報源になります。

第3章 - Java EE/Jakarta EEってどうなってるの?ってちょっとでも思ったらこれを読もう

著者は @khasunuma
前半は、エンタープライズJavaについて、これまでの成り立ちから、Java EEJakarta EEになった経緯までの解説。Java EEに興味がある人にとっては釈迦に説法的な内容にも感じられましたが、これまでの変遷をいま一度おさらいした上でJakarta EEに臨もうという人には非常に良いサマリーになっていると思います。
後半はJakarta EEについて。Jakarta EEで提供されるコンポーネントAPI単位で紹介されているので、全体像を把握するのはとても良いです。特にJava EE 8とJakarta EE 8の対照表は要チェック。Jakarta EE 9以降についてはさらっと紹介程度ですが、これは現時点ではまだ不透明な部分が多いので仕方ないです。

第4章 - そしてMicroProfileの動向もおさえておこう

著者は第4章と同じく @khasunuma
MicroProfileはJava EEをベースとしたマイクロサービス向けのAPIセットですが、これが生まれた経緯や、具体的なAPIなどについて紹介されています。全体像を掴むにはいいですが、Java EE/Jakarta EEとの違いや、ユースケースの違いなどが、もっと分かりやすく比較されているともっと良かったかなと思います。

第5章 - 最近なにかと話題のGraalVMについて知りたいならここ

著者はJVMになりたい男こと @jyukutyo
GraalVMというとネイティブイメージ生成の部分で話題に上ることが多い印象がありますが、実際にはそれだけではなくて、マルチ言語基盤や、高性能なJITコンパイラなど、様々な顔を持った極めて汎用的なツールになっています。なので「GraalVMとは」ということを簡潔に説明するのはなかなか難しいのですが、この章では少ないページ数でそのあたりをわかりやすく説明してくれています。具体的な使用例が掲載されている点も、初めて触る人にとってはイメージが掴みやすくて良いと思いました。

第6章 - そろそろ軽量フレームワークも使ってみようかな、という人のための章

著者は @kencharos
Javaのコア機能から少しはずれて「軽量フレームワーク」という点にフォーカスを当てている辺り、ほかの章とは毛色が違うかなと感じました。内容は、近年の動向から軽量フレームワークが登場した経緯や、押さえておくべき機能の概要を解説した上で、代表例としてタイトルにもあるMicronautとQuarkus、そしてHelidonという3つのフレームワークを紹介しています。
あくまでも第三者のユーザとしての目線されていて、強みは何かみたいな話というよりは、実際に使ってみるためのチュートリアル的な内容としてまとまっています。もう少し選択する上での基準みたいな話があってもよかったかなという感じもありますが、軽量フレームワークに触れる第一歩としては非常に良い参考文献になると思います。

*1:正式な発売日は2020年3月13日なので、本エントリーを書いた時点ではまだ先行販売期間でした。