JavaServer Faces
(JSF) — это Java спецификация для построения компонентно-ориентированных пользовательских интерфейсов для веб-приложений, написанный на
Java
. Он служит для того, чтобы облегчать разработку пользовательских интерфейсов для
Java EE
-приложений. В отличие от прочих
MVC
-фреймворков, которые управляются запросами, подход JSF основывается на использовании компонентов. Состояние компонентов пользовательского интерфейса сохраняется, когда пользователь запрашивает новую страницу и затем восстанавливается, если запрос повторяется. Для отображения данных обычно используется
JSP
,
Facelets
, но JSF можно приспособить и под другие технологии, например
XUL
.
Технология
JavaServer Faces
включает:
Набор
API
для представления компонентов пользовательского интерфейса (
UI
) и управления их состоянием, обработкой событий и валидацией вводимой информации, определения навигации, а также поддержку интернационализации (
i18n
) и доступности (accessibility).
Специальная библиотека JSP тегов для выражения интерфейса JSF на JSP странице. В JSF 2.0 в качестве обработчика представления используется технология Facelets которая пришла на замену JSP.
Созданная быть гибкой, технология JavaServer Faces усиливает существующие стандартные концепции пользовательского интерфейса (UI) и концепции Web-уровня без привязки разработчика к конкретному языку разметки, протоколу или клиентскому устройству. Классы компонентов пользовательского интерфейса, поставляемые вместе с технологией JavaServer Faces, содержат функциональность компонент, а не специфичное для клиента отображение, открывая тем самым возможность рендеринга JSF-компонент на различных клиентских устройствах. Совмещая функциональность компонент интерфейса пользователя со специальными рендерерами, разработчики могут конструировать специальные теги для заданного клиентского устройства. В качестве удобства технология JSF предоставляет специфичный рендерер и специальную библиотеку JSP-тегов для
рендеринга
на
HTML
-клиенте, позволяя разработчикам приложений на J2EE платформе использовать технологию JSF в своих приложениях.
Версии JSF
JSF 1.0 (11.03.2004) — первоначальный выпуск по спецификации JSF
JSF 1.1 (27.05.2004) — исправление ошибок. Существенных изменений нет.
JSF 1.2 (11.05.2006) — исправление ошибок. Существенных изменений нет.
улучшения дают временное решение для проблемы спутанного контента
JSF 2.0 (19.10.2009) — Основной пересмотр спецификации с учётом опыта разработки. Объединение с Java EE 6.
JSF 2.1 (22.11.2010) — Технический выпуск для поддержки JSF 2.0. Очень незначительное количество изменений по спецификации.
JSF 2.2 (21.05.2013) — Представлены новые концепции, такие как состояние "без состояния", поток страниц и возможность создания переносимых ресурсных контрактов.
JSF 2.3 (28.03.2017) — Основные возможности: поиск выражений,
URL
без расширений, проверка bean-компонентов для полных классов, push-сообщения с использованием
WebSocket
, улучшенная интеграция с CDI.
Критика
JSF версий 1.* фактически не предоставлял высокоуровневой поддержки для обработки
GET-запросов
, что существенно усложняло разработку приложений, базирующихся на
REST
-принципах. Во второй версии спецификации этот недостаток практически полностью устранён.
Разработчик языка Java,
Джеймс Гослинг
, охарактеризовал технологию JSP, лежащую в основе JSF, как «проект-клон Microsoft
ASP
, который был создан, только чтобы продемонстрировать насколько сама подобная идея плоха; но модель почему-то отказалась умирать»
.
Дэвид М. Гери, Кей С. Хорстманн.
JavaServer Faces. Библиотека профессионала = JavaServer Faces. CORE. — 3-е изд. —
М.
: Издательский дом "Вильямс", 2011. — 544 с. —
ISBN 978-5-8459-1706-5
, 978-0-13-701289-3.