RichFaces: обзор

4,613 views

Published on

Basic review of RichFaces JSF framework for Java-based apps.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
4,613
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
63
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

RichFaces: обзор

  1. 1. СОВРЕМЕННЫЕ ТЕНДЕНЦИИ В JAVA- ТЕХНОЛОГИЯХ : JBOSS RICHFACES FRAMEWORK Avlochinskaya Tatyana Software Engineer Exadel Inc. [email_address]
  2. 2. ВСТУПЛЕНИЕ <ul><li>RichFaces – фреймворк для создания графических интерфейсов </li></ul><ul><li>Проблема красивых интерфейсов: красиво, быстро работает, недорого – выберите любые 2. </li></ul><ul><li>Jboss ( Red Hat) – спонсор, компания Exadel – разработчик </li></ul><ul><li>Open Source проект, лицензия LGPL </li></ul>
  3. 3. СОДЕРЖАНИЕ <ul><li>Обзор технологий Ajax, JSF </li></ul><ul><li>Ajax + JSF = A4J </li></ul><ul><li>RichFaces </li></ul><ul><li>Примеры </li></ul><ul><li>Создание JSF- компонента </li></ul><ul><li>Сравнение RichFaces с аналогами </li></ul><ul><li>Полезные ресурсы </li></ul>
  4. 4. ОБЗОР ТЕХНОЛОГИЙ <ul><ul><li>Ajax </li></ul></ul><ul><ul><li>Java Server Faces </li></ul></ul>
  5. 5. AJAX <ul><li>Подход к построению интерактивных интерфейсов веб-приложений </li></ul><ul><ul><li>Асинхронный режим выполнения запросов к серверу и обновления данных на странице </li></ul></ul><ul><ul><li>Преимущества: </li></ul></ul><ul><ul><li>Экономия трафика </li></ul></ul><ul><ul><li>Уменьшение нагрузки на сервер </li></ul></ul><ul><ul><li>Ускорение работы интерфейса </li></ul></ul>
  6. 6. AJAX : МОДЕЛЬ
  7. 7. AJAX : МОДЕЛЬ
  8. 8. JAVA SERVER FACES <ul><li>Технология построения J2EE веб-приложений </li></ul><ul><li>Спецификация в составе J2EE </li></ul><ul><li>Построение интерфейса из компонент </li></ul><ul><li>Компоненты: </li></ul><ul><ul><li>сохраняют состояние </li></ul></ul><ul><ul><li>имеют стандартизованный жизненный цикл </li></ul></ul><ul><ul><li>свойства подставляются из Backing Bean </li></ul></ul>
  9. 9. JAVA SERVER FACES : КОМПОНЕНТЫ Список компонентов и примеры использования: http://www.exadel.com/tutorial/jsf/jsftags-guide.html JSF: Rendered Component: HTML:
  10. 10. JAVA SERVER FACES: ДЕРЕВО КОМПОНЕНТ
  11. 11. JAVA SERVER FACES: ЖИЗНЕННЫЙ Ц ИКЛ JSF ЗАПРОСА <ul><li>Поиск или создание компонентного дерева представления. </li></ul><ul><li>Обновление и установка значений компонент, с применением соответствующих конвертеров. </li></ul><ul><li>Проверка корректности значений. Генерация сообщений об ошибках. </li></ul><ul><li>Обновление модели, связанной с компонентами. </li></ul><ul><li>Вызов зарегистрированных обработчиков событий и выбор представления для отображения. </li></ul><ul><li>Создание и отображение нового представления. </li></ul>
  12. 12. AJAX + JSF = A4J
  13. 13. A4J: AJAX SUPPORT КОМПОНЕНТ <ul><li>Добавление Ajax функциональности к стандартным компонентам. </li></ul><ul><li>Выполнение запроса по любым клиентским событиям , определенным на компоненте </li></ul>
  14. 14. A4J: ТОЧКИ ВНЕДРЕНИЯ AJAX В JSF <ul><li>Restore View </li></ul><ul><li>Восстановление представления. На этом этапе разработанный фильтр , уменьшает дерево представления до ограниченного разработчиком. </li></ul><ul><li>Invoke Application </li></ul><ul><li>После выполнения бизнес - логики разработчика в объекте Ajax Context сохраняется список зон , подлежащих обновлению . </li></ul><ul><li>Render Response </li></ul><ul><li>Восстановление частей дерева для передачи на клиент . </li></ul>
  15. 15. A4J: ВОЗМОЖНОСТИ КОМПОНЕНТ AJAX ACTION <ul><li>Оптимизация генерации и обработки запросов </li></ul><ul><ul><li>eventQueue </li></ul></ul><ul><ul><li>requestDelay </li></ul></ul><ul><ul><li>timeout </li></ul></ul><ul><ul><li>ignoreDupResponses </li></ul></ul><ul><li>Ограничение серверной обработки запроса </li></ul><ul><ul><li>ajaxSingle </li></ul></ul><ul><ul><li>bypassUpdates </li></ul></ul><ul><li>Обновление после запроса </li></ul><ul><ul><li>reRender </li></ul></ul><ul><ul><li>limitToList </li></ul></ul>
  16. 16. A4J: ПРЕИМУЩЕСТВА <ul><li>Использование Ajax в JSF приложении без необходимости применения Java Script конечным разработчиком </li></ul><ul><li>Внесение Ajax функциональности в приложение без необходимости изменения начального кода страниц </li></ul><ul><li>Прохождение Ajax запросов в рамках стандарта жизненного цикла JSF </li></ul>
  17. 17. RICHFACES <ul><ul><li>Общие сведения </li></ul></ul><ul><ul><li>Визуальные компоненты </li></ul></ul>
  18. 18. RICHFACES : ОБЩИЕ СВЕДЕНИЯ <ul><li>добавление Ajax функциональности в любое готовое JSF приложение </li></ul><ul><li>набор готовых компонентов с богатой функциональностью </li></ul><ul><li>Применение скинов для компонент </li></ul><ul><li>Набор инструментов для разработки компонент ( Component Development Kit ) </li></ul>Ajax-фреймворк с библиотекой визуальных компонентов на основе JSF . Возможности:
  19. 19. RICHFACES : ОБЩИЕ СВЕДЕНИЯ: ПРЕИМУЩЕСТВА <ul><li>Разработка насыщенного веб-интерфейса с приятным внешним видом </li></ul><ul><li>… и Ajax функциональностью </li></ul><ul><li>Кроссбраузерность </li></ul><ul><li>Не нужна ручная верстка на HTML+CSS, свои скрипты на Javascript </li></ul><ul><li>Поддержка скриптовых библиотек: jQuery, Prototype, script.aculo.us </li></ul><ul><li>Безпроблемная интеграция с Spring, Jboss Seam </li></ul>
  20. 20. RICHFACES : КОМПОНЕНТЫ <ul><li>Всего — более 60 компонентов. </li></ul><ul><li>Префиксы a4j:, ajax: — невизуальные компоненты, которые добавляют Ajax- функциональность в JSF </li></ul><ul><li>Префиксы rich:, richfaces: — GUI- компоненты с приятным внешним видом и skinnability. </li></ul>
  21. 21. RICHFACES : КОМПОНЕНТЫ <ul><li>Интересные примеры: </li></ul><ul><ul><li>ajaxForm </li></ul></ul><ul><ul><li>queue </li></ul></ul><ul><ul><li>ajaxValidator  </li></ul></ul><ul><ul><li>dataTable, dataGrid </li></ul></ul><ul><ul><li>dragSupport, dropSupport </li></ul></ul><ul><ul><li>contextMenu, dropDownMenu </li></ul></ul><ul><ul><li>tree </li></ul></ul><ul><ul><li>modalPanel, panelBar, progressBar, tabPanel, toolBar </li></ul></ul><ul><ul><li>calendar, colorPicker, comboBox, editor, fileUpload, inplaceInput </li></ul></ul><ul><ul><li>listShuttle  </li></ul></ul><ul><ul><li>effect, hotKey, layoutPanel  </li></ul></ul>
  22. 22. ПРИМЕРЫ <ul><ul><li>LiveDemo </li></ul></ul><ul><ul><li>PhotoAlbum </li></ul></ul>
  23. 23. ПРИМЕРЫ: LIVEDEMO <ul><li>http://livedemo.exadel.com/richfaces-demo/richfaces/welcome.jsf </li></ul>
  24. 24. ПРИМЕРЫ: PHOTOALBUM <ul><li>http://livedemo.exadel.com/photoalbum/ </li></ul><ul><li>http://download.jboss.com/jboss-richfaces/photoalbum-ear-3.3.1.GA.ear </li></ul>
  25. 25. СОЗДАНИЕ КОМПОНЕНТА <ul><ul><li>JSF </li></ul></ul><ul><ul><li>C помощью Component Development Kit </li></ul></ul>
  26. 26. СОЗДАНИЕ КОМПОНЕНТА: JSF <ul><li>Громоздкий занудный процесс: чтобы создать примитивный компонент, нужно написать: </li></ul><ul><ul><li>UIComponent class, </li></ul></ul><ul><ul><li>Renderer class, </li></ul></ul><ul><ul><li>Tag class </li></ul></ul><ul><ul><li>faces configuration file (faces-config.xml). </li></ul></ul><ul><ul><li>*.taglib.xml (для facelets -среды ). </li></ul></ul>
  27. 27. СОЗДАНИЕ КОМПОНЕНТА: JSF <ul><li>Чтобы создать полноценный компонент, который не только рисуется, но и что-то делает, нужны: </li></ul><ul><ul><li>ListenerTagHandler class, </li></ul></ul><ul><ul><li>Интерфейс listener’a, </li></ul></ul><ul><ul><li>Методы в этом интерфейсе для обработки нужных событий </li></ul></ul><ul><ul><li>Классы событий </li></ul></ul><ul><ul><li>Классы для различных </li></ul></ul><ul><ul><li>типов render еров . </li></ul></ul>
  28. 28. СОЗДАНИЕ КОМПОНЕНТА: CDK <ul><li>Чтобы создать полноценный компонент нужны: </li></ul><ul><ul><li>Maven </li></ul></ul><ul><ul><li>mvn archetype:create -DarchetypeGroupId=org.richfaces.cdk -DarchetypeArtifactId=maven-archetype-jsf-component -DarchetypeVersion=3.3.1.GA -DartifactId=inputDate </li></ul></ul>
  29. 29. СОЗДАНИЕ КОМПОНЕНТА: CDK <ul><li>Подробное руководство: </li></ul><ul><ul><li>http://www.jboss.org/file-access/default/members/jbossrichfaces/freezone/docs/cdkguide/en/pdf/CDK_Developer_Guide.pdf </li></ul></ul>
  30. 30. СРАВНЕНИЕ С АНАЛОГАМИ <ul><ul><li>JSF- фреймворки </li></ul></ul><ul><ul><li>Не- JSF </li></ul></ul>
  31. 31. СРАВНЕНИЕ С АНАЛОГАМИ: JSF- ФРЕЙМВОРКИ <ul><li>ICEfaces — меньше компонентов, не все поддерживают Ajax </li></ul><ul><li>ZK — не самый приятный внешний вид компонентов, не поддерживается skinning </li></ul><ul><li>MyFaces/Tomahawk — мало компонентов, плохая документация </li></ul><ul><li>Другие: Tobago , Woodstock , Trinidad , RCFaces , Netadvantage , WebGalileoFaces , QuipuKit </li></ul>
  32. 32. СРАВНЕНИЕ С АНАЛОГАМИ: НЕ- JSF <ul><ul><li>Лицензия на использование Ext в коммерческих целях стоит от 200$ </li></ul></ul><ul><ul><li>Огромный объем (порядка 500 кб) </li></ul></ul><ul><ul><li>Обширная, но мало понятная документация </li></ul></ul><ul><ul><li>Нужно разбираться с Javascript, отлаживать в случае проблем — неудобно и сложно </li></ul></ul>
  33. 33. СРАВНЕНИЕ С АНАЛОГАМИ: НЕ- JSF <ul><li>GWT </li></ul><ul><ul><li>Мало компонентов </li></ul></ul><ul><ul><li>Не продумана система расширения существующих компонентов — есть final компоненты </li></ul></ul><ul><ul><li>очень медленный цикл « change-deploy-test » </li></ul></ul><ul><li>Flex </li></ul><ul><ul><li>Дополнительная сложность — интеграция Flex- интерфейса с Java- бэкэндом </li></ul></ul><ul><ul><li>Время на изучение новой технологии </li></ul></ul><ul><ul><li>Среда для разработки (FlashBuilder) — платная </li></ul></ul>
  34. 34. ПОЛЕЗНЫЕ СВЕДЕНИЯ <ul><ul><li>Совместимость </li></ul></ul><ul><ul><li>How Do I? </li></ul></ul><ul><ul><li>Ссылки </li></ul></ul>
  35. 35. ПОЛЕЗНЫЕ СВЕДЕНИЯ: СОВМЕСТИМОСТЬ <ul><li>Версии Java </li></ul><ul><li>JDK 1.5 и выше </li></ul><ul><li>Имплементации JSF и фреймворки </li></ul><ul><li>Sun JSF-RI - 1.2_12 </li></ul><ul><li>MyFaces 1.2.5 </li></ul><ul><li>Facelets 1.1.1 - 1.2 </li></ul><ul><li>Seam 1.2. - 2.1.0 </li></ul><ul><li>Браузеры </li></ul><ul><li>Internet Explorer 6.0 - 8.0 </li></ul><ul><li>Firefox 2.0 - 3.0 </li></ul><ul><li>Opera 8.5 - 9.5 </li></ul><ul><li>Safari 3.0 </li></ul><ul><li>Google Chrome </li></ul><ul><li>Сервера и </li></ul><ul><li>контейнеры </li></ul><ul><li>сервлетов </li></ul><ul><li>Apache Tomcat 5.5 - 6.0 </li></ul><ul><li>BEA WebLogic 9.1 - 10.0 </li></ul><ul><li>Resin 3.1 </li></ul><ul><li>Jetty 6.1.x </li></ul><ul><li>Sun Application Server 9 (J2EE 1.5) </li></ul><ul><li>Glassfish (J2EE 5) </li></ul><ul><li>JBoss 4.2.x - 5 </li></ul><ul><li>Websphere 7.0. и выше </li></ul><ul><li>Geronimo 2.0 и выше </li></ul>
  36. 36. ПОЛЕЗНЫЕ СВЕДЕНИЯ : КАК БЫ МНЕ... <ul><li>... подключить компоненты RichFaces к имеющемуся JSF- приложению </li></ul><ul><li><dependency> <groupId>org.richfaces.ui</groupId> <artifactId>richfaces-ui</artifactId> <version>3.3. 1 </version> </dependency> </li></ul><ul><li>...подправить компоненты и собрать RF самостоятельно из исходников (с помощью Maven) </li></ul><ul><li>http://www.jboss.org/community/wiki/HowToBuildRichFacesSnapshotManually </li></ul><ul><li>...задать вопрос разработчикам </li></ul><ul><li>http://www.jboss.org/index.html?module=bb&op=viewforum&f=261 </li></ul><ul><li>...зарепортить баг </li></ul><ul><li>https://jira.jboss.org/jira/browse/RF </li></ul><ul><li>...написать свой компонент ( CDK) </li></ul><ul><li>http://www.jboss.org/community/wiki/CDKGettingStarted </li></ul>
  37. 37. <ul><li>RichFaces on Jboss page: </li></ul><ul><ul><li>http://www.jboss.org/jbossrichfaces/ </li></ul></ul><ul><li>RichFaces документация, форум и wiki: </li></ul><ul><ul><li>http://www.jboss.org/jbossrichfaces/docs/index.html </li></ul></ul><ul><li>RichFaces downloads (файлы для загрузки) : </li></ul><ul><ul><li>http://www.jboss.org/jbossrichfaces/downloads/ </li></ul></ul>ПОЛЕЗНЫЕ СВЕДЕНИЯ: ССЫЛКИ
  38. 38. ВОПРОСЫ <ul><ul><li>[email_address] </li></ul></ul>

×