Java Server Faces ( JSF , ранее JavaServer Faces) является Java - спецификация для построения компонентов -На пользовательских интерфейсов для веб - приложений [1] и была оформлена в качестве стандарта через Java Community Process , являющейся частью Java Platform, Enterprise Edition . Это также веб-платформа MVC, которая упрощает создание пользовательских интерфейсов (UI) для серверных приложений за счет использования повторно используемых компонентов пользовательского интерфейса на странице. [2]
![]() | |
Автор (ы) оригинала | Sun Microsystems |
---|---|
Разработчики) | Фонд Затмения |
Стабильный выпуск | 2.3.2 / 20 августа 2019 г . |
Предварительный выпуск | 3.0.0 RC1 / 7 марта 2020 г . |
Репозиторий | ![]() |
Написано в | Ява |
Тип | Фреймворк веб-приложений |
Веб-сайт | jakarta ![]() |
JSF 2 использует Facelets в качестве системы шаблонов по умолчанию. Также могут использоваться другие технологии просмотра, такие как XUL или обычная Java [3] . Напротив, JSF 1.x использует JavaServer Pages (JSP) в качестве системы шаблонов по умолчанию.
История
В 2001 году в исходном запросе спецификации Java (JSR) для технологии, которая в конечном итоге стала JavaServer Faces, предлагалось разработать пакет с именем javax.servlet.ui
[4]
К июню 2001 года JavaWorld сообщит о разработке командой Эми Фаулер «API JavaServer Faces» (также известного как «Moonwalk») - «инфраструктуры приложения для создания пользовательских веб-интерфейсов». [5]
Последние разработки
Facelets (который был разработан специально для Java Server Faces) был принят в качестве официальной технологии просмотра для JSF 2.0. Это устраняет конфликты жизненного цикла, которые существовали с JSP, заставляя разработчиков Java использовать обходные пути. [6] Facelets позволяет легко создавать компоненты / теги с использованием разметки XML вместо кода Java, главной претензии к JSF 1.x.
Новые разработки JSF также обеспечивают широкий доступ к аннотациям Java 5, таким как @ManagedBean
, @ManagedProperty
и @FacesComponent
это устраняет необходимость faces-config.xml
во всех случаях, кроме расширения фреймворка. Навигация была упрощена, что устраняет необходимость в faces-config.xml
чехлах для навигации. Переходы между страницами могут быть вызваны просто путем передачи имени желаемого View / Facelet.
Добавление частичного сохранения состояния и обновлений DOM является частью встроенной стандартизированной поддержки Ajax .
Последний выпуск JSF имеет встроенную поддержку для обработки таких ресурсов, как изображения, CSS и Javascript, что позволяет включать артефакты в библиотеки компонентов, разделять их в файлы JAR или просто размещать в одном месте в веб-приложении. Это включает в себя логическое именование и управление версиями ресурсов.
JSF 2.0 также включает в себя ряд других изменений , таких как добавление поддержки событий, отдельные разработки, постановку и способы производства, аналогичные RAILS_ENV
в Рубине на рельсах , а также значительно расширяет стандартный набор компонентов.
Версии
- JSF 2.3 (2017-03-28) - Основные функции: выражения поиска, URL-адреса без расширений, проверка bean-компонентов для полных классов, push-коммуникация с использованием WebSocket , улучшенная интеграция с CDI. [7]
- JSF 2.2 (2013-05-21) - Введены новые концепции, такие как представления без сохранения состояния, поток страниц и возможность создавать переносимые контракты ресурсов. [8]
- JSF 2.1 (22.11.2010) - Техническая поддержка 2 JSF 2.0. Только очень небольшое количество изменений спецификации. [9] [10]
- JSF 2.0 (1 июля 2009 г.) - основной выпуск, обеспечивающий простоту использования, расширенные функциональные возможности и производительность. Совпадает с Java EE 6.
- JSF 1.2 (2006-05-11) - Множество улучшений основных систем и API. Совпадает с Java EE 5. Первоначальное внедрение в Java EE.
- JSF 1.1 (2004-05-27) - Выпуск с исправлением ошибок. Без изменений спецификации.
- JSF 1.0 (2004-03-11) - Выпущена начальная спецификация.
Как это работает
Основываясь на модели проектирования пользовательского интерфейса, управляемой компонентами , JavaServer Faces использует файлы XML, называемые шаблонами представлений или представлениями Facelets . В FacesServlet
обрабатывает запросы, загружает соответствующий шаблон вида, строит дерево компонентов, обрабатывают события и делают реакцию ( как правило , на языке HTML) клиент. Состояние компонентов пользовательского интерфейса и других объектов, представляющих интерес, сохраняется в конце каждого запроса в процессе, называемом stateSaving (примечание: transient true ), и восстанавливается при следующем создании этого представления. Либо клиентская, либо серверная сторона может сохранять объекты и состояния.
JSF и Ajax
JSF часто используется вместе с Ajax , техникой разработки полнофункциональных Интернет-приложений . Ajax - это комбинация методов и технологий веб-разработки, позволяющая создавать многофункциональные пользовательские интерфейсы. Компоненты пользовательского интерфейса в Mojarra ( эталонная реализация JSF [11] ) и Apache MyFaces изначально разрабатывались только для HTML, и Ajax нужно было добавлять через JavaScript. Однако это изменилось:
Поскольку JSF поддерживает несколько форматов вывода, компоненты с поддержкой Ajax могут быть легко добавлены для обогащения пользовательских интерфейсов на основе JSF. Спецификация JSF 2.0 обеспечивает встроенную поддержку Ajax путем стандартизации жизненного цикла запроса Ajax и предоставления простых интерфейсов разработки для событий Ajax, позволяя любому событию, инициированному клиентом, пройти надлежащую проверку, преобразование и, наконец, вызов метода перед возвратом результата. в браузер через обновление XML DOM.
JSF 2 включает поддержку постепенной деградации, когда в браузере отключен JavaScript .
Компоненты и фреймворки с поддержкой Ajax
Следующие компании и проекты предлагают фреймворки JSF на основе Ajax или библиотеки компонентов:
- Apache MyFaces - реализация JSF Apache Foundation с компонентами Ajax
- Backbase Enterprise Ajax - JSF Edition - фреймворк Ajax
- BootsFaces JSF Framework с открытым исходным кодом на основе Bootstrap
- IBM Notes - XPages
- ICEfaces - открытый исходный код, среда расширений Java JSF и богатые компоненты, Ajax без JavaScript
- JBoss RichFaces (производный от и заменяющий Ajax4jsf ) - компоненты JSF с поддержкой Ajax для макета, загрузки файлов, форм, входных данных и многих других функций. Срок его службы истек в июне 2016 года.
- OmniFaces - служебная библиотека JSF с открытым исходным кодом
- OpenFaces - фреймворк Ajax с компонентами JSF
- Oracle ADF сталкивается с богатым клиентом - платформа разработки приложений Oracle
- PrimeFaces - фреймворк Ajax с компонентами JSF
- Компоненты Sun Java BluePrints AJAX
- ZK - фреймворк Ajax с компонентами JSF
Критика
ThoughtWorks, 2014 г.
В своей публикации « Технологический радар» в январе 2014 г. компания ThoughtWorks написала: [12]
Мы по-прежнему видим, как команды сталкиваются с проблемами при использовании JSF - JavaServer Faces - и рекомендуем избегать этой технологии. Команды, похоже, выбирают JSF, потому что это стандарт JEE, не оценивая, подходит ли им модель программирования. Мы думаем, что JSF ошибочен, потому что он пытается абстрагироваться от HTML , CSS и HTTP , что в точности противоположно тому, что делают современные веб-фреймворки . JSF, как и веб-формы ASP.NET, пытается создать отслеживание состояния поверх протокола HTTP без отслеживания состояния и в конечном итоге вызывает целый ряд проблем, связанных с общим состоянием на стороне сервера. Мы знаем об улучшениях в JSF 2.0, но считаем, что эта модель в корне неверна. Мы рекомендуем командам использовать простые фреймворки, а также использовать и понимать веб-технологии, включая HTTP, HTML и CSS.
Опровержение
В феврале 2014 года Чагатай Живичи (руководитель PrimeFaces) ответил на критику ThoughtWorks в сообщении под названием « JSF - это не то, что вам сказали» . Чивичи утверждает, что улучшения в JSF с годами предлагают множество функций, которые охватывают современную веб-разработку, предоставляя возможность писать свои собственные JavaScript, HTML и CSS. Также относительно состояния, Чагатай написал: [13]
JSF - это структура с отслеживанием состояния по своей природе, а состояние упрощает разработку веб-приложений. Благодаря улучшенным методам управления состоянием, представленным в JSF 2.0+ (например, режим без сохранения состояния, частичное сохранение состояния), JSF также может масштабироваться.
DZone, 2014 г.
В статье «Почему следует избегать JSF», опубликованной в ноябре 2014 года на сайте DZone, Йенс Шаудер писал: [14]
Facelets, предпочтительная технология представления JSF, на первый взгляд выглядит как обычная технология создания шаблонов, такая как старый добрый JSP или Thymeleaf. Но если присмотреться, ужас становится очевидным. В том же месте, где вы структурируете свой HTML, вы также размещаете логику, какие части пользовательского интерфейса должны обновляться при действии. Явное нарушение принципа разделения интересов в моей книге. Еще лучше - немедленный атрибут, который меняет жизненный цикл на стороне сервера! А если этого недостаточно, он делает это по-разному, в зависимости от того, для какого тега вы его используете. Вы не можете придумать что-то подобное.
TheServerSide, 2016 г.
В феврале 2016 года веб-сайт корпоративного сообщества Java TheServerSide опубликовал статью, в которой не рекомендуется использовать JSF, использование которого может поставить под угрозу качество конечного продукта. В статье изложены пять причин: [15]
- Простые задачи становятся сложными;
- JSF не хватает гибкости;
- Кривая обучения крутая;
- Несовместимость со стандартными технологиями Java; а также
- Примитивная поддержка Ajax.
Рекомендации
- ^ Технология JavaServer Faces
- ^ "Учебное пособие по JSF 2.0" . мкёнг. 2010-12-12 . Проверено 28 апреля 2017 .
JavaServer Faces (JSF) 2.0 - это веб-фреймворк MVC, который фокусируется на упрощении создания пользовательских интерфейсов (поставляется с более чем 100 готовыми тегами пользовательского интерфейса) для веб-приложения Java и упрощает реализацию повторно используемых компонентов пользовательского интерфейса.
- ^ NoVDL: напишите представления JSF на чистой Java.
- ^ «JSR 127: JavaServer Faces» . Процесс сообщества Java . Корпорация Oracle. 2014 . Проверено 5 августа 2014 .
2.6 Предлагается ли название пакета для спецификации API? (например, javapi.something, org.something и т. д.) [:] javax.servlet.ui
- ^ Армстронг, Эрик (6 июня 2001 г.). "Веб-службы Java: что не нравится?" . JavaWorld . Проверено 27 июля 2020 .
API JavaServer Faces (он же Moonwalk) обещает предоставить элегантное решение для реализации интерактивных функций в несовместимых браузерах. […] Разработанный командой под руководством Эми Фаулер, архитектора Sun AWT и Swing, JavaServer Faces API предоставит набор инструментов с графическим интерфейсом, которые будут работать в обычных браузерах с использованием стандартного HTML.
- ^ Бергстен, Ганс. «Улучшение JSF путем сброса JSP» . О'Рейли . Проверено 18 августа 2011 года .
- ^ Тиймс, Арьян. "Что нового в JSF 2.3?" . Размышления разработчика Java EE . Проверено 27 июля 2020 .
- ^ JSF 2.2 (JSR-344) является финальной | techscouting через новости java . Blog.oio.de. Проверено 27 июля 2020.
- ^ JSR 314 JavaServer Faces 2.1 JSF 2.1 | techscouting через новости java . Blog.oio.de. Проверено 27 июля 2020.
- ^ Босх, Энди (29 ноября 2010 г.). «Was ist neu в JSF 2.1» (на немецком языке). it-republik.de . Проверено 19 февраля 2013 .
- ^ Райан Любке (5 декабря 2007 г.). «Проект Мохарра - JSF RI получает кодовое имя» .
- ^ «Технологический радар» (PDF) . ThoughtWorks. Январь 2014. с. 12. Архивировано из оригинального (PDF) 07.04.2016 . Проверено 30 января 2014 .
- ^ «JSF - это уже не то, что вам говорили» . PrimeFaces . 2014-02-12 . Проверено 24 ноября 2020 .
- ^ Йенс Шаудер (ноябрь 2014 г.). «Почему следует избегать JSF» . DZone.
- ^ Маккензи, Кэмерон (16 февраля 2016 г.). «Пять недостатков выбора JSF в качестве среды веб-приложений» . TheServerSide . Проверено 22 декабря 2020 года .
Внешние ссылки
- Официальный веб-сайт