スライド 1

Similar documents
Make the Future Java FY13 PPT Template

PowerPoint プレゼンテーション

スライド 1

Microsoft Word 基_シラバス.doc

5-1- 応開発フレームワークに関する知識 開発フレームワークを利用した Web アプリケーションの実装方法を理 Ⅰ. 概要解する MVC や OR マッピング DIxAOP といった技術を理解する Ⅱ. 対象専門分野職種共通 Ⅲ. 受講対象者 本カリキュラムの 5-1- 基開発フレームワークに関す

V8.1新規機能紹介記事

1 JBoss Seam と Embedded EJB3 で見る 次世代の Java EE アプリケーション開発 株式会社カサレアルプロフェッショナルサービスセンター阿島哲夫岡本充洋

JBoss と Arquillian で実現する 究極のテスト環境 レッドハット株式会社 JBoss サービス事業部 コンサルタント 山 田義和

Java 16x9 PPT Interim Template

プレポスト【問題】

PowerPoint プレゼンテーション

改訂履歴 項番版数作成日 / 改訂日変更箇所変更内容. 平成 28 年 5 月 3 日新規章構成の変更, 分冊化に伴い新規作成 (i)

rcp-add-01:アーキテクチャ設計書

WebOTX V6 J2EEアプリケーションのトラブルシューティング

(Microsoft PowerPoint - Java\221\3462\225\224\211\357\224\255\225\\\216\221\227\ ppt)

5-1- 基 開 発 フレームワークに 関 する 知 識 現 在 普 及 が 期 待 されている 開 発 フレームワークの 実 際 の 開 発 運 用 Ⅰ. 概 要 の 際 に 必 要 な 管 理 知 識 手 法 の 種 類 と 特 徴 内 容 を 理 解 し 必 要 なノ ウハウを 実 務 レベル

Slide 1

1 Copyright 2013, Oracle Corporation Japan, all rights reserved.

スライド タイトルなし

5-3- 応統合開発環境に関する知識 1 独立行政法人情報処理推進機構

SinfonexIDaaS機能概要書

