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

レルムの説明が少ない

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

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

最後に

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

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

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

Java EE 7を勉強する方法(2016年ver.)

今年になって、Java EEの学習環境がガラッと変わりました。

2016年も半分以上過ぎてしましましたが(笑)、今からJava EE 7を勉強するにはどうすべきか、改めて書きたいと思います。

1. まずは作りながら学ぶ

以下3冊のいずれか1つで、Webアプリを作りながらJava EEの概要を理解しましょう。本屋さんで軽く立ち読みして、ご自分に合いそうな本を1つ選んでください。

www.shuwasystem.co.jp

www.shuwasystem.co.jp

www.shoeisha.co.jp

これらの本は、いずれも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)のスライドを読みましょう。

JAX-RS入門および実践

ブログはこちら。

この投稿のタグ JAX-RS — 裏紙

アクションベース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 Japan

nekop's blog

yamadamnのはてな日記

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

JavaEE使い方メモ(JTA) - 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を使う方は必読でしょう。

gihyo.jp

4. 公式情報も確認しよう

かなり日本語情報が充実してきましたが、できれば英語の公式情報にも目を通しておきましょう。日本語情報が無い場合には、英語の1次情報をあたるのが最も良い方法です。OracleJava 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の基本を身につける!
  • 重要なブログ情報をチェック!
  • パーフェクトJava EEで仕上げ!
  • 公式情報もしっかりチェック!

もはや「Java EEは日本語情報が少ない」とは言えません。日本語情報は、現存の技術の中ではかなり充実している方だと思います。

ただし、日本語情報はGlassFish前提で書かれているものが多く、その他のサーバーでは細かい挙動が異なることも多々あります。

トラブル時に大事になってくるのは、英語の公式情報です。英語情報もしっかりとチェックしましょう。

それでは、Enjoy Java EE