mike-neckのブログ

Java or Groovy or Swift or Golang

【書評】『Javaプログラマーなら習得しておきたいJava SE8実践プログラミング』

こんにちわ、みけです。

つい先日に二章の書評を書きましたが、『Javaプログラマーなら習得しておきたい Java SE 8 実践プログラミング』の全体の書評です。

前提

書評というのは書くのが難しいと思っています。というのも、書評を書く人のコンテキストと書評を読む人のコンテキストが全く異なるからです。ここでは、書評を書く僕がJavaに対してどういう位置にあるのかを読む人に把握してもらっておくために、僕自信のことを前提として書いておきます。

  • Javaを始めたのは2005年1月から
  • Java7は2011年のリリースからずっとさわっている
  • Java8は6月からさわっている
  • StreamOptional、Date and Time APICompletableFutureなどはひと通りさわって活用している
  • IntelliJ IDEAの自動補完により、ラムダの記述の仕方にも馴染んでいる
  • NashornやRhinoなどのスクリプトエンジンはノータッチ
  • JavaFXはJavaFX2がリリースされた頃から少しだけさわっている

内容について

以上の前提から、本書に記述されている内容はだいたい知っている内容でした。したがって、読み方としては自分の知識の再確認という意味合いが強かったです。そのような読み方であったため、以前にも書いたとおりメモや注意といったところから、新しい発見などができたりしました。既にJava8をさわっている人は自分の知識の再確認として読むことができます。

一方、表紙カバーの耳の部分に「本書は、従来のJavaを知っているプログラマーを対象にしており」と書かれているように、この本を読むためにはJava5で登場したジェネリクスはほぼ必須の前提知識であると断言して構わないでしょう。業務で現在Java1.4以前を扱っていて、次のプロジェクトがJava8であるというような方には読むのは難しいと思われます。Java5からのジェネリクスの知識がない方は別の書籍などで知識を補完してから読むことをお勧めします。

各章は1章が他の章と関連する以外は、ほぼ独立して各章を読むことができます。したがって、自分の必要に応じて読むことができます。一般的なプログラマーの方ですと、次の章を読んでおけば、事足りると思います。

  • 1章 ラムダ式とは
  • 2章 ストリームAPIの使い方
  • 5章 日付と時刻の新たなAPI
  • 6章 並行処理の機能強化
  • 8章 その他のJava8機能を理解する

なお、ライブラリーやフレームワークを作る方で、ラムダ式を全面的に採用するような場合ですと、「3章 ラムダ式を使ったプログラミング」も読んでおくことをお勧めします。

各章の最初に概要が書かれています。読んでいる途中で今読んでいる内容の位置づけがわからなくなっても、最初に戻れば把握し直すことができます。全体で250ページ程度、文章は柴田芳樹氏の翻訳で、技術書を読み慣れている方なら、1週間程度で読めるでしょう。

なお、本書の原題は『Java SE 8 for Really Impatient(せっかちな人のためのJava SE 8)』であり、まえがきにも「手短に要点を説明したかった」とあるように、機能の概要を簡潔に記したものであって、それが「実践」なのかというと疑問をもたざるをえませんでした。Java8はリリースされてから、まだ7ヶ月程度(2014/10/22時点)なので、better practiceはそのうち見つかるかもしれませんが…

最後に、この本をどのような人に薦めたいかというと、次のような方たちでしょうか。

  • Java6くらいまでで、Javaで簡潔な記述ができないことに苛立って他の言語に行ってしまった方
  • 現在Java7を使ってて、今度Java8を使うのですぐにキャッチアップしたい方
  • Java8を大雑把に理解してる方(僕)

ただ、上記以外のプログラマーの方が読んでも全然問題はありません。Java8はいい言語です。少しでも気になったら読んでみることをお勧めします。

以上