Реализации JSF и библиотеки компонентов

Я только начал использовать JSF, и у меня есть три вопроса, связанных с реализациями JSF и библиотеками компонентов.

  • В чем разница между реализациями JSF и библиотеками компонентов?

  • Какие существуют различные реализации JSF (например, Apache MyFaces), и какая разница между ними?

  • Каковы различные библиотеки компонентов JSF (например, богатые лица и ледяные грани), и какая разница между ними?

Также будут полезны любые соответствующие ссылки, дающие точную информацию об этом.

Ответ 1

В чем разница между реализациями JSF и библиотеками компонентов?

Реализации JSF реализуют Спецификацию API JSF. Они содержат по крайней мере стандартные компоненты для отображения любых доступных базовых ("plain vanilla") HTML-элементов.

Библиотеки компонентов JSF просто добавляют это дополнение поверх базовой реализации, часто с большей скинируемостью, ajaxability, повышаемостью и т.д., так что вы можете просто запрограммировать его с помощью одного компонента вместо набора компонентов или настраиваемых компонентов, в конечном итоге наряду с рядом связанных JS/CSS-кода.


Какие существуют различные реализации JSF (например, Apache MyFaces), и какая разница между ними?

Существуют две (основные) реализации JSF, а именно Oracle Mojarra и Apache MyFaces. Там технически не так много различий, поскольку они оба должны придерживаться Спецификации API JSF. Скорее посмотрите на надежность, доступность документации, уровень поддержки, уровень обслуживания (скорость усовершенствований, исправления, выпуск и т.д.) И т.д. См. Также: Разница между Mojarra и MyFaces


Каковы различные библиотеки компонентов JSF (например, богатые лица и ледяные поверхности), и какая разница между ними?

Их много, я ограничусь наиболее используемыми/хорошо известными библиотеками. Если вы хотите больше возможностей скиннинга, посмотрите PrimeFaces (demo), RichFaces (demo) или ICEFaces (демонстрация). Если вам нужны более аяксиальные возможности (помимо того, что уже предоставляет JSF 2.0), посмотрите на PrimeFaces, RichFaces, ICEFaces, OpenFaces (demo) или Trinidad (demo). Если вам нужны более специализированные/расширенные компоненты, посмотрите на PrimeFaces, RichFaces, ICEFaces, OpenFaces, Trinidad или Tomahawk (демонстрация). Разницу в основном можно найти в доступном наборе компонентов и степени настраиваемости.

Кроме того, есть также служебная библиотека JSF. Вероятно, вы узнаете, что каждый раз пересматриваете/переписываете классы FacesUtil, JSFUtils и т.д. Каждый раз и/или настраиваемые теги/компоненты для решения типичных и повторяющихся проблем, связанных с JSF. OmniFaces (демонстрация) предназначена для заполнения этот пробел, предоставляя повторно используемую стандартную библиотеку утилит JSF, которые могут использоваться в сочетании с каждой реализацией JSF и библиотекой компонентов.

Ответ 2

Реализация - это то, что реализует спецификацию JSF. Библиотека компонентов - это то, что добавляет дополнительные функциональные возможности (обычно дополнительные виджеты пользовательского интерфейса) к базовой спецификации.

Я предполагаю, что основное различие заключается в соблюдении стандартов. Насколько мне известно, Glassfish - единственный сервер приложений, полностью поддерживающий новый стандарт JSF, выпущенный как часть Java EE 6.

Извините, я не уверен в последнем вопросе.