Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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 (01.07.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 (примечание: временное значение 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 framework
  • 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]

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

Ссылки [ править ]

  1. ^ Технология JavaServer Faces
  2. ^ «Учебное пособие по JSF 2.0» . мкёнг. 2010-12-12 . Проверено 28 апреля 2017 . JavaServer Faces (JSF) 2.0 - это веб-фреймворк MVC, который фокусируется на упрощении создания пользовательских интерфейсов (поставляется с более чем 100 готовыми тегами пользовательского интерфейса) для веб-приложения Java и упрощает реализацию повторно используемых компонентов пользовательского интерфейса.
  3. ^ NoVDL: напишите представления JSF на чистом Java
  4. ^ "JSR 127: JavaServer Faces" . Процесс сообщества Java . Корпорация Oracle. 2014 . Проверено 5 августа 2014 . 2.6 Предлагается ли название пакета для спецификации API? (например, javapi.something, org.something и т. д.) [:] javax.servlet.ui
  5. Армстронг, Эрик (6 июня 2001 г.). «Веб-сервисы Java: что не нравится?» . JavaWorld . Проверено 27 июля 2020 . API JavaServer Faces (он же Moonwalk) обещает предоставить элегантное решение для реализации интерактивных функций в несовместимых браузерах. […] Разработанный командой под руководством Эми Фаулер, архитектора Sun AWT и Swing, JavaServer Faces API предоставит набор инструментов графического интерфейса, которые будут работать в обычных браузерах с использованием стандартного HTML.
  6. ^ Бергстен, Ганс. «Улучшение JSF путем сброса JSP» . О'Рейли . Проверено 18 августа 2011 года .
  7. ^ Tijms, Арьян. "Что нового в JSF 2.3?" . Размышления разработчика Java EE . Проверено 27 июля 2020 .
  8. ^ JSF 2.2 (JSR-344) является финальным | techscouting через новости java . Blog.oio.de. Проверено 27 июля 2020.
  9. ^ JSR 314 JavaServer Faces 2.1 JSF 2.1 | techscouting через новости java . Blog.oio.de. Проверено 27 июля 2020.
  10. Босх, Энди (29 ноября 2010 г.). «Was ist neu в JSF 2.1» (на немецком языке). it-republik.de . Проверено 19 февраля 2013 .
  11. Райан Любке (5 декабря 2007 г.). «Проект Мохарра - JSF RI получает кодовое имя» .
  12. ^ "Технологический радар" (PDF) . ThoughtWorks. Январь 2014. с. 12. Архивировано из оригинального (PDF) 07.04.2016 . Проверено 30 января 2014 .
  13. ^ «JSF - это не то, что вам говорили» . PrimeFaces . 2014-02-12 . Проверено 24 ноября 2020 .
  14. ^ Йенс Шаудер (ноябрь 2014 г.). «Почему следует избегать JSF» . DZone.
  15. Рианна Маккензи, Кэмерон (16 февраля 2016 г.). «Пять недостатков в выборе JSF в качестве среды веб-приложений» . TheServerSide . Проверено 22 декабря 2020 года .

Внешние ссылки [ править ]

  • Официальный веб-сайт