読者です 読者をやめる 読者になる 読者になる

Java EE 事始め!

主にJava EEについて、つらつらとマイペースに書いていきます。「Java EEを勉強するときに、一番最初に読んでもらえるブログ」を目指して頑張ります!

【書評】「パーフェクト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

https://www.amazon.co.jp/Beginning-6%7EGlassFish-3で始めるエンタープライズJava-Programmers-SELECTION/dp/4798124605

2014年暮れあたりから、徐々にEE 7対応の書籍も出始めました(下記)。

www.shuwasystem.co.jp

www.shuwasystem.co.jp

www.shoeisha.co.jp

これらはそれぞれ非常に良い本なのですが、3冊ともチュートリアル形式で、1つのアプリケーションを作っていく中でJava EEの機能を学習していくというスタイルの本です。

なので、初期学習には非常に良いのですが、「困った時に頼りになるリファレンス」というような本ではありません。リファレンスとなるような本は「マスタリングJava EE 5」しか無い、というのが現状でした。

待望の「Java EE 7で困った時に頼りになるリファレンス」が登場!

今回登場した「パーフェクトJava EE」は、待望の「リファレンスとして使える本」です。

内容はJSFJAX-RSCDIJPAが中心です(WebSocket・Bean Validation・JTAEJBも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();

レルムの説明が少ない

レルムでの認証・認可は、サーブレットの章でサラッと数ページで説明されているだけでした。

レルムはあんまり使わないよ、というメッセージなのでしょうか?深読みし過ぎ?

最後に

著者の井上さん・槙さん・上妻さん・菊田さんには、本当に感謝の言葉しかありません。

これだけの質と量の書籍を書くという作業は、本当に大変だったと思います。

とても貴重な書籍を書いていただき、ありがとうございました!