Java SE 8 実践プログラミングを読んだ

Java9がリリースされた昨今、今更だけど、Kindleで安くなってたので読んだ。

Javaプログラマーなら習得しておきたい Java SE 8 実践プログラミング

Javaプログラマーなら習得しておきたい Java SE 8 実践プログラミング

Java SE8 for the Really Impatientの翻訳本で、Java 8からの新機能であるラムダ式をはじめ、ストリームAPIや新しい日付クラスなどについて詳しく紹介されている。

新機能の紹介おいては、単に記法やライブラリの紹介をしてくれるだけでなく、言語の設計の方針や過去のバージョンのJavaとの互換性などを踏まえた説明がなされていて読み応えがある。例えば、ラムダ式をJavaという言語で表現するために、汎用的な関数型はほとんど使われておらず、用途ごとに関数のように扱えるinterface(= FunctionalInterfaceで注釈される)が定義されていて、そのinterfaceに合致するようにラムダ式を与えるというふうになっている。この方法では既存のJavaのプログラミングの方法を変えずに新しくラムダ式を採用できる……といった内容。

新機能の紹介以外では、9.4章 セキュリティ案件でコラム的に語られている、Java アプレットやJava Web Start がなぜうまくいかなかったかについて著者があれこれ分析しているところが興味深かった。Write once, run anywhereなんてなかったんや……。

あと、この本の特徴としては、章ごとにある練習問題がやたら充実しているというのがある。本に書かれている範囲を超えて自分で考えなければ解けないような難易度で、良い練習になる。僕も1章と2章の練習問題をためしに解いてみた。

github.com

一応問題ごとにテストを書いて動きを確かめられるようにしている。回答のコードはこういう調子。コードを書かないような問もあるので、抜けている番号もある。

3章以降の問題も気が向いたらやりたいけど、JavaFXに依存してる問題があったりしてなんかちょっとテストしずらいなーとなってあんまり気がすすまない。この練習問題は全体的には良い問題が揃ってるんだけど、仕様がはっきりしなかったり、妙に込み入ったことをする必要があったりする。やりやすい問題だけやるくらいでも良いと思う。

結構この練習問題にチャレンジしている人もいて、"Java SE 8 実践プログラミング 練習問題" とかで検索するといくつか見つかって、眺めると面白い。原著のタイトルで検索してもいくつか見つかる。

総じてJava 8の新機能をしっかり学べるし、特にJavaプログラミングの題材がなくても練習問題とかやって楽しめるので良い本だと思う。コレで僕も、「ラムダ式くらいかけますしね!」って言ってもよいはず。あとJava FXの章は読んでないです。すいません。

研究もJavaでやったし、2,3年前はAndroidアプリ書いてたりもしてたので、基本的なJavaは一応書けるというつもりだったけど、だいたい忘れているということもわかった。