apache myfaces
TRANSCRIPT
2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 1 -
Apache Myfaces
2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 2 -
Apache Myfaces とは?
• JSF( Java Server Faces)の実装の一つ– SUNのリファレンス実装(現在は 2.0)– Teeda(日本発 JSF実装)、Mojarra ・・・ などがある。
• Apache Myfaces 独自の拡張機能– Tomahawk (各種拡張機能の集約)– 多数のサブプロジェクト
2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 3 -
JSFとは?
• JSFは「仕様」、 SUNが提唱– JSFは仕様と実装が分離されている
• Java標準の UI開発フレームワーク– JCP( Java Community Process)で仕様が策定– JSF仕様は Java EE仕様の一部
• MVCモデル• 進んだコンポーネント化
– HTML(XHTML)からコード部分を完全に排除
2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 4 -
JSFの特徴
• カスタムタグを使って簡単にフォーム入力欄が作れる( UIコンポーネント)
• 入力値が適正な範囲かどうかなどチェックが簡単にできる(バリデーション機能)
• 入力値の型変換が簡単にできる(コンバータ機能)• 入力値をプログラミング無しに JavaBeansに格納できる(バインディング機能)
• XMLファイルで簡単にページ移動を設定できる(ナビゲーション機能)
2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 5 -
Web開発について
• 従来は、 HTMLとプログラムの混在• 現在の主流はMVCモデルでの実装• 各種言語もMVCモデルをサポートするのが一般的
2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 6 -
MVCモデル
• Model そのアプリケーションが扱う領域のデータと手続き(ビジネスロジック - ショッピングの合計
額や送料を計算するなど)を表現する要素である。また、データの変更を viewに通知するのもmodelの責任である。多くのアプリケーションではデータの格納に永続的な記憶の仕組み(データベースなど)が使われている。MVCの概念では、データの( UI以外の)入出力は取り扱わないので、データアクセスも本来MVCの概念の範疇を超えるものではあるが、敢えていえばmodelの中に隠蔽されると考えられる。
• Viewmodelのデータを取り出してユーザが見るのに適した形で表示する要素である。すなわち UIへの出力を担当する。例えば、ウェブアプリケーションでは HTML文書を生成して動的にデータを表示するためのコードなどにあたる。
• Controllerユーザの入力(通常イベントとして通知される)に対して応答し、それを処理する要素である。すなわち UIからの入力を担当する。modelと viewに変更を引き起こす場合もあるが、直接に描画を行ったり、modelの内部データを直接操作したりはしない。
(出展:Wikipedia の MVCモデル)
2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 7 -
MVCモデル(図)
入力用ページ
出力用ページ
サーブレット ・ データチェック ・ データ変換 ・ ページ移動
ビーンズ ・ データ保持 ・ データ処理
View Controller
Model
2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 8 -
要は何ができるか?
• Java を使ったWebアプリケーションを簡単に作ることができる。– すべてがタグで記述可能
• デザインツールを利用しやすい• デザイナーと開発者が分業可能
• ビューが分離されているので異なるビューに対応可能– 例:スマートフォンや携帯電話
2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 9 -
MVCモデルの実際
• (ホワイトボードで説明)
2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 10 -
Struts から JSFへ?
• Strutsは Craig R McClanahan氏によって最初に開発され、 2000年 5月に Apache Software Foundationに寄贈
• JSFのスペックリードが Strutsの開発者である Craig McClanahan
2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 11 -
Struts vs. JSF (その 1)
• Controller重視の Struts– 共通処理を担う Controllerの提供を目的として開発されたフレームワーク– 共通処理を行うコンポーネントをフレームワークが提供し、画面とビジネスロジックなどの固有の処理を開発者が実装し、各コンポーネントの連携や画面遷移は設定ファイルで定義
• UI( View)重視の JSF– JSPによる UI(ユーザーインタフェース)実装、テスト、メンテナンス効率の低さが浮き彫りに
– 「 UIコンポーネント」という概念を導入し、「ボタン」「テキストボックス」「表」「ツリー」など、画面を構成する要素を部品として拡張、再利用可能なアーキテクチャを採用
– UIコンポーネントが、 Strutsのカスタムタグに比べて非常に高機能– UIコンポーネントは容易に拡張
2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 12 -
Struts vs. JSF (その 2)
• JSFアプリケーションの実装では Servlet APIを使わない– コーディングの敷居が下がる。– テストが容易である。
• Strutsは画面遷移などの設定が複雑– JSF では 2.0 でさらに容易に
• バッキングビーンの戻り値で直接画面遷移• JSF 2.0 では、 Ajaxに対応• Apache Strutsプロジェクトによる Struts-Facesというものも存在
2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 13 -
JSFの具体例(1)
currency.xhtml<head><title>YEN to DOLLER</title></head><body><form jsfc="h:form"> Plrase input Japanese Yen: <h:inputText id="number" value="#{YenToDoller.yen}"/> <h:commandButton value="calculate"/>
<p>Doller is <h:outputText id="output" value="#{YenToDoller.doller}"/>Doller. </p></form></body></html>
2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 14 -
JSFの具体例(2)
YenToDoller.javapublic class YenToDoller implements Serializable{ int yen; int doller; public YenToDoller(){} public int getYen(){ return yen; } public void setYen(int yen){ this.yen=yen; } public int getDoller(){ doller=yen/110; return doller; }}
2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 15 -
JSFの進化
• JSF1.0から JSF2.0へ– タグの書き方
例: <h:form> → <form jsfc="h:form">
– Ajaxのサポート– 簡単な画面遷移の定義
2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 16 -
最終的に
• JBoss Seam へ・・・・・・・・– EJB3.0 + JPA + JSF
• O/Rマッパーなどを含む統合フレームワーク
2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 17 -
Apache Tomahawk
• http://www.irian.at/myfacesexamples/home.jsf
2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 18 -
サンプル
• 7年ぶりぐらいのプログラミング• Amazon EC2 を借りてみた。(高い)
– ServerMan@VPSの方がよかった・・・。• (実際のサンプル説明)
2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 19 -
まとめ
• MVCモデルを使おう• O/Rマッパーもあると便利• タグを覚えるのがちょっと面倒• セッター・ゲッターなどを書くのが面倒なので開発環境を使うのがよいかも
• Tomahawkなど駆使するともっと便利かも