Upload
tatiana-aulachynskaya
View
4.222
Download
0
Embed Size (px)
DESCRIPTION
Basic review of RichFaces JSF framework for Java-based apps.
Citation preview
СОВРЕМЕННЫЕ ТЕНДЕНЦИИ В JAVA-ТЕХНОЛОГИЯХ:
JBOSS RICHFACES FRAMEWORKAvlochinskaya Tatyana
Software Engineer
Exadel Inc.
ВСТУПЛЕНИЕ 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 ЗАПРОСА
1. Поиск или создание компонентного дерева представления.
2. Обновление и установка значений компонент, с применением соответствующих конвертеров.
3. Проверка корректности значений. Генерация сообщений об ошибках.
4. Обновление модели, связанной с компонентами.
5. Вызов зарегистрированных обработчиков событий и выбор представления для отображения.
6. Создание и отображение нового представления.
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_12MyFaces 1.2.5Facelets 1.1.1 - 1.2Seam 1.2. - 2.1.0
БраузерыInternet Explorer 6.0 - 8.0Firefox 2.0 - 3.0Opera 8.5 - 9.5Safari 3.0Google Chrome
Сервера иконтейнеры сервлетовApache Tomcat 5.5 - 6.0BEA WebLogic 9.1 - 10.0Resin 3.1Jetty 6.1.xSun Application Server 9 (J2EE 1.5)Glassfish (J2EE 5)JBoss 4.2.x - 5Websphere 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 protected]