Разница между Моджаррой и MyFaces

Я начинаю с JSF2.0. Я использовал учебник как ссылку, но у меня есть следующий вопрос:

В учебнике использовались только 2 библиотеки: jsf-api.jar, jsf-impl.jar (но также имел JSTL) из проекта Mojarra.

Я попытался также загрузить их, но, похоже, сайт недоступен. Поэтому я использовал Apache MyFaces, но для запуска примера мне пришлось добавить 8 банок (commons-*, myfaces-*).
Зачем мне нужно больше банок, если я использую MyFaces? Должен ли я предпочесть Моджарру легче? Кроме того, страница загрузки действительно JSF Mojarra?

Спасибо

Ответ 1

Зачем мне больше банок, если я использую MyFaces?

Поскольку эти зависимости commons-* не связаны в MyFaces. С другой стороны, если вы используете другие библиотеки Apache.org, которые также используют эти зависимости commons-*, то в конечном итоге вы получите меньше общих библиотек размера.

Отмечается, что с Mojarra 2.1.6 доступен один формат файла JAR javax.faces.jar.


Должен ли я предпочесть Mojarra светлее

Это не аргумент. Вы должны посмотреть, насколько надежной и хорошо поддерживается реализация JSF.

Дед Моджарры, Sun JSF RI 1.0 и ранние версии RI 1.1 были загромождены неприятными ошибками. В тот момент (около 2004-2006) MyFaces определенно была более стабильной альтернативой.

Начиная с версии 1.1_02 и 1.2_02 в начале 2006 года, новая команда разработчиков Sun/Oracle JSF сделала отличную работу. Не только с исправлением ошибок, но и с улучшением производительности. Примерно на полпути к жизни Mojarra 1.2 (около 2007-2009 гг.) Mojarra был лучшим выбором, чем MyFaces.

Так как JSF 2.0, в котором реализовано новое управление с частичным сохранением состояния, MyFaces было лучшим выбором из-за другого и более эффективного подхода к вычислению дельта состояний, особенно при использовании больших деревьев компонентов. Mojarra догнал только с версии 2.1.22. Во время временной шкалы 2.0/2.1 у Mojarra были только серьезные проблемы с <ui:repeat> в сложных/вложенных композициях (ao сломанное сохранение состояния, обработка только последней итерационная форма, неудачная <f:ajax> и т.д.) и реализация флэш-сферы (первоначальная реализация была полностью не доказана пулями). У MyFaces также был свой набор ошибок, но они были управляемы.

Прямо сейчас, с JSF 2.2, нельзя сказать заранее, какой из них лучше. Ошибки часто выставляются только позже, а надежность может быть оценена только после этого. Просто выберите любую реализацию, которую вы "чувствуете", является лучшей. Просмотрите их отчеты о проблемах (MyFaces и Mojarra), чтобы узнать о ранее зафиксированных проблемах и текущих проблемах. Если вы столкнулись с определенной ошибкой, попробуйте обе версии, чтобы исключить одно и другое. Сообщите, если необходимо, чтобы общее качество обеих реализаций было высоким.


Также страница загрузки действительно JSF Mojarra?

Их домашняя страница была перемещена несколько раз. В настоящее время (сентябрь 2017 г.) он находится в https://javaserverfaces.github.io. Вы можете найти библиотеки в org.glassfish:javax.faces в Maven Central. Вы можете найти исходный код в проекте javaserverfaces/mojarra в GitHub. Вы можете найти инструкции по установке в README.md там.


См. также:

Ответ 2

Ответ приходит из моего блога:

http://lu4242.blogspot.com/2011/06/10-reason-why-choose-myfaces-core-as.html http://lu4242.blogspot.com/2012/05/understandingjsf-2-and-wicket.html

ОБНОВЛЕНИЕ ИЮЛЯ 2013 г.. См. серию статей и обновление для 2013 года в JSFCentral:

http://www.jsfcentral.com/articles/understanding_jsf_performance_3.html


При первом просмотре обе реализации JSF (MyFaces и Mojarra) делают то же самое, потому что они основаны на одном стандарте. Тот факт, что вы можете перейти от одной реализации к другой, является фактом качества стандартной спецификации JSF.

Но на дне есть много причин, по которым MyFaces Core 2.x лучше Mojarra. Примечание. Я участник проекта MyFaces, поэтому я приведу здесь только мою точку зрения:

  • Исправлено множество проблем. Только в ветке 2.0.x от 2.0.0-alpha до 2.0.7 он был закрыт на 835 вопросов. Это дает "необработанную" меру того, сколько вкладов и отзывов было предоставлено сообществом в течение времени. Это номера для закрытых выпусков за время: 2.0.0-alpha: 274, 2.0.0-beta: 58, 2.0.0-beta-2: 41, 2.0.0-beta-3: 39, 2.0.0: 51, 2.0.1:148, 2.0.2: 77, 2.0.3: 63, 2.0.4: 23, 2.0.5: 27, 2.0.6: 29, 2.0.7: 5..

