【書評】「パーフェクト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();
レルムの説明が少ない
レルムでの認証・認可は、サーブレットの章でサラッと数ページで説明されているだけでした。
レルムはあんまり使わないよ、というメッセージなのでしょうか?深読みし過ぎ?
最後に
著者の井上さん・槙さん・上妻さん・菊田さんには、本当に感謝の言葉しかありません。
これだけの質と量の書籍を書くという作業は、本当に大変だったと思います。
とても貴重な書籍を書いていただき、ありがとうございました!
Java EE 7を勉強する方法(2016年ver.)
今年になって、Java EEの学習環境がガラッと変わりました。
2016年も半分以上過ぎてしましましたが(笑)、今からJava EE 7を勉強するにはどうすべきか、改めて書きたいと思います。
1. まずは作りながら学ぶ
以下3冊のいずれか1つで、Webアプリを作りながらJava EEの概要を理解しましょう。本屋さんで軽く立ち読みして、ご自分に合いそうな本を1つ選んでください。
これらの本は、いずれもWebアプリを作りながらJava EEの基本を学ぶ、チュートリアルのような形式です。
「わかりやすいJava EE」と「パーフェクトマスター」は、サーブレット・JSPの学習が終わったJava初心者の方向けです。ただし、RESTful Webサービスを作る技術「JAX-RS」の説明は、2冊とも無いので注意してください。
ある程度のJavaの経験(Webフレームワーク、DIコンテナ、ORマッパーを使った開発経験)があるならば、「Java EE 7徹底入門」が良いでしょう。この本には、JAX-RSの章があります。
2. ブログ情報を調べてみる
上記の入門書籍だけでは、実開発には足りない部分があると思います。
多くの方がブログやスライドを書かれていますので、ぜひ参考にしてみてください。
JSF
JSFでは、まずは菊田さん(@kikutaro_)のブログを読んでいただくのが良いでしょう。
JSF カテゴリーの記事一覧 - Challenge Java EE !
その他の読んでおくべき情報は、下記の記事にリンクをまとめておきました。
JSFを使うなら読んでおきたいリンクまとめ - Java EE 事始め!
JAX-RS
JAX-RSでは、まずはうらがみさん(@backpaper0)のスライドを読みましょう。
ブログはこちら。
アクションベースMVC
Java EEの情報を調べていると、「JSFはコンポーネントベースで、Strutsはアクションベースで・・・」という情報が見つかることも多いと思います。
アクションベースMVCは、現在はまだJava EE 7標準ではありませんが、使うこと自体は可能です。僕のスライドを読んでいただくのが一番良いと思います。
Java EEアクションベースMVC入門 #jjug_ccc #ccc_cd4 // Speaker Deck
CDI
上妻さん(@n_agetsu)のブログが良いでしょう。リンクは下記にまとめています。
CDI/JTAを使うなら読んでおきたいリンクまとめ - Java EE 事始め!
JPA
まずは、拙著スライドからどうぞ。
はまる!JPA(初学者向けライト版)
http://www.slideshare.net/masatoshitada7/jpa-46874399
より高度な内容については、下記のスライドを読んでみてください。
はまる!JPA
http://www.slideshare.net/makingx/jpa-29150059
金魚本に載ってないJPQLの話
http://d.hatena.ne.jp/megascus/20120925/1348575449
アプリケーションサーバー
サーバーそれぞれのエキスパートの方々がブログを書かれています。
- GlassFish
蓮沼さん(@khasunuma)
Java EE全般
- 上妻さんの資料
上妻さんがGlassFish勉強会で発表された、Java EEのパフォーマンスに関する資料です。
Java EE パフォーマンスTips #glassfish_jp
- Java EE 7 Tutorial日本語訳まとめ
Java EE 7 Tutorialは、Oracle公式のチュートリアルです。全部ではありませんが、@kagamihogeさんが日本語訳をまとめていらっしゃいます。
The Java EE 7 Tutorialのテキトー翻訳まとめ - Qiita
- ○○使い方メモ
@opengl_8080さんのブログです。Java EEに限らず、いろんな情報が書かれていてとても素晴らしいです。
特に、Bean ValidationとJTAの記事は必読です。
JavaEE使い方メモ(Bean Validation) - Qiita
各種Advent Calender
Java EE Advent Calendar 2015 - Qiita
Java EE Advent Calendar 2014 - Qiita
GlassFish Advent Calendar 2014 - Adventar
GlassFish Advent Calendar 2013 - Adventar
JBoss / WildFly (全部俺) Advent Calendar 2013 - Adventar
3. 仕上げは「パーフェクトJava EE」!
Java EE 7日本語書籍の決定版とも言うべき本です。内容の質・量とも素晴らしいです。開発でJava EEを使う方は必読でしょう。
4. 公式情報も確認しよう
かなり日本語情報が充実してきましたが、できれば英語の公式情報にも目を通しておきましょう。日本語情報が無い場合には、英語の1次情報をあたるのが最も良い方法です。OracleのJava EE 7公式情報は、こちらにまとめられています。
Home: Java Platform, Enterprise Edition (Java EE) 7 Release 7
また、仕様書であるJSRも重要です。JSRはこちらから検索できます。「JPA JSR」のように「技術名 JSR」でググってもOKです。
The Java Community Process(SM) Program
まとめ
もはや「Java EEは日本語情報が少ない」とは言えません。日本語情報は、現存の技術の中ではかなり充実している方だと思います。
ただし、日本語情報はGlassFish前提で書かれているものが多く、その他のサーバーでは細かい挙動が異なることも多々あります。
トラブル時に大事になってくるのは、英語の公式情報です。英語情報もしっかりとチェックしましょう。
それでは、Enjoy Java EE!