Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Apache myfaces

8,407 views

Published on

第18回座談会 Apache MyFaces 発表資料

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Apache myfaces

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

×