torutkのブログ

ソフトウェア・エンジニアのブログ

JJUGナイトセミナー「『Java EE 7徹底入門』の著者が解説! - Java EE 7特集」に参加して #jjug

昨日、日本Javaユーザーグループ(JJUG:The Japan Java User Group)主催の月例ナイトセミナーが開催されたので参加してきました。
http://www.java-users.jp/?p=2350

Java読書会BOFで開催中の読書会の課題図書である「Java EE 7徹底入門」の著者陣が登壇するセミナーです。といってもJava EEは仕様とサンプルをかじったくらいでそれ以上は物を作ったことがないのでJava EE初心者(自称)です。

Java EE 7徹底入門 標準Javaフレームワークによる高信頼性Webシステムの構築

Java EE 7徹底入門 標準Javaフレームワークによる高信頼性Webシステムの構築

セミナー受講メモ

冒頭は、猪瀬さんによる書籍執筆の話、Java EEの簡単な概要から始まりました。
http://www.slideshare.net/inose660/20160215-01-java-ee7

書籍は2年位かけて企画・執筆、完全に動作するサンプルを用意したとのことです。懇親会で聞いたところ、サンプルの開発は著者らが合宿して作ったそうです。

表紙が白い猫なので白猫本との愛称を付けて広めようとしたところ、ゲーム「白猫プロジェクト」が既にあってググラビリティが低かった、誤字脱字が多いので正誤表を整備していますよ、レビューには時間がかかってしまった、刊行直前にGlassFishのバージョンアップがあった、などの逸話紹介がありました。

正誤表サイト
http://www.shoeisha.co.jp/book/detail/9784798140926

本編は、加藤田さんのJSF、羽生田さんのCDIEJB、猪瀬さんのjBatchの3本です。

まず、加藤田さんのJSFの話から。
プレゼン資料が公開されています。
http://www.slideshare.net/den2sn/javaee7-jsf

会場への問いかけ「JSFを使っている人?」に、ぱらぱらと手があがり、ぱっと見3割といったところでしょうか。(後ろの席の方が手を上げている人が多かったような?)
フェースレットとマネージドビーンの解説から始まりました。フェースレットはXHTMLで画面レイアウトを定義します。スクリプトレットが書けないので、ビューとロジックが分離できます。また文字列サニタイジングがデフォルトで実施されるそうです。
マネージドビーンは、フェースレットとバインドするJavaコードで、スコープ制御、バインドする値の保持、ビジネスロジック呼び出し、画面遷移を扱います。

続いて、書籍では触れなかった話として

  • JSFのより詳細な機能(カスタムコンポーネント、イベントハンドリング、ビーンバリデーションのグループ化機能、ELのLambda式、文字列連結オペレータ)
  • Java EE 8(JSF 2.3)から、WebSocket対応、マルチフィールド・バリデーション、Java Date and Time APIサポート、EL式の暗黙オブジェクト、など
  • MVC 1.0(アクション指向フレームワークJAX-RSベース、ビューにはFaceletsとJSP
  • JSF関連ライブラリ(PrimeFaces、RichFaces、ICEfacesなどのコンポーネント系と、OmniFaces、PrittyFacesなどのライブラリ系)

について紹介がありました。

次は羽生田さんのCDIEJBです。
書籍では、CDIEJBか、といったニュアンスが出てしまっているが、実際は、CDIEJBは排他的なものではなく両方使っていいということを念押しされていました。なるほど。
おさらいとして、CDIのスコープのお話(POJOのスコープ定義されすれば@Injectで好きな箇所でインジェクションできるよ、CDIは層をつなぐもの)、続いて、書籍では触れなかった3つの話

について紹介がありました。

CDIコンテナは、Weldそのものですが、実行環境(アプリケーションサーバー)によってバージョンが違うことがあるので、バージョンを押さえておきましょう。そして、コンテナへのアクセスAPIの紹介(CDIクラス、CDIProviderクラス、BeanManagerクラス)がありました。

最後は猪瀬さんのjBatchの話です。
http://www.slideshare.net/inose660/20160215-04-java-ee7-jbatch

Java EEでのバッチ処理の標準化を行ったもので、Spring Batchを元にしています。
ジョブとステップという2つの概念を丁寧に解説しています。
ジョブはXMLで記述し、処理の順序制御をして、ステップはJavaコードで実装します。

書籍にはない話として、ステップの並列実行、ここがヘンだよjBatch(ジェネリクス使えない、終了ステータス・バッチステータスで名がかぶる、flow/split単位でpropertyを指定できない、GlassFishでは動かない機能あり)の紹介がありました。

その他

サンプルコードKnowledgeBaseの動作環境は、データベースがOracle Database Express(無償)となっています。JDKに付いているJava DB(Apache Derby)では動作しないですが、MySQLPostgreSQLあたりでは動くかも、とのことです。