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

RichFaces: обзор

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