apache myfaces

19
2010/12/21 Copyright © Infoscience Corporation. All rights reserved. - 1 - Apache Myfaces

Upload: -

Post on 11-Jul-2015

4.923 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Apache myfaces

2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 1 -

Apache Myfaces

Page 2: 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 (各種拡張機能の集約)– 多数のサブプロジェクト

Page 3: Apache myfaces

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)からコード部分を完全に排除

Page 4: Apache myfaces

2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 4 -

JSFの特徴

• カスタムタグを使って簡単にフォーム入力欄が作れる( UIコンポーネント)

• 入力値が適正な範囲かどうかなどチェックが簡単にできる(バリデーション機能)

• 入力値の型変換が簡単にできる(コンバータ機能)• 入力値をプログラミング無しに JavaBeansに格納できる(バインディング機能)

• XMLファイルで簡単にページ移動を設定できる(ナビゲーション機能)

Page 5: Apache myfaces

2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 5 -

Web開発について

• 従来は、 HTMLとプログラムの混在• 現在の主流はMVCモデルでの実装• 各種言語もMVCモデルをサポートするのが一般的

Page 6: Apache myfaces

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モデル)

Page 7: Apache myfaces

2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 7 -

MVCモデル(図)

入力用ページ

出力用ページ

サーブレット ・ データチェック ・ データ変換 ・ ページ移動

ビーンズ ・ データ保持 ・ データ処理

View Controller

Model

Page 8: Apache myfaces

2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 8 -

要は何ができるか?

• Java を使ったWebアプリケーションを簡単に作ることができる。– すべてがタグで記述可能

• デザインツールを利用しやすい• デザイナーと開発者が分業可能

• ビューが分離されているので異なるビューに対応可能– 例:スマートフォンや携帯電話

Page 9: Apache myfaces

2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 9 -

MVCモデルの実際

• (ホワイトボードで説明)

Page 10: Apache myfaces

2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 10 -

Struts から JSFへ?

• Strutsは Craig R McClanahan氏によって最初に開発され、 2000年 5月に Apache Software Foundationに寄贈

• JSFのスペックリードが Strutsの開発者である Craig McClanahan

Page 11: Apache myfaces

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コンポーネントは容易に拡張

Page 12: Apache myfaces

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というものも存在

Page 13: Apache myfaces

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>

Page 14: Apache myfaces

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; }}

Page 15: Apache myfaces

2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 15 -

JSFの進化

• JSF1.0から JSF2.0へ– タグの書き方

例: <h:form> → <form jsfc="h:form">

– Ajaxのサポート– 簡単な画面遷移の定義

Page 16: Apache myfaces

2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 16 -

最終的に

• JBoss Seam へ・・・・・・・・– EJB3.0 + JPA + JSF

• O/Rマッパーなどを含む統合フレームワーク

Page 17: Apache myfaces

2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 17 -

Apache Tomahawk

• http://www.irian.at/myfacesexamples/home.jsf

Page 18: Apache myfaces

2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 18 -

サンプル

• 7年ぶりぐらいのプログラミング• Amazon EC2 を借りてみた。(高い)

– ServerMan@VPSの方がよかった・・・。• (実際のサンプル説明)

Page 19: Apache myfaces

2010/12/21Copyright © Infoscience Corporation. All rights reserved. - 19 -

まとめ

• MVCモデルを使おう• O/Rマッパーもあると便利• タグを覚えるのがちょっと面倒• セッター・ゲッターなどを書くのが面倒なので開発環境を使うのがよいかも

• Tomahawkなど駆使するともっと便利かも