【書評】「パーフェクトJava EE」は最強のJava EE 7リファレンス!
https://www.amazon.co.jp/パーフェクト-Java-EE-井上-誠一郎/dp/4774183164www.amazon.co.jpgihyo.jp
著者の1人である@kikutaro_さんから献本いただきました。ありがとうございます!
これまでのJava EE書籍の課題
まずは、Java EEの最新バージョンである「Java EE 7」対応の日本語書籍が少ないことでした。
なので、下記のEE 5本やEE 6本で勉強した後は、ブログ情報を検索したり、海外の英語情報に頼るしかありませんでした。
https://www.amazon.co.jp/マスタリングJavaEE5-第2版-DVD付-Programmer’s-SELECTION/dp/4798120545
2014年暮れあたりから、徐々にEE 7対応の書籍も出始めました(下記)。
これらはそれぞれ非常に良い本なのですが、3冊ともチュートリアル形式で、1つのアプリケーションを作っていく中でJava EEの機能を学習していくというスタイルの本です。
なので、初期学習には非常に良いのですが、「困った時に頼りになるリファレンス」というような本ではありません。リファレンスとなるような本は「マスタリングJava EE 5」しか無い、というのが現状でした。
待望の「Java EE 7で困った時に頼りになるリファレンス」が登場!
今回登場した「パーフェクトJava EE」は、待望の「リファレンスとして使える本」です。
内容はJSF・JAX-RS・CDI・JPAが中心です(WebSocket・Bean Validation・JTA・EJBも1章ずつ解説があります)。つまりJava EEのWebプロファイルですね。
それぞれがその技術のエキスパートによって書かれています(JSFは菊田さん、JAX-RSは井上さん、CDIは上妻さん、JPAは槙さん)。この技術だったらこの方だろう、という人ばかりですね。
内容の幅も深さも、他の書籍とは一線を画しています。
例えばWebSocketの章では、エンコーダー・デコーダーを利用してJSON形式でデータをやり取りする方法が紹介されています(WebSocketってチャットアプリ作っておしまい、みたいな解説が多いですよね...)。
その他、CDIのクライアントプロキシ、JAX-RSのMessageBodyReader/Writerの性質、JSFのPrimeFaces、JPAのエンティティグラフやL2キャッシュなど。
その他にも重要な内容がたくさん書かれていますので、ぜひ読んでみてください。Java EEを開発で使っているすべての方必見の内容が詰まっています!
かなり高度な内容も書かれていますので、基礎知識なしで読むのはハードルが高いかもしれません。なので、上記3冊のチュートリアル形式の本をどれでもいいので読了してから、パーフェクトJava EEを読むことをお勧めします。
ちょっと気になった点
FacesContextのインジェクト(P.36)
@Inject
FacesContext facesContext;
このように書けるようになるのは、確かJava EE 8からだったと記憶しています。
Payara Web ML 4.1.1.162で上記のコードを試しましたが、デプロイ時にエラーになりました。
セッションIDの変更(P.352)
セッションIDを変更するためにHttpSessionの破棄および再生成を行っていますが、下記のようにHttpServletRequest#changeSessionId()メソッドを利用すれば、再生成の必要は無いと思います。
HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance() .getExternalContext().getRequest(); request.changeSessionId();
レルムの説明が少ない
レルムでの認証・認可は、サーブレットの章でサラッと数ページで説明されているだけでした。
レルムはあんまり使わないよ、というメッセージなのでしょうか?深読みし過ぎ?
最後に
著者の井上さん・槙さん・上妻さん・菊田さんには、本当に感謝の言葉しかありません。
これだけの質と量の書籍を書くという作業は、本当に大変だったと思います。
とても貴重な書籍を書いていただき、ありがとうございました!