2016年2月15日月曜日

JJUGナイトセミナー 「Java EE 7徹底入門」の著者が解説! - Java EE 7特集 に行ってきた!

<Java EE 7徹底入門 概要説明 (猪瀬さん)>
書籍『Java EE 7徹底入門』著者
→サンプルアプリ作成できるので、今後活用してもよい。

.ear = .jar + .war

Java EE 7
→2013年

次世代フレームワーク
→検討する上で情報量が大切。


<プレゼンテーション層の開発 JSF (加藤田さん)>
(当時)Servletでは、入力チェックがないためOSS(struts等)を利用していた。

JSF構成要素
→フェースレット(画面)とマネージドビーン(処理)

XHTMLベースのテンプレートエンジン

JSF
→サニタイジングがデフォルト等。JSP進化版。

@Named フェースレットと連携しますよ~
@RequestScoped スコープの定義

本書で触れられなかった話
・JSFのより詳細な機能
→カスタムコンポーネント
イベントハンドリング
ビーンバリエーション
EL
・JavaEE 8(JSF2.3)
→WebSocket対応
マルチフィールドバリデーション
・MVC1.0
→アクション指向フレームワーク
JavaEE8で導入
JAX-RSを拡張(アノテーション同じ)
・JSF関連ライブラリ

プレゼンテーション層の選択肢
1.JSF
2.JAX-RS+クライアントサイドフレームワーク
3.MVC1.0+Web Components?

どれを選んでいてもコンポーネント指向に収束。
→人間がイメージしやすいのかも。。

PrimeFaces
→Ajaxベース。100を超えるコンポーネント

OmniFaces
→JSF開発をサポートするユーティリティライブラリ

<ビジネスロジック層の開発 CDI,EJB (羽生田さん)>
CDIとEJBの組み合わせがよい。

CDI
→インジェクション、型解決、定義方法
→イベント処理

EJB
→解説。きちんと設計すれば

CDIコンテナの取り扱い

@ConversionXXXXX

CDIにおけるトランザクションの取り扱い

DI
→「層」をくっつける接着剤の役割

スコープ定義
@RequestScoped
@ViewScoped
@SessionScoped
@ApplicationScoped
@ConversationScoped → 開発者が明示的に決める事が可能
スコープ外になるとGC対象になるので。

CDI
→スコープ定義がわかれば使えるため、簡単。

層について
JSF⇔CDI⇔Entity
※ただし、CDIは実際は全ての層に入るはず

CDIコンテナ
・Weld
→バージョンは必ず認識(APサーバとの関連)すること。
環境によって動かないみたいなことがある。
Glassfish/Weld、Oracle Weblogic/Weld
・CDIコンテナへのアクセス用
→取得:CDI.current();
CDI.select(MyBean.class).get();とか
・CDI.current().toString();
→返却:Weld
・CDIProvider
・BeanManager
→面白い機能。
@Inject
BeanManager manager;
業務アプリで使いすぎると危険
過度の使いすぎ→FW化→障害調査が大変
・大規模開発だと勝手インジェクションとか。。。

@ConversationScoped
・自分でスコープ長を定義
・begin()→end()

トランザクション
・javax.transactionパッケージ
・@Transactional
→トランザクション境界の設定
→クラスとメソッドどちらでも
・@TransactionScoped

CDI+EJB
→ルール決めが大切

多量のインジェクション数は危険
→課題。フレームワークで制御しようとすると本末転倒になりそう。
だから設計大事。

<バッチアプリケーションの開発 jBatch (猪瀬さん)>
JavaEE7から登場
Spring Batchから多く継承
JSR-352で規定

1.プロセスとして実行
○ シンプル。直感的。
△ JVM起動時間のオーバーヘッド。CPU浪費。
△ APサーバで動く他の部品との共有が難しい
2.自作スレッドとして実行
○ スレッドはプロセスに比べて軽く起動
△ スレッド管理するmainプログラムを自作必要
△ APサーバで動く他の部品との共有が難しい
3.サーブレットとして実行
○ スレッドはプロセスに比べて軽く起動
○ スレッド管理プログラムの自作不要
○ APサーバ部品との共有OK
△ 実行状況の把握、スレッド停止が難しい
△ HTTPリクエストタイムアウトの問題
4.jBatchを利用
○ スレッドはプロセスに比べて軽く起動
○ スレッド管理プログラムの自作不要
○ APサーバ部品との共有OK
○ 実行状況の確認OK

ジョブとステップ
→ジョブ(xml)はステップの入れ物

JCLっぽい。

ジョブオペレータ

ステップ
→『チャンク型』『バッチレット型』
→チャンク型:一括処理
I/O減らす仕組み(10回に1回書き込み)

補助機能
・リスナ
・コンテキスト
 →JobContextとStepContext
・メトリック
 →Stepに関する統計情報





2 件のコメント:

  1. 初めまして。

    結構気になっている本でした。

    返信削除
  2. おはようございます。

    要点がまとまっていて、ためになりました!

    返信削除