(Microsoft PowerPoint - ClickFramework.ppt [\214\335\212\267\203\202\201[\203h])

スライド 1

受講を行うための前提知識 PC の基本操作ができること 座学 コーディング実習 受講講座の名称 9 日間 67:30 システムエンジニア向け IT 基礎 4/8/( 月 ) IT 技術者に共通する基本的な知識の習得を目標とします コンピュータ基礎では コンピュータの仕組みやコンピュータで扱う数値や単

IBM i ユーザーの課題 モバイルや IOT に対応した新しい開発案件への対応 RPG COBOL など既存アプリのメンテナンス 要員の確保 属人化しない運用 管理体制 2

Spring Frameworkに対するオラクルのサポート

Rmenuフレームワーク

Microsoft PowerPoint - JavaFesta.ppt

WebアプリケーションサーバJBoss入門

WEBシステムのセキュリティ技術

WebOTXマニュアル


S2Pradoの紹介

Oracle SQL Developer Data Modeler

ObjectPartner Pro

富士通Interstage Application Server V10でのOracle Business Intelligence の動作検証

Oracle Cloud Adapter for Oracle RightNow Cloud Service

PowerPoint Presentation

Seasar.NET入門

Microsoft PowerPoint _札幌_講演資料_ver1.3.ppt

ミガロ.製品 最新情報

スライド 1

Web Performer V2.0 カタログ

PowerPoint Presentation

JSFからのTeeda

スライド 1

intra-mart Accel Platform

JB_weblogic_guide.indd

Jude を DSL エディタとして使う -Jude API 活用法 年 11 月 14 日稚内北星学園大学東京サテライト校浅海智晴 本日のテーマ Why Jude API What Jude API How Jude API 1

ORACLE FUSION MIDDLEWARE Tech Topic Meeting

PowerPoint Presentation

WebOTXマニュアル

目次 はじめに 4 概要 4 背景 4 対象 5 スケジュール 5 目標点 6 使用機材 6 第 1 章 C# 言語 7 C# 言語の歴史 7 基本構文 8 C 言語との違い 9 Java 言語との違い 10.Netフレームワーク 10 開発資料 10 第 2 章 Mono 11 Monoの歴史 1

intra-mart Accel Platform

<4D F736F F D208DCC91F088C48C8F955D89BF8F915F8DA196E5504A>

Java Pet Store 2.0 を WebOTX 上で 動作させる方法 2008 年 9 月 初版 NEC 第二システムソフトウェア事業部 0

サーブレット (Servlet) とは Web サーバ側で動作する Java プログラム 通常はapache 等のバックグラウンドで動作する Servletコンテナ上にアプリケーションを配置 代表的な Servlet コンテナ Apache Tomcat WebLogic WebSphere Gla

PowerPoint Presentation

think9i Oracle Internet File System i を使用した ソフトウェア開発手法 日本オラクル株式会社製品本部システム製品マーケティング部 Copyright 2001 Oracle Corporation Japan. All Rights Reserved.

Java EE 7 アプリケーション設計ガイド - JSF(JavaServer Faces) 2.2 入門編

Oracle SOA Suite 11gコンポジットに対するSOASchedulerの構成

Webシステム授業資料

Oracle JDeveloperおよびOracle ADF Statement of Direction

Oracle Warehouse Builder: 製品ロードマップ

デザインパターン第一章「生成《


intra-mart WebPlatform/AppFramework

メディプロ1 Javaサーブレット補足資料.ppt

Windowsユーザでも 手軽に作れるiPhoneアプリ

スキル領域 職種 : ソフトウェアデベロップメント スキル領域と SWD 経済産業省, 独立行政法人情報処理推進機構

PowerPoint プレゼンテーション

Microsoft PowerPoint - 配布用資料.ppt

1 検証概要 目的及びテスト方法 1.1 検証概要 Micro Focus Server Express 5.1 J の Enterprise Server が提供する J2EE Connector 機能は 多くの J2EE 準拠アプリケーションサーバーについて動作検証がなされています 本報告書は

— intra-mart Accel Platform セットアップガイド (WebSphere編)   第7版  

1. 検証概要 目的及びテスト方法 1.1 検証概要 Micro Focus Server Express 5.1 J の Enterprise Server が提供する J2EE Connector 機能は JCA 仕様準拠のコンテナとして多くの J2EE 準拠アプリケーションサーバーについて動作

使用する前に

intra-mart im-JavaEE Framework

IBM Cloud Social Visual Guidelines

Oracle Database 12c

(Microsoft Word - \225\361\215\220\217\221_\215K.doc)

Rmenuフレームワーク

JACi400のご紹介~RPGとHTMLで簡単Web化~

Oracle Business Rules

VVB6システムからSeasar2を用いたWebシステムへの移植

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

技術レポート 1)QuiX 端末認証と HP IceWall SSO の連携 2)QuiX 端末認証と XenApp の連携 3)QuiX 端末認証 RADIUS オプションと APRESIA の連携 Ver 1.1 Copyright (C) 2012 Base Technology, Inc.

PowerPoint Presentation

HIGIS 3/プレゼンテーション資料/J_GrayA.ppt

Javaの作成の前に

untitled

intra-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド   初版  

chapter1 Web デザインへのアプローチ chapter1 Web デザインへのアプローチ 1-1 本書の構成 Web サイト制作の流れ 本書の構成と内容 1-2 Web サイト制作業界の人材像 Web サイト制作に必要な職掌と役割 各職掌の役

20th Embarcadero Developer Camp

untitled

WebOTXマニュアル

目的 概要 全体像 概念図 用語の定義 用語 説明 用語 説明 用語 説明 用語 説明 参考資料

WAS V9 アナウンスメント・セミナー資料

Global Portal製品概要説明

Oracle Access ManagerとOracle Identity Managerの同時配置


Transcription:

三菱 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