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

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

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

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

Спасибо

7 ответов

Решение

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

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

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


Должен ли я предпочесть Мохарру как зажигалку

Это не аргумент. Вы должны посмотреть, насколько надежна и хорошо поддерживается реализация 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 был лучшим выбором по производительности благодаря другому и гораздо более эффективному подходу вычисления дельт состояний, особенно при использовании больших деревьев компонентов. Мохарра догнала только начиная с версии 2.1.22. В течение графика времени 2.0/2.1 у Мохарры были только серьезные проблемы с <ui:repeat> в сложных / вложенных композициях (сохранение поврежденного состояния, обработка только последней итерированной формы, сбой <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 там.


Смотрите также:

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

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-альфа на 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: if или c:forEach или ui: включайте больше не работает!. ОБНОВЛЕНИЕ МАЯ 2012 В MyFaces Core был реализован улучшенный алгоритм, который уменьшает размер состояния даже по частям, когда грани используются для динамического обновления дерева компонентов. Этот параметр больше не нужен.

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

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

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

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

ОБНОВЛЕНИЕ МАЙ 2012

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

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

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

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

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

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

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

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

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

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

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

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

Какую IDE вы используете? если вы используете eclipse, то он будет загружать jars при создании проекта jsf 2.0. Проверьте это http://www.icesoft.org/training/icefaces-self-serve-training.jsf

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

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

Другие вопросы по тегам