三菱 UFJ インフォメーション テクノロジー株式会社 IT プロデュース部斉藤賢哉
Agenda 1. 三菱 UFJインフォメーションテクノロジーのご紹介 2. Javaと私 3. Java EEの変遷とJava EE 6 4. Java EE 6の特徴 5. Java EE 6で再考されるべきアプリケーション設計パターンの考察 (1) 6. Java EE 6で再考されるべきアプリケーション設計パターンの考察 (2) 7. Java EE 6における企業内フレームワークのあり方 8. Java EE 6との付き合い方 All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 2
1. 三菱 UFJ インフォメーションテクノロジーのご紹介 All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 3
三菱 UFJインフォメーションテクノロジー株式会社のご紹介 2009 年 7 月 1 日 3 社が合併し誕生 東京三菱インフォメーションテクノロジー株式会社 (2000 年 4 月設立 ) 株式会社 UFJ 日立システムズ (2002 年 10 月設立 ) UFJIS 株式会社 (2004 年 4 月設立 ) 資本金 :181 百万円 ( 三菱東京 UFJ 銀行 85% MUFG15%) 従業員 : 約 1500 人超 All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 4
2. Java と私 All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 5
Java と私 (1) 2001 年より Javaの本格的な普及に伴い学習を始める 2002 年 ~2004 年 大規模 Java EEシステムを経験 2005 年 7 月 米国の JavaOne に初めて参加 2007 年 7 月に マスタリングJavaEE5 の初版を出版 All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 6
Java と私 (2) 2009 年 11 月に マスタリング JavaEE5 第 2 版 を出版 2010 年 10 月に DB Magazine にて Java EE 6 の特集記事を執筆 All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 7
3. Java EE の変遷と Java EE 6 All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 8
Java EE の変遷と Java EE 6 の位置づけ (1) API の拡張 追加の歴史を振り返ると 黎明期成長期 やや迷走 挽回 成熟期 1999 J2 E E 1.2 S ervlet 2.2 JS P 1.1 EJB 1.1 JM S JavaM ail 2001 J2 E E 1.3 S ervlet 2.3 JS P 1.2 EJB 2.0 JM S 1.0 JA X P 1.1 JC A 1.0 JavaM ail 1.2 2003 J2 E E 1.4 S ervlet 2.4 JS P 2.0 EJB 2.1 JM S 1.1 JA X -R PC 1.0 S A A J 1.1 JA X P 1.2 JC A 1.5 JavaM ail 1.3 2006 Ja va E E 5 S ervlet 2.5 JS P 2.1 JS F 1.2 EJB 3.0 JPA 1.0 JM S 1.1 JA X -R PC 1.1 JA X -W S 2.0 S A A J 1.1 JA X B 2.0 JA X P 1.2 JC A 1.5 JavaM ail 1.4 2009 Ja va E E 6 S ervlet 3.0 JS P 2.2 JS F 2.0 E JB 3.1 JP A 2.0 B ean V alidation 1.0 C D I 1.0 JA X -R S 1.1 JM S 1.1 JA X -R PC 1.1 JA X -W S 2.2 S A A J 1.1 JA X B 2.2 JA X P 1.3 JC A 1.6 All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 9
Java EE の変遷と Java EE 6 の位置づけ (2) 何を追及してきたか 黎明期成長期 やや迷走 挽回 成熟期 1999 J2 E E 1.2 2001 J2 E E 1.3 2003 J2 E E 1.4 2006 Ja va E E 5 2009 Ja va E E 6 機能性 開発容易性 軽量化 移植性 All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 10
Java EE の変遷と Java EE 6 の位置づけ (3) J2EE 1.4 まで 機能性の拡張が重視され 開発容易性は置き去りに 特にEJBは 使えない標準技術 として開発現場からは敬遠 その一方でSpring HibernateといったOSSフレームワークが人気を博す Java EE 5 の登場 Spring Hibernate といった OSS コミュニティの成果を標準仕様に取込 開発容易性 (EoD) の実現を果たす POJO+ アノテーション による新しいプログラミングモデルの導入 XML 地獄 からの解放やテスト容易性をもたらす Java EE 5 はエンタープライズシステムの世界に広く浸透 All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 11
Java EE の変遷と Java EE 6 の位置づけ (4) Java EE 5 仕様に対する主な要求 取り残されたプレゼンテーション層 API( サーブレット JSF) における EoD 化 DI( 依存性の注入 ) や AOP( アスペクト指向プログラミング ) の高度化 汎用性の向上 RESTful Web サービスのサポート そして Java EE 6 へ 2009 年 12 月 Java EE 6 の正式仕様が公開 Java EE 5 に残された 未成熟な部分 はすべて解消 Java EE 6 は エンタープライズアプリケーションのプラットフォーム API としての集大成であり完成形でもある! 2011 年には主要な製品の Java EE 6 対応も終わり 本格的な普及フェーズへ All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 12
4. Java EE 6 の特徴 All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 13
Java EE 6 における進化 (1) 機能拡張 新規 APIの追加 CDI 1.0 JAX-RS 1.1 Bean Validation 1.0 既存 APIの機能拡張 Servlet 3.0 JSF 2.0 EJB 3.1 JPA 2.0 All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 14
Java EE 6 における進化 (2) 開発容易性の向上 設定ファイルの極小化 Servlet JSF 軽量化 プロファイルの導入 プルーニングの導入 パッケージングの見直し 移植性の向上 JNDI 名の標準化 悲観的ロックの標準化 All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 15
機能性の向上 ~JSF2.0(1) JSF(JavaServer Faces) とは Webアプリケーション構築のための標準フレームワーク JSF2.0では 従来のJSFの課題が数多く解消され 実用性が大幅に向上 JSF2.0 の新機能 AJAXの標準サポート ブックマーカビリティ 宣言的なバリデーション (Bean Validation) Flashスコープ DataModelを使わないデータテーブル ページレイアウトのテンプレート化 (Facelets) All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 16
機能性の向上 ~JSF2.0(2) JSF によるページ作成パターン JSF タグを直接利用する か HTML タグに JSF タグを埋め込む か プロジェクトに応じて使い分けが可能に JSF タグを直接利用 <h:inputtext id="customername value="#{customerinputbean.customername}" required="true"> <f:validatelength maximum="10" /> </h:inputtext> HTML タグに JSF タグを埋め込む <input type="text" id="customername" jsfc="h:inputtext" value="#{customerinputbean.customername} required="true"> <f:validatelength maximum="10" /> </input> All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 17
機能性の向上 ~EJB3.1 EJB(Enterprise JavaBeans) とは エンタープライズシステムに不可欠なトランザクション管理を実現するための Java アプリケーション EJB3.1 では 開発容易性向上のための様々な機能拡張がなされている EJB3.1 の新機能 インタフェースが省略可能に シングルトンセッションBeanのサポート 組み込みEJBコンテナのサポート タイマーサービスの拡張 All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 18
機能性の向上 ~JPA2.0 JPA(Java Persistence API) とは データベースアクセスを行うための O/R マッピングフレームワーク O/R マッピング オブジェクトモデル (Java クラス ) とリレーショナルモデル (RDB のテーブル ) をマッピングするアーキテクチャ JPA2.0 では 開発者からのフィードバックを受けて様々な便利な機能が追加されている JPA2.0 の新機能 クライテリアの導入 悲観的ロック ( 排他ロック ) の標準化 JPQLの拡張 ElementCollectionのサポート バリデーション機能のサポート リレーションシップの改善 All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 19
機能性の向上 ~CDI(1) CDI(Contexts and Dependency Injection for Java) とは DI によって Java EE の様々なコンポーネント (JSF EJB など ) をシームレスに統合するための技術 Java EE 6 最大の目玉 DI クラスとクラスを結び付けるための仕組み DI を利用するとクラス同士が疎結合となり単体 テストを実施しやすくなる 従来 (Java EE 5) の DI Java EE 5 では DI を利用できるクラスは Java EE サーバがライフサイクルを管理するクラスに限定 CDI によって汎用的かつ安全な DI が可能に 任意の JavaBeans クラスが対象に 修飾子によりタイプセーフを実現 All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 20
機能性の向上 ~CDI(2) 新しく導入された カンバセーションスコープ により Web ブラウザ上で複数の対話処理を平行して進めることが可能に セッションスコープ H ttps ession の生成で開 始 ( ログインなど ) H ttps ession の破棄で終了 ( ログアウトやタイムアウト など ) カンバセーションスコープ 対話処理の開始 複数の対話処理を 平行して進めても 問題ない 対話処理の終了 時間の流れ All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 21
機能性の向上 ~JAX-RS(1) JAX-RS(Java API for RESTful Web Services) とは Java で RESTful Web サービスを実現するための API サービスは POJO+ アノテーション によって作成する Java オブジェクトと HTTP メッセージを アノテーションにより自動マッピング (XML JSON など様々な MIME タイプに対応 ) JAX-RS エンジン MIME タイプが "XXX" のメッセージをデコード 要求メッセージ デコード リソースメソッドの呼び出し Foo オブジェクト Bar オブジェクト 引数 戻り値 Web リソースクラス @Consumes("XXX") @Produces("YYY") public Bar amethod(foo foo) {... } リソースメソッド return bar; 応答メッセージ エンコード MIME タイプが "YYY" のメッセージをエンコード All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 22
機能性の向上 ~JAX-RS(2) JAX-RS の 2 つの用途 バックエンドにおけるアプリケーション連携技術 SOAP Web サービスと一長一短あり Web ブラウザ上で動作する JavaScript プログラムとサーバサイドの連携 サーバサイドは JAX-RS によってサービスを提供 Web ページは JQuery などの JavaScript ライブラリを利用してリッチなページを作成 Web ページとサーバサイドは AJAX によって通信 リッチなシングルページの Web アプリケーションが構築可能 Web アプリケーションのパターンの 1 つ (Part5 にて言及 ) All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 23
開発容易性の向上 設定ファイルの極小化 Servlet アノテーションによってメタ情報を設定可能となり web.xml ファイルが不要に JSF アノテーションによるメタ情報定義や 規約によるページ遷移定義によって JSF 設定ファイル (face-config.xml) が不要に All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 24
軽量化 (1) プロファイルの導入 従来の Java EE は仕様が巨大すぎる プロファイル を導入 プロファイル ある特定の用途に限定された API のサブセット Web プロファイル Web アプリケーションの開発に特化 ベンダー : 製品のターゲットを明確に ユーザ : 製品選定が容易に 開発者 : 学習の目標を設定しやすくなる JavaEE6 フルスタックの主要 A PI S ervlet JS P(JavaS erver Pag es) JS F(JavaS erver Faces) EJB (Enterprise JavaB eans) JPA (Java Persistence A PI) B ean V alidation C D I(C ontexts and D ependency Injection for Java) JM S (Java M essage S ervice) JA X -W S (Java A PI for X M L-B ased W eb S ervices) JA X -R S (Java A PI for R ES T ful W eb S ervices) JC A (J2 EE C onnector A rchitecture) JavaM ail W eb フ ロファイル All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 25 E JB Lite
軽量化 (2) プルーニングの導入 JavaEE の最初のリリースから 10 年以上が経過し API が肥大化 現時点ではほとんど使われなくなったもの 別の API に取って代わられたものが含まれている 不要な API を段階的にプルーニング ( 削除 ) するためのプロセスが導入 まず候補が提示され 次のメジャーリリース時に削除するかどうかを決定 主に以下の API がプルーニングの候補 JAX-RPC EJB2.x EntityBean(CMP) JAXR JavaEE Deployment フルスタック API をサポートし続けなくてはならない Java EE ベンダの負担は 長期的には軽減 All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 26
軽量化 (3) パッケージングの見直し 従来のパッケージング EJBクラスは 必ずEJB-JARにパッケージングする Fooクラス (EJB) Bar.war Foo.jar Foo.ear Java EE 6 におけるパッケージング EJB クラスを直接 WAR ファイルにパッケージング可能に Foo クラス (EJB) Foo.war All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 27
移植性の向上 JNDI 名の標準化 EJB3.0 により DI が可能となったが 依然として JNDI ルックアップを使わざるをえないケースがある ただし従来の JNDI ルックアップではベンダー毎に JNDI 名の仕様が統一されておらず 移植性の面で課題に Java EE 6(EJB3.1) では JNDI 名のネーミングルールが標準化 この対応により Java EE サーバ製品間の移植性が大幅に向上 悲観的ロックの標準化 JPA1.0 により各データベースは 方言 は吸収されたが 悲観的ロック ( 排他ロック ) の仕様が標準化されておらず マルチデータベースのアプリケーション開発が困難に Java EE 6(JPA2.0) では 悲観的ロックの仕様が標準化 この対応により データベースサーバ製品間の移植性が大幅に向上 All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 28
5. Java EE 6 で再考されるべきアプリケーション設計パターンの考察 (1) All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 29
Web アプリケーションのパターンの推移 Web アプリケーションのパターンは Java EE 6 の登場により 伝統的な MVC パターン (Struts1.x など ) から 以下のようなパターンに推移 JSF2.0(HTML+JSF タグ埋め込み ) パターン JSF2.0( リッチな UI コンポーネント活用 ) パターン JavaScript+JAX-RS パターン All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 30
Web アプリケーションの機能の整理 Web アプリケーションの機能 ( 以下 ) 別に 各パターンを考察する デコレーション CSS 等によって行われる画面の装飾 業務的な画面設計 HTMLによって作成される業務的な画面設計 JavaScriptによって行われるイベント処理 ビューモデルのメタ設計 ビューモデルとのマッピング バリデータ 入出力項目の長さ設定 ビューモデル 入出力項目を表すモデル プレゼンテーションロジック 入出力項目に対するアクション 会話情報 ( セッション情報 ) の管理 ビューモデルとビジネスロジックの橋渡し All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 31
伝統的な MVC パターン (Struts1.x など ) デコレーション 業務的な画面設計 ビューのメタ設 計 ビューモデル プレゼンテーションロジック CSS JSP+Struts タグ +JavaScript Struts タグの属性 ActionForm クラス Action クラス デザイナー サーバサイド開発者 サーバサイド開発者は JSP ページを作成するが デザイナーは HTML+CSS を作成するため 成果物を共有しにくい Struts タグを使った JSP ページは Web ブラウザで表示不可能 ( 崩れる ) なため 場合によっては HTML によるモックアップを別途作成する必要がある All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 32
JSF2.0(HTML+JSF タグ埋め込み ) パターン デコレーション 業務的な画面設計 ビューのメタ設 計 ビューモデル プレゼンテーションロジック CSS HTML+JSF タグ +JavaScript JSF タグの属性 マネージド Bean クラス デザイナー サーバサイド開発者 サーバサイド開発者は HTML ページを作成するため デザイナーと成果物を共有しやすい HTML ファイルは Web ブラウザで表示可能なため HTML によるモックアップ作成が不要に All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 33
JSF2.0( リッチな UI コンポーネント活用 ) パターン デコレーション 業務的な画面設計 ビューのメタ設 計 ビューモデル プレゼンテーションロジック XHTML+JSF タグ JSF タグの属性 マネージド Bean クラス サーバサイド開発者 JSF のリッチな UI コンポーネントを活用することによってすべての機能をカバーする 1. JSF 拡張フレームワーク (PrimeFaces 等 ) を活用する 2. 自ら UI コンポーネントを開発する JSF2.0 では UI コンポーネントの開発が大幅に簡素化 JSF タグを使った XHTML ファイルは Web ブラウザで表示不可能 ( 崩れる ) なため 場合によっては HTML によるモックアップを別途作成する必要がある All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 34
JavaScript+JAX-RS パターン デコレーション 業務的な画面設計 ビューのメタ設 計 ビューモデル プレゼンテーションロジック HTML +JavaScript +CSS クライアントサイド開発者 Web リソースクラス (JAX-RS) サーバサイド開発者 サーバサイドとクライアントサイドの完全分離が可能 ネットワークの境界線 = 人の境界線 成果物を一切シェアしない サーバサイドのサービスは 再利用可能 クライアントサイドは JavaScript 以外の技術 (Flex など ) に置き換えることも可能 シングルページアプリケーションの構築に適している All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 35
まとめ ~ Java EE 6 における Web アプリケーション開発 Java EE 6 における Web アプリケーション開発では 伝統的な MVC パターン (Struts1.x など ) の課題は解決 アプリケーションの特性や開発体制によって 以下のパターンから選択可能となる JSF2.0(HTML+JSF タグ埋め込み ) パターン JSF2.0( リッチな UI コンポーネント活用 ) パターン JavaScript+JAX-RS パターン All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 36
6. Java EE 6 で再考されるべきアプリケーション設計パターンの考察 (2) All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 37
Java EE のトラディショナルなソフトウェア構成 (1) Java EE アプリケーションのトラディショナルなソフトウェア構成 3 ティア構成 (3 階層構成 ) プレゼンテーション層 JSF( またはその他の Web フレームワーク ) ビジネス層 データアクセス層 EJB JPA クライアント Java EE サーバ ( コンテナ ) プレゼンテーション層 JSF ビジネス層 EJB データアクセス層 JPA データベース 依存関係 原則として 各ティアは疎結合 ( 交換可能 ) にする All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 38
Java EE のトラディショナルなソフトウェア構成 (2) 3 ティア構成のメリット 大規模なアプリケーション開発において 分業がしやすくなる 各ティアが疎結合となっているため 相互に影響しにくい 入出力項目の名前に変更があっても ビジネス層に影響が及ばない データベースのカラムに変更があっても ビジネス層に影響が及ばない 再利用性 拡張性が高い 複数のプレゼンテーション技術に同時に対応できる PC とモバイルなど 新しいプレゼンテーション技術が登場した場合 容易に対応できる All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 39
Java EE のトラディショナルなソフトウェア構成 (3) 3 ティア構成の課題 構成が複雑になりやすい 各ティアを疎結合にするためには ティアとティアをつなぎ合わせるための グルーコード が必要 例えば受け渡し用のオブジェクト (DTO) を作成し 値をコピーする必要がある コード量が非常に多くなる 3 ティア構成に対する問題提起 必ずしも分業が必要なほど 大規模なアプリケーションばかりではない アプリケーションのライフサイクルの中で 本当に プレゼンテーション層を入れ替えること があるのか All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 40
Java EE 6 におけるソフトウェア構成 ティア分割を意識しないソフトウェア構成 Java EE 6 では CDI によって 各コンポーネントモデル (JSF EJB JPA) がシームレスに連携できるようになった パッケージングが見直され EJB クラスを直接 WAR ファイルにパッケージング可能になった 受け渡し用のオブジェクト (DTO) は不要になり ティア分割を意識しないソフトウェア構成が実現可能に (Ruby on Rails のイメージ ) クライアント Java EE サーバ ( コンテナ ) JSF データベース EJB JPA 例えば セッション Bean(EJB) をマネージド Bean(JSF) として扱い ビューから直接バインド エンティティクラス (JPA) をそのまま受け渡し用のオブジェクト (DTO) として使用する All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 41
まとめ ~Java EE 6 におけるソフトウェア構成 Java EE 6 時代のソフトウェア構成 ティア分割を意識しない構成 は 3 ティア構成に比べて以下のようなメリットがある コード量が少なくなる 構成がシンプルになる Java EE 6 では 3 ティア構成と ティア分割を意識しない構成 を アプリケーションの特性や規模に応じて選択可能となる All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 42
7. Java EE 6 における企業内フレームワークのあり方 All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 43
エンタープライズアプリケーションの実装規模の変化 実装規模 アプリケーション アプリケーションの生産性は向上 ( 実装規模は縮小 ) 企業内フレームワーク O S S フレームワーク 企業内フレームワークの実装規模は縮小傾向 ただし依然として必要 OSS フレームワークの実装規模 ( 適用範囲 ) は縮小 DI AOP O/R マッピングなど OSS フレームワークの成果を標準仕様に取り込み Java EE サーバの機能はますます充実 Java E E サーバ ( 標準 A P I) J2EE 黎明期現在 (JavaEE6 時代 ) 時間の流れ All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 44
Java EE 6 時代における企業内フレームワーク (1) Java EE 6 時代における企業内フレームワーク Java EE 仕様の機能拡張によって 従来に比べると実装規模は大幅に縮小 ただし 企業内フレームワークの存在意義がなくなったわけではない 当該企業内では標準的だが一般化が困難な機能は 企業内フレームワークとしての作り込みが必要 Java EE 6 でも必要な企業内フレームワークの主な機能 インフラ要件 運用要件を満たすための機能 ロギング 例外処理 通信タイムアウト リソースのクローズ保証 企業固有のシステム間連携 認証基盤連携 レガシーシステム連携 All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 45
Java EE 6 時代における企業内フレームワーク (2) Java EE 6 における企業内フレームワークの開発方法 Java EE 6 の機能によって これまで以上に企業内フレームワークを開発しやすくなっている アプリケーションが意識しない機能 ( 主に非機能要件 ) は インターセプタ フィルタ ハンドラを利用することによって 透過的に 織り込む ことができる アプリケーションはあくまで POJO アプリケーションが明示的に必要とする機能は フレームワークを CDI によってインジェクトさせる (API として呼び出すのではなく ) ことで アプリケーションとフレームワークが疎結合になる 従来実装が難しかったフレームワークの初期化処理は @Startup アノテーションによって容易に実装可能に Java EE 6 をベースにした企業内フレームワークの積極的な活用をおススメしたい All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 46
8. Java EE 6 との付き合い方 All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 47
Java EE 6 に移行すべき事由 (1) 生産性 保守性の観点 機能の大幅拡張 アプリケーションの実装規模の縮小化 テスト容易性の向上 オブジェクト指向に則った純粋なモデリングが可能に 従来のJava EE( 特にJ2EE1.4) に比べ 生産性 保守性は飛躍的に向上 学習コストの観点 複雑な API や設定ファイルの習得が不要に より学習しやすいフレームワークへ 習得することが多くなったように見えるのは 複雑化しているわけではなく カバーする機能が増えているに過ぎない All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 48
Java EE 6 に移行すべき事由 (2) 移植性の観点 移植性の向上により Java EE サーバ製品 データベース製品が容易に交換可能に 特定ベンダーにロックインされるリスクが軽減 ガバナンスの観点 Java EE 6 は 使える標準 として 長く安心して使っていくことができる 企業内のアーキテクチャを Java EE 6 に一本化することで 様々な設計ノウハウを社内に蓄積することができ 開発者も育成しやすくなる 以上の事由から Java EE 6 への積極的な移行をおススメしたい 新規システムの開発もさることながら 償却が終わろうとしている J2EE1.4 時代のアプリケーションは Java EE 6 に全面移行するべき時期 アプリケーション開発者の育成が 当面の課題 All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 49
Java EE 6 に向けた開発者の育成について アプリケーション開発者の育成 アプリケーション開発者の育成プランの見直しが必要 抽象度の低い API( サーブレット JDBC ) は 仕組みを理解する程度に留める IT アーキテクトは 抽象度の低い API もしっかりと習得すべき オブジェクト指向設計やモデリングのスキルを一層強化するべき 開発者タイプ別の Java EE 6 の習得方法 既存の Java EE 開発者 (Java EE 5 ベース ) は 容易に移行が可能 既存の Java EE 開発者 (J2EE1.4 ベース ) は POJO+ アノテーション 型開発へのパラダイムシフトや DI および AOP の理解 習得が必要 新規の Java EE 開発者は Ruby on Rails と同じようにフルスタックなフレームワークとして Java EE 6 の習得を目指す Java EE 6 開発者育成のための教育コンテンツの拡充が必要 All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 50
ご清聴ありがとうございました All Rights Reserved,Copyright 2012 Mitsubishi UFJ Information Tecnology,Ltd. 51