Apache myfaces

6,236 views

Published on

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

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
6,236
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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>

×