Разница между Мохаррой и MyFaces - PullRequest
47 голосов
/ 25 декабря 2010

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

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

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

Спасибо

Ответы [ 7 ]

72 голосов
/ 26 декабря 2010

Зачем мне больше банок, если я использую 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> и т. Д.) И с реализация flash flash (первоначальная реализация не была пуленепробиваемой). MyFaces также имел свой собственный набор ошибок, но они были управляемы.

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


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

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


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

45 голосов
/ 25 июня 2011

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

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: 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 look Понимание JSF 2 и Wicket: сравнение производительности

UPDATE ИЮЛЬ 2013

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

9 голосов
/ 25 декабря 2010

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

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

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

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

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

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

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

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

2 голосов
/ 03 мая 2012

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

1 голос
/ 26 декабря 2010

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

0 голосов
/ 29 июня 2017

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

...