[Books] パーフェクト Java EE (ja)

共著者の槙さんからいただきました(ありがとうございます!)
お礼を兼ねて、この書籍の感想を述べたいと思います。

ここ 1 年くらいになって、ようやく Java EE 7 関連の書籍が出回るようになりました。この「パーフェクト Java EE」は、本稿執筆時点では後発の部類に入り、類書にみられない長所・特徴があります。

1. Java EE 7 仕様に対する割り切り

以前、私とうらがみさんで「Java EE をすべて理解するには人生は短すぎる」と話していたことがあったのですが、同じようなことを本書の著者をはじめとする多くの方が感じているようです。本書では「パーフェクト」を銘打っていますが、ターゲットを Java EE 7 Web Profile に絞り、JMS や JBatch といった大がかりな仕掛けに関する記述を一切除外することで、他の重要な機能(CDI、JSF、JPA、JAX-RS 等)の解説に重点を置いています。今日、ほとんどの Java EE アプリケーションは Web アプリケーションで、Web Profile はそれを記述するに十分な仕様を備えているため、Web Profile に限定するという執筆陣の選択は妥当であると思います。

さらに、過去の技術となりつつある JSP と EJB Lite を巻末に追いやり、代わりに CDI の手厚い解説を前半に持ってきているところに本書の構成の巧妙さを感じています。

2. 執筆陣にコミュニティの実力者を起用

本書の執筆は、CDI と EJB Lite を上妻さん、JSF を菊田さん、JPA を槙さん、それ以外の Java EE 7 仕様を著者代表の井上さんが担当されています。上妻さん、菊田さん、槙さんには GlassFish 勉強会で多数登壇いただき、コミュニティにおいてはそれぞれの分野の第一人者と言っても差し支えない方々です。共著ということで章ごとの記述に多少の癖が見受けられますが、類書では実現できていない豪華な執筆陣と言えます。

これまで Java EE 関連の書籍は洋書の翻訳が多かったのですが、日本人コミュニティだけでもこれだけの書籍を仕上げられたことはとても喜ばしいことです。

3. JSR 371 "MVC 1.0" の先取り

次期 Java EE 8 で Web Profile への導入が確定的となっている JSR 371 "MVC 1.0" について、その存在を紹介するだけでなく、Early Draft ベースですが 1 章を割いて解説しています(執筆担当は槙さん)。MVC 1.0 をきちんと取り上げた書籍はおそらく初めてではないでしょうか。何の前触れもなく JSP が出てきますが、MVC 1.0 の仕様上仕方がないことかと。

4. 本書の残念なところ 1 : JAX-RS

本書は JAX-RS について、REST の基礎的な事項から JAX-RS 仕様の深いところまで網羅的に記述されています。テンポも良いのでそれほど詰まることなく読み進められるとは思われます。ただ、残念と言うべきか、そこまで書くか?と感じた点が 2 点あります。MessageBodyReader と非同期処理の解説です。

MessageBodyReader/MessageBodyWriter は JAX-RS のリクエスト/レスポンス処理におけるもっとも低レベルな API であり、使用頻度も相応に低いため、私はこれまであまり触れてきませんでした。MessageBodyReader/MessageBodyWriter 自体はリクエスト・レスポンス処理の流れの中で重要な役割を担っているのは確かで、全く触れないとフィルターやインターセプターの詳細にまで踏み込めません。しかし、限られたページ数の中では名前と概要を紹介するだけでも十分で、むしろ JAX-RS のリクエスト・レスポンス処理の全体像を示した方が良いのではないかと私は考えています。データ型のマッピングをカスタマイズするだけなら、実務レベルでは JAXB のカスタムマーシャラ―を実装して対応した方が良い結果が得られます。

JAX-RS の非同期処理の解説では、本書の原則である Web Profile 限定を破って、Full Platform Profile の Concurrency Utilities for Java EE を使用しています。JAX-RS は非同期処理についてもかなり柔軟な規格で、クライアント API を含めればかなりの解法があります。実務ではユースケースによって適切な解法が異なってくるため、本書の原則を破ってまで非同期処理を紹介する必要はなかったのではないかと思っています。

5. 本書の残念なところ 2

言われてみれば納得です。構成は考え抜かれているとは思いますが、全くの初心者にはハードルが高いかもしれません。それを払拭するために基礎知識として Servlet に 1 章を割いたのでしょうが(Servlet の代わりに JAX-RS に 2 章を割いても良かったかもしれません)、それだけでは不十分なのかもしれません。一方で、スクリーンショット満載の「手取り足取り」本はページ数は多くても内容は薄いため、著者としてどこを落としどころとするかは非常に難しい問題だったと推察されます。

まとめ

「パーフェクト Java EE」は、現時点で入手可能な Java EE 7 解説本としては良くできたものだと思っています。本書の割り切り事項も実践的で納得がいくもので、各トピックの解説もとても丁寧です。日本の Java コミュニティから生まれた Java EE 7 解説本として、基礎固めから中・上級レベルまで広くおすすめできます。