Разница между Моджаррой и 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 больше банок, заключается в том, что она имеет больше функциональности, чем просто эталонная реализация.
Ответ 5
какую IDE вы используете? если вы используете eclipse, тогда он будет загружать банки при создании проекта jsf 2.0. Проверьте http://www.icesoft.org/training/icefaces-self-serve-training.jsf
Ответ 6
Между моджаррой и MyFaces нет большой разницы. Вы можете проверить, какая из них более стабильная. Как сказал Балуш, MyFaces является самой стабильной версией (в 2005-2006 годах). Кроме того, многие люди начали использовать Mojarra после 2.0, потому что он стал стабильным по сравнению с myfaces
Ответ 7
У меня были серьезные головные боли с mojarra (2.2.8), странные поведения, такие как ajax-методы, которые запускались только после второго взаимодействия с пользователем из-за предыдущих обновлений формы. Все ушли с MyFaces.