Posted by & filed under いろいろ, .


パーフェクトJava第2版を出版しました(技術評論社のページ)。

第1版出版から約5年経っての改訂版です。5年を長いと見るか短いと見るか微妙な年数ですが、Javaの世界ではこの期間に、Java7とJava8の2つのメジャーリリース、Java EE6とJava EE7のリリース、GUIライブラリの標準がSwingからJava FXへの変更と、(あまり動きがないと思われているJavaにしては)意外に変化がありました。

改訂2版の話を始めたのは、パーフェクトJavaScript出版後、2012年の初めでした。当時、改訂2版をJava8リリースに合わせて出すつもりでした。と言っても、2012年初めごろは、まだJava8リリース日が流動的だったので、実質何もしていませんでした。

2013年の間に、2014年初めのJava8リリースが確定情報になりつつありました。

しかし、なかなか執筆する気力がわきません。とりあえず2013年のJavaOneサンフランシスコに向けて、Java8のリサーチを始めて、JavaOneから帰って来たら執筆開始しようと心に決めていました。明日から本気出すみたいで、我ながら情けない話ですが。

サンフランシスコから帰国後、東京で行った2013年(去年)のJavaOne報告会で発表した時、Java8に対応した「パーフェクトJava第2版」を出しますと宣伝しました。と同時に、Java8リリースに合わせた出版が間に合いそうもないので、Java8リリースの遅延を望みます、とJava関係の場での発表とは思えない発言をしました。冗談めいていますが、実は本気でJava8リリースが遅れてくれないものかと思っていました。

Java開発陣はすばらしいもので、2014年の3月に無事Java8をリリースしました。もっとも、当初(がいつか分からないぐらい昔ですが)のプロジェクトラムダの計画からすると、Java8リリースはどれだけ遅れたのか、と言う気もしますが、もはや最初のリリース計画を誰も覚えていないのでどうでもいい話になっています。

結果としてパーフェクトJava第2版は、Java8リリースから9ヶ月遅れての出版となりました。もう3ヶ月ぐらいは前倒しで出版したかった思いもありますし、今年(2014年)の1月から4月あたりは猛烈に頑張って執筆していた記憶もあるので、9ヶ月遅れをなぜと思わなくもないですが、仕方ないですね。

書店に行くとJava本がだいぶ増えています。Java8に合わせて次の2つの系統の本が多く出版されています。

  • Java8の差分のみを扱う本
  • Java5からJava8までを包括的に扱う本

パーフェクトJava第2版は後者を志向しています。パーフェクトシリーズがそういう意図のシリーズだからです。このため、Java8の差分だけを効率的に拾いたい人にはコストパフォーマンスが少々悪い本かもしれません。買った場合、読む時の期待値を、後者に合わせて読んでください。

この話にも関連しますが、Java8の新機能をことさら特別扱いせずに説明しています。Optional型がかなり早い章(4章)にでてきます。新しい言語機能だから後に説明するという発想をしていません。たとえばOptional型であればnullと一緒に説明するほうが自然だという発想で書いています。

第1版に引き続きですが、ある程度プログラミングがわかっている人向けに書いたので、制御構文(if文やwhile文など)の説明は後回しにしています。結果として、if文より先にラムダ式を説明する本になりました。

第1版の自己評価では、「本屋で立ち読みするなら第4章がお勧め」と書きました。それは今回も変わりません。立ち読みが疲れなければ、第4章の後に「8章 ラムダ式とストリーム処理」を続けて読んでください。この2つの章を立ち読みするのはそれなりに疲れると思いますが。

技術評論社のページの目次を見ると、サーバサイドJavaがありません。Java EE7ベースで書いたサーバサイドJavaが書籍に入りきらなくなり、無料のPDFダウンロードになりました。詳しい顛末は書籍の前書きや後書きに書いたので興味があれば見てください。

ふたつほどごめんなさいがあります。

ひとつはJava8新機能の日付時刻ライブラリ(Date/Time API)をそんなに詳しく扱っていない点です。しかもどこに書いてあるのかわかりづらいです。「13章 列挙型と定数と不変型」に不変型の実装パターンの1例として日付時刻ライブラリに簡単に触れています。日付時刻ライブラリに関しては別途専門書が登場することを望みます。

もうひとつは第1章にあるイージーミスです。mainメソッドにstaticを書き忘れました。動くコードの例ではなく、サンプルコードの表記を説明する部分の記述です。あまりにイージーミスすぎて泣けてきますが、修正が間に合いませんでした。


関連文書:

  • 関連文書は見つからんがな

Comments are closed.