stringtranslate.com

Лица Джакарты

Jakarta Faces , ранее Jakarta Server Faces и JavaServer Faces ( JSF ) — это спецификация Java для создания пользовательских интерфейсов на основе компонентов для веб-приложений . [2] Она была формализована как стандарт через Java Community Process как часть Java Platform, Enterprise Edition . Это веб-фреймворк MVC , который упрощает создание пользовательских интерфейсов (UI) для серверных приложений с помощью повторно используемых компонентов UI на странице. [3]

JSF 2.x использует Facelets в качестве своей системы шаблонов по умолчанию. Пользователи программного обеспечения также могут использовать XUL или Java . [4] JSF 1.x использует JavaServer Pages (JSP) в качестве своей системы шаблонов по умолчанию.

История

В 2001 году в первоначальном запросе спецификации Java (JSR) для технологии, которая в конечном итоге стала JavaServer Faces, предлагалось разработать пакет с названием javax.servlet.ui[5]

В июне 2001 года JavaWorld сообщил о разработке командой Эми Фаулер «JavaServer Faces API» (также известного как «Moonwalk») как «прикладной среды для создания пользовательских веб-интерфейсов». [6]

Разработки

Facelets (разработанный специально для Java Server Faces) был принят в качестве официальной технологии представления для JSF 2.0. Это устраняет конфликты жизненного цикла, которые существовали с JSP, вынуждая разработчиков Java искать обходные пути. [7]

Новые разработки JSF также обеспечивают широкий доступ к аннотациям Java , таким как @ManagedBean, @ManagedPropertyи @FacesComponentэто устраняет необходимость faces-config.xml,во всех случаях, кроме расширения фреймворка. Навигация также упрощается, устраняя необходимость в faces-config.xmlслучаях навигации. Переходы между страницами можно вызывать, просто передавая имя нужного View или Facelet.

Добавление частичного сохранения состояния и обновлений объектной модели документа (DOM) являются частью встроенной стандартизированной поддержки AJAX .

Последняя версия JSF имеет встроенную поддержку обработки ресурсов, таких как изображения, CSS и Javascript, что позволяет включать артефакты в библиотеки компонентов, разделять их на файлы JAR или просто размещать в согласованном месте в веб-приложении. Это включает логическое именование и управление версиями ресурсов.

JSF 2.0 также включает ряд других изменений, таких как добавление поддержки событий, отдельных режимов разработки, подготовки и производства, аналогичных RAILS_ENVRuby on Rails , а также значительное расширение стандартного набора компонентов.

История обновлений

Как это работает

На основе компонентно-управляемой модели проектирования пользовательского интерфейса JavaServer Faces использует XML-файлы, называемые шаблонами представлений или представлениями FaceletsFacesServlet . Обрабатывает запросы, загружает соответствующий шаблон представления, строит дерево компонентов, обрабатывает события и отображает ответ (обычно на языке HTML) клиенту. Состояние компонентов пользовательского интерфейса и других объектов, представляющих интерес для области действия, сохраняется в конце каждого запроса в процессе, называемом stateSaving (примечание: transient true ), и восстанавливается при следующем создании этого представления. Сохранять объекты и состояния может как клиентская, так и серверная сторона.

JSF и AJAX

JSF часто используется вместе с AJAX , техникой разработки приложений Rich Internet . AJAX — это комбинация техник и технологий веб-разработки, позволяющая создавать насыщенные пользовательские интерфейсы. Компоненты пользовательского интерфейса в Mojarra ( эталонная реализация JSF [12] ) и Apache MyFaces изначально были разработаны только для HTML, а AJAX приходилось добавлять через JavaScript. Однако это изменилось:

Поскольку JSF поддерживает несколько форматов вывода, компоненты с поддержкой AJAX можно легко добавлять для улучшения пользовательских интерфейсов, созданных с помощью JSF. Спецификация JSF 2.0 обеспечивает встроенную поддержку AJAX путем стандартизации жизненного цикла запроса AJAX и предоставления простых интерфейсов разработки для событий AJAX. Спецификация позволяет событию, вызванному клиентом, проходить проверку, преобразование и вызов метода, прежде чем возвращать результат браузеру через обновление XML DOM.

JSF 2 включает поддержку постепенной деградации при отключении JavaScript в браузере.

Компоненты и фреймворки с поддержкой AJAX

Следующие компании и проекты предлагают фреймворки JSF или библиотеки компонентов на основе AJAX:

Критика

ThoughtWorks, 2014

В своей публикации Technology Radar за январь 2014 года ThoughtWorks написала: [13]

Мы продолжаем видеть, как команды сталкиваются с проблемами при использовании JSF – JavaServer Faces – и рекомендуем вам избегать этой технологии. Команды, похоже, выбирают JSF, потому что это стандарт JEE, не оценивая по-настоящему, подходит ли им модель программирования. Мы считаем, что JSF имеет недостатки, поскольку он пытается абстрагироваться от HTML , CSS и HTTP , что является полной противоположностью тому, что делают современные веб-фреймворки . JSF, как и веб-формы ASP.NET, пытается создать состояние поверх протокола HTTP без сохранения состояния и в итоге вызывает целый ряд проблем, связанных с общим состоянием на стороне сервера. Мы знаем об улучшениях в JSF 2.0, но считаем, что эта модель в корне неверна. Мы рекомендуем командам использовать простые фреймворки и принимать и понимать веб-технологии, включая HTTP, HTML и CSS.

Опровержение

В феврале 2014 года Чагатай Чивичи (руководитель PrimeFaces) ответил на критику ThoughtWorks в посте под названием JSF is not what you've been saying longer . Чивичи утверждает, что улучшения в JSF за эти годы предлагают много функций, которые охватывают современную веб-разработку, предоставляя возможность писать собственный JavaScript, HTML и CSS. Также относительно состояния Чивичи написал: [14]

JSF по своей природе является структурой с сохранением состояния, а состояние упрощает разработку веб-приложений. Благодаря улучшенным методам управления состоянием, представленным в JSF 2.0+ (например, режим без сохранения состояния, частичное сохранение состояния), JSF также может масштабироваться.

DZone, 2014

В статье, опубликованной в ноябре 2014 года на сайте DZone под названием «Почему следует избегать JSF», Йенс Шаудер написал: [15]

Facelets, предпочтительная технология представления JSF, на первый взгляд выглядит как обычная технология шаблонов, вроде старых добрых JSP или Thymeleaf. Но если присмотреться, ужас становится очевидным. В том же месте, где вы структурируете свой HTML, вы также размещаете логику того, какие части пользовательского интерфейса должны обновляться при действии. Явное нарушение принципа разделения интересов в моей книге. Еще лучше — немедленный атрибут, который изменяет жизненный цикл на стороне сервера! И если этого недостаточно, он делает это по-разному в зависимости от того, в каком теге вы его используете. Вы не можете придумать что-то подобное.

TheServerSide, 2016

В феврале 2016 года сайт сообщества Enterprise Java TheServerSide опубликовал статью, в которой рекомендовалось не использовать JSF, поскольку это может поставить под угрозу качество конечного продукта. В статье подробно излагались пять причин: [16]

  1. Простые задачи становятся сложными;
  2. JSF не хватает гибкости;
  3. Кривая обучения крутая;
  4. Несовместимость со стандартными технологиями Java; и
  5. Примитивная поддержка AJAX.

Ссылки

  1. ^ "Release 4.1.0". 5 июня 2024 г. Получено 5 июня 2024 г.
  2. ^ Лица Джакарты 4.0
  3. ^ "JSF 2.0 Tutorial". mkyong. 2010-12-12 . Получено 2017-04-28 . JavaServer Faces (JSF) 2.0 — это веб-фреймворк MVC, который фокусируется на упрощении создания пользовательских интерфейсов (поставляется с более чем 100 готовыми тегами пользовательского интерфейса) для веб-приложений Java и упрощает реализацию повторно используемых компонентов пользовательского интерфейса.
  4. ^ NoVDL: Пишите свои представления JSF на чистом Java
  5. ^ "JSR 127: JavaServer Faces". Процесс сообщества Java . Корпорация Oracle. 2014. Получено 05.08.2014 . 2.6 Существует ли предлагаемое имя пакета для спецификации API? (т. е. javapi.something, org.something и т. д.) [:] javax.servlet.ui
  6. ^ Армстронг, Эрик (6 июня 2001 г.). «Java Web services: What's not to like?». JavaWorld . Получено 27 июля 2020 г. API JavaServer Faces (он же Moonwalk) обещает предоставить элегантное решение для реализации интерактивной функциональности в несовместимых браузерах. [...] Разработанный командой под руководством Эми Фаулер, архитектора AWT и Swing компании Sun, API JavaServer Faces предоставит набор инструментов GUI, которые будут работать в распространенных браузерах с использованием стандартного HTML.
  7. ^ Бергстен, Ганс. "Улучшение JSF путем отказа от JSP". O'Reilly . Получено 18 августа 2011 г.
  8. ^ Теймс, Арджан. «Что нового в JSF 2.3?». Размышления разработчика Java EE . Получено 27.07.2020 .
  9. ^ JSF 2.2 (JSR-344) — финальная версия | технический анализ новостей Java Архивировано 27 июля 2020 г. на Wayback Machine . Blog.oio.de. Получено 27 июля 2020 г.
  10. ^ JSR 314 JavaServer Faces 2.1 JSF 2.1 | технический поиск по новостям Java Архивировано 27 июля 2020 г. на Wayback Machine . Blog.oio.de. Получено 27 июля 2020 г.
  11. ^ Босх, Энди (29 ноября 2010 г.). «Was ist neu in JSF 2.1» (на немецком языке). it-republik.de . Проверено 19 февраля 2013 г.
  12. ^ Любке, Райан (5 декабря 2007 г.). «Проект Mojarra — JSF RI получает кодовое имя». Блог Райана Любке . Sun Microsystems . Oracle Corporation . Архивировано из оригинала 2017-04-07.
  13. ^ "Technology Radar" (PDF) . ThoughtWorks. Январь 2014. стр. 12. Архивировано из оригинала (PDF) 2016-04-07 . Получено 2014-01-30 .
  14. ^ "JSF — это уже не то, что вам говорили". PrimeFaces . 2014-02-12 . Получено 2020-11-24 .[ постоянная мертвая ссылка ]
  15. ^ Йенс Шаудер (ноябрь 2014 г.). «Почему следует избегать JSF». DZone.
  16. ^ Маккензи, Кэмерон (16 февраля 2016 г.). «Пять недостатков выбора JSF в качестве фреймворка веб-приложений». TheServerSide . Получено 22 декабря 2020 г. .

Внешние ссылки