ОБНОВЛЕНИЕ МАЙ 2012: 2.1.0: 47, 2.1.1: 6, 2.1.2: 84, 2.1.3: 9, 2.1.4: 74, 2.1.5: 7, 2.1.6: 35, 2.1.7: 52

  • Сообщество по коду: сообщество MyFaces подсчитывается с большим количеством людей с выдающимися знаниями в JSF. Подпишитесь на список рассылки пользователей и разработчиков - лучший способ узнать, что происходит, получить обратную связь и узнать других людей, заинтересованных в JSF. См. Списки рассылки MyFaces

  • Apache, как известно, берет все с Sun/Oracle и делает его лучше. В этом случае MyFaces Core имеет отличную оптимизацию для частичного сохранения состояния, составных компонентов и многое другое!

  • MyFaces Core - OSGi. Он предоставляет некоторые интерфейсы SPI для работы со специальными настройками, когда вам нужно больше контролировать загрузку классов.

  • MyFaces Core лучше совместим с facelets 1.1.x!. Просто установите для org.apache.myfaces.REFRESH_TRANSIENT_BUILD_ON_PSS параметр веб-конфигурации значение true, и будет активирован специальный режим. Нет c: если теги или c: forEach или ui: включить сломанные больше!. UPDATE MAY 2012 Улучшенный алгоритм был выполнен внутри MyFaces Core, который уменьшает размер штата даже в тех частях, когда facelets используется для динамического обновления дерева компонентов. Этот параметр больше не нужен.

  • В MyFaces есть другие проекты (Тринидад, Тобаго, Томагавк, Экстра, CODI, Оркестр, PortletBridge RI,....), которые помогают поддерживать настройку кода, потому что все эти проекты проверяются на MyFaces Core, и если является ошибкой, она обрабатывается быстрее.

  • Вы можете проверить с помощью svn и легко построить любой проект MyFaces, потому что все они основаны на maven и большинство IDE обеспечивают поддержку maven.

  • Mojarra в текущее время (JUN 2011) содержит некоторые неприятные ошибки, связанные с сохранением состояния, которых нет у MyFaces, поскольку его реализация полностью отличается. Фактически, алгоритм сохранения частичного состояния MyFaces обеспечивает лучшую совместимость с сохранением состояния JSF 1.2, чем Mojarra. Но обратите внимание, что ребята Mojarra работают над этим, но исправить это займет месяцы, даже годы.

  • Инновации происходят на MyFaces.

UPDATE MAY 2012

См. статью 10 причина, почему MyFaces Core используется как реализация JSF для веб-приложений

Для парней, которые хотят увидеть сравнение производительности между MyFaces, Mojarra и Wicket, посмотрите Понимание JSF 2 и Wicket: Сравнение производительности

ОБНОВЛЕНИЕ ИЮЛЯ 2013

Сравнение было расширено, чтобы включить другие структуры, такие как Spring MVC, Tapestry, Grails 2 и Wicket. См. Статью в JSFCentral: Обновление JUL 2013 в JSFCentral

Ответ 3

Я бы сказал, что это действительно неважно.

Недавно я начал проект JSF 2.0 с использованием Myfaces и Primefaces. На прошлой неделе, чтобы исследовать ошибку, я попытался запустить ее на Mojarra. Все, что нужно, это обмен файлами JAR и удаление записей, связанных с Myfaces, в web.xml - и все работало без проблем. По общему признанию, это был прототип, который не использует все функции JSF, но я был впечатлен этой демонстрацией совместимости с соблюдением стандартов.

Почему мне нужно больше банок, если я использую MyFaces?

  • myfaces-impl и myfaces-api JAR являются эквивалентом Mojarra jsf-impl и jsf-api.
  • myfaces-bundle содержит обе эти функции для удобства, вам нужно либо это, либо два других, а не все три.
  • commons- * - это библиотеки, которые содержат полезные базовые функции для работы с коллекциями, Java beans и т.д., которые в противном случае нужно было бы переопределить (возможно, медленнее и с большим количеством ошибок). Многие другие проекты также используют их.

Ответ 4

Я обычно придерживаюсь реализации Mojarra, если нет причин идти с чем-то другим. Я использую Netbeans, поэтому проще всего использовать настройку проекта по умолчанию, в которой Mojarra работает под GlassFish.

В последнее время я использовал MyFaces, потому что я думал об использовании Tomahawk, и было разумно использовать реализацию JSF из того же источника. Однако я переключился на Primefaces и отлично работает под Mojarra.

Прямо сейчас, похоже, идет много разработок с библиотеками компонентов JSF-2.0. Поэтому вы должны учиться и иметь возможность переключаться между реализациями JSF в случае, если что-то пойдет не так.

Причина, по которой у MyFaces больше банок, заключается в том, что она имеет больше функциональности, чем просто эталонная реализация.

Ответ 6

Между моджаррой и MyFaces нет большой разницы. Вы можете проверить, какая из них более стабильная. Как сказал Балуш, MyFaces является самой стабильной версией (в 2005-2006 годах). Кроме того, многие люди начали использовать Mojarra после 2.0, потому что он стал стабильным по сравнению с myfaces

Ответ 7

У меня были серьезные головные боли с mojarra (2.2.8), странные поведения, такие как ajax-методы, которые запускались только после второго взаимодействия с пользователем из-за предыдущих обновлений формы. Все ушли с MyFaces.