虎の穴開発室ブログ

虎の穴ラボ株式会社所属のエンジニアが書く技術ブログです

MENU

【Java 14リリース記念】『みんなのJava』を読んだ感想

皆さんこんにちは、虎の穴ラボのH.Kです。

本日(3/17)はJava 14がリリース日ですね。日頃Javaを使っている身としてはとてもワクワクします。
Java 14はPreview機能の追加が多いのですが、大きなところとしてはSwitch式がついに標準として組み込まれました。

さて、今回はそんなJavaの「今」がわかる、『みんなのJava』の感想を共有したいと思います。
これまで虎の穴ラボの書籍を読んだ感想記事は、オライリー社様が出版したものを多く取り扱ってきましたが、こちらの本は技術評論社様より出版されております。
虎の穴ラボでは福利厚生の一環として、個人での技術書の購入に対して年間5万円まで補助が受けられます。私が読んだ『みんなのJava』もその制度を利用して購入いたしました。
f:id:toranoana-lab:20200316163704j:plain

読んだ動機

前職からJavaでの開発に携わっており、一番得意な言語は何?と問われれば「Javaです。」と真っ先に答えるくらいJavaは親しみのある言語です。
しかし、普段はJava SE 8を使用することが多く、私自身がJavaの最新の動向に疎くなっているという自覚がありました。
そんな時に出版されたのが、この『みんなのJava』です。
Javaの入門書でもなく、プログラムの書き方が書いてある本でもなく、最新の情報を知りたいという意味ではベストな本ではないかと思います。

目次

目次は以下のような構成になっています。

目次

第1章 Java 9からJava 14までに起こった変化から見る これからのJava

1-1 Javaの変化
1-2 開発体制の変更と機能変更の概要
1-3 Java 9から14までの言語仕様や標準ライブラリの変更
1-4 Javaの未来を作るプロジェクトProject Valhalla
1-5 JVMの変更
1-6 ツールの追加・変更

第2章 JDKに関する疑問と不安解消! JDKディストリビューション徹底解説

2-1 JDKディストリビューション時代の到来
2-2 OpenJDKとJDKディストリビューションの歴史
2-3 OpenJDKを開発しているのは誰か
2-4 最新JDKディストリビューション大全
2-5 JDKディストリビューションの選び方
2-6 OpenJDKへの接し方

第3章 Java EEからJakarta EE へ 新しいEnterprise Java

3-1 Jakarta EE Platformの概要
3-2 Java EE/Jakarta EEのアーキテクチャ
3-3 Jakarta EE 8のおもな機能
3-4 Jakarta EEのこれから

第4章 MicroProfileが拓く Javaのマイクロサービス

4-1 MicroProfileとは?
4-2 MicroProfileによるマイクロサービス開発

第5章 ネイティブイメージ生成で注目! Javaも他言語も高パフォーマンスGraalVM

5-1 あらゆる言語を実行できるVM!?
5-2 GraalVMを試してみよう
5-3 GraalVM JITコンパイラとTruffle
5-4 GraalVMの組み込みとネイティブイメージ
5-5 GraalVMの適用事例
5-6 GraalVMが照らすJavaの未来

第6章 マイクロサービス,クラウド,コンテナ対応 [新世代]軽量フレームワーク入門

6-1 軽量フレームワークが続々登場している理由
6-2 軽量で多機能なフルスタックフレームワークMicronaut
6-3 クラウドネイティブな高速フレームワークQuarkus
6-4 Oracleによる軽量・シンプルなフレームワークHelidon

より詳細な目次は技術評論社様のサイトをご覧ください。

gihyo.jp

本の概要

Java SE 8のリリース後、Open JDKのライセンス変更や急速なクラウド化など、大きな変革期を迎えたJava。
(ちなみにJava SE 8のリリースは2014年3月18日です。もう6年も前なんですね・・・。)
変革期にJavaがどう変わって、どう接すればいいのかを「Javaチャンピオン」をはじめとするエンジニアの方々が解説しています。
具体的にはJavaの新しい言語仕様・標準ライブラリの変更、JDKの変化、Jakarta EEへの移行、マイクロサービス事情、GraalVM、軽量フレームワークについてまとめられており、今の時代に欲しいJavaの情報が詰まった内容になっていると言えます。

全体の感想

はじめに、全体の感想について述べておきます。
正直、「Java SE 8からこんなに変わっていたんだ!」というのが率直なところです。
新しい言語仕様・標準ライブラリの変更についてはある程度情報を追っていたので、知っている内容も多かったです。
コンテナ技術の発達やサーバレスの台頭などの時代の流れに即したJavaの「進化」をマイクロサービス化への対応や新しい軽量フレームワークの登場などで感じることができます。

一部ではレガシーな言語であると言われることもあるJavaですが、関数型言語の文法の導入や軽量化、クラウドへの対応状況を考えると、Java SE 9以降は一層モダンな言語となった印象です。 また、一時期騒がれていた(現在も騒がれている?)「OpenJDKのライセンス変更」について、過去の背景から現在のサポート状況まで丁寧に解説されており、「Javaは有償化されたのでは?」という疑問を解決する最適な本だと思います。
他にもGraalVMは何ができるのかなどJavaという単一のワードに囚われず、最新のJavaとJavaを取り巻く環境についての必須の知識が学べます。

以下、気になった章や内容をピックアップして感想を書きます。

第1章 Java 9からJava 14までに起こった変化から見る これからのJava

多くの開発者(プログラマ)が深く関わるところが、この章に記載されているライブラリやJVMの変化になると思います。
当ブログでも以前紹介させていただいたSealed Types、record、パターンマッチなどの標準ライブラリへの変更はもちろんのこと、メモリ利用の効率化をJavaにもたらす為のProject ValhallaについてやJVM、周辺ツールについてなど、かなり網羅的な内容になっています。
(以前Sealed Typesについて取り上げさせていただいたブログ記事はこちらです。)
この章を読むだけでJava SE 8からどんな変化があったかを一通り押さえることができます。
特に気になったのはProject Valhallaについてです。
Projectの存在は知っていましたが、具体的に何を目指して、どのような変更を行っているかは知りませんでした。
Project Valhallaにて検討されているinlineクラスは非常にインパクトがあるもので、実際にJavaに取り込まれるまでには少し時間がありそうですが、キャッチアップが必要な要素であると感じました。

第3章 Java EEからJakarta EE へ 新しいEnterprise Java

この章ではJava EEの歴史、Java EEからJakarta EEへ移行した経緯、そしてJakarta EEの機能のオーバービューが記載されています。
私はJava EE6で業務システムを実装したことがありますが、全くJava EE(Jakarta EE)の経験がなくても、アーキテクチャの解説もされているので、理解しやすい内容になっていると感じます。
いわゆる金魚本と呼ばれる『Beginning Java EE 6』も情報が古くなりつつある中でアーキテクチャの解説を時代背景を交えて行っているというところは、EEを使い始める人にとって、とても有益な情報になり得ると考えています。

第5章 ネイティブイメージ生成で注目! Javaも他言語も高パフォーマンスGraalVM

読んでいく中で、最も興味を惹かれたのがこの章の内容でした。 GraalVMとは何か、GraalVMでできることがサンプルコードや実施手順を含めて解説されています。
まず私はGraalVMについてネイティブイメージの文脈でしか知りませんでした。
GraalVMでできることはネイティブイメージの生成だけではなく、たくさんの興味深い機能を持っていることが語られています。
具体的には「あらゆる言語を実行できる機能」や「異なる言語で書かれたコードを相互利用する機能」、「言語を実装できる機能」と知らなかった機能が数多く紹介されています。
また、機能の紹介に止まらず、実際に試す手順まで記載されており、少し遠いところにあると思われた技術が、一気に手元に近づいてきた感覚になりました。

最後に

繰り返しになりますが、『みんなのJava』は、Java SE 8から大きく変化をし、またこれからも進化し続けると思われるJavaについて、現状どうなっているのかを知るには最適な本だと感じました。
Java界隈の最新情報はブログなどで部分的な情報を手に入れることはできますが、歴史や相互作用を踏まえ、横断的にまとまった情報を得られるのは本ならではの良さだと言えます。 言語仕様だけでなく、GraalVMや最新のフレームワークについても広く解説されており、時代がエンジニアや言語に何を求めているか(クラウドネイティブだったりマイクロサービスだったり)についても触れられているので、「次に学びたい技術」や「次に学ばなければいけない技術」が見つかりやすい本でもあります。
Javaがレガシーと言われ一度Javaから離れてしまった人でも楽しめ、今現在Javaを触っている人でも新たな発見がある本なので、ぜひ読んでみてください。

P.S

残念ながら、COVID-19の感染被害の防止の為中止となった技術書典ですが、虎の穴ラボでは用意していた同人誌を技術書典 応援祭にて0円にて頒布しております。 ぜひ御覧ください。 techbookfest.org

加えて今回は、有償版の同人誌も作成しております。Go、Kotlin、Rustに関連する内容をまとめた、内容の濃い薄い本になります。 こちらも、ぜひ入手してお楽しみください。 techbookfest.org

虎の穴ラボではオタクなエンジニアを大募集中です。
3/25にオンラインで「とらのあな採用説明会」を実施することとなりました。
普段の採用説明会は場所が遠くて参加が難しいという方、虎の穴のエンジニアに興味がある方は是非お気軽にご参加ください。

yumenosora.connpass.com

また、「まず業務について聞いてみたい」という方は、カジュアル面談も実施していますので、こちらもフォームから申込みをお願いします。
虎の穴ラボのエンジニアが、ざっくばらんに業務についての質問から「今季何見ました?」というお話まで何でもお応えします。

WantedlyLAPLASでの採用も行っております)

yumenosora.co.jp

news.toranoana.jp