wake-up-neo.com

Unterschied zwischen Mojarra und MyFaces

Ich fange mit JSF2.0 an. Ich habe ein Tutorial als Referenz verwendet, aber ich habe die folgende Frage:

Das Tutorial verwendete nur 2 Bibliotheken: jsf-api.jar, jsf-impl.jar (hatte jedoch auch JSTL) von Mojarra Project.

Ich habe versucht, sie auch herunterzuladen, scheint aber, dass die Site nicht erreichbar ist .. Also benutzte ich Apache MyFaces, aber um das Beispiel auszuführen, musste ich 8 Gläser hinzufügen (commons-*, myfaces-*).
Warum brauche ich mehr Gläser, wenn ich MyFaces verwende? Soll ich Mojarra als leichter bevorzugen? Auch die Downloadseite ist in der Tat JSF Mojarra

Vielen Dank

45
Cratylus

Warum brauche ich mehr Gläser, wenn ich MyFaces verwende?

Weil diese commons-*-Abhängigkeiten in MyFaces nicht gebündelt sind. Wenn Sie dagegen andere Bibliotheken von Apache.org verwenden, die ebenfalls diese commons-*-Abhängigkeiten verwenden, erhalten Sie letztendlich kleinere Bibliotheken.

Zu beachten ist, dass seit Mojarra 2.1.6 ein einzelnes JAR-Dateiformat javax.faces.jar verfügbar ist.


Sollte ich Mojarra als leichter bevorzugen

Dies ist kein Argument. Sie sollten prüfen, wie robust und gepflegt die JSF-Implementierung ist. 

Der Großvater von Mojarra, Sun JSF RI 1.0, und die frühen Versionen von RI 1.1 wurden von bösen Fehlern übersät. Zu diesem Zeitpunkt (etwa 2004-2006) war MyFaces definitiv die stabilere Alternative. 

Seit dem 1.1_02 und 1.2_02 Anfang 2006 hat das neue Sun/Oracle JSF-Entwicklerteam hervorragende Arbeit geleistet. Nicht nur bei der Fehlerbehebung, sondern auch bei Leistungsverbesserungen. Etwa zur Hälfte der Lebensdauer von Mojarra 1.2 (etwa 2007-2009) war Mojarra die bessere Wahl als MyFaces. 

Seit JSF 2.0, das mit einem neuen partiellen Zustandssparmanagement ausgestattet wurde, war MyFaces die leistungsstärkere Wahl, da es einen anderen und wesentlich effizienteren Ansatz zur Berechnung von Zustandsdeltas vor allem bei der Verwendung großer Bauteilbäume bietet. Mojarra hat erst seit Version 2.1.22 aufgeholt. Während der Zeitleiste von 2.0/2.1 hatte Mojarra nur schwerwiegende Probleme mit <ui:repeat> in komplexen/verschachtelten Kompositionen (ua Speichern von Statusverlust, Verarbeitung nur der letzten iterierten Form, fehlgeschlagener <f:ajax> usw.) und der Implementierung des flash-Bereichs ( Die anfängliche Implementierung war absolut nicht kugelsicher). MyFaces hatte auch seine eigenen Fehler, die aber überschaubar waren.

Mit JSF 2.2 kann man im Vorfeld nicht wirklich sagen, welche besser ist. Bugs werden oft erst später sichtbar, und Robustheit kann nur während der Nachwirkungen bewertet werden. Wählen Sie einfach die Implementierung aus, die Sie für "am besten" halten. Durchsuchen Sie die Problemberichte ( MyFaces und Mojarra ), um mehr über die zuvor behobenen Probleme und die derzeit offenen Probleme zu erfahren. Wenn Sie auf einen bestimmten Fehler stoßen, versuchen Sie es mit beiden Implementierungen, um die eine und andere auszuschließen. Berichten Sie ggf., um die Gesamtqualität der beiden Implementierungen hoch zu halten.


Auch die Downloadseite ist in der Tat JSF Mojarra ?

Ihre Homepage wurde mehrmals verschoben. Derzeit (September 2017) befindet es sich unter https://javaserverfaces.github.io Sie finden die Bibliotheken auch in org.glassfish:javax.faces in Maven Central . Den Quellcode finden Sie im javaserverfaces/mojarra-Projekt in GitHub . Die Installationsanweisungen finden Sie im README.md dort.


Siehe auch:

69
BalusC

Die Antwort kommt aus meinem Blog:

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

UPDATE JULY 2013: Siehe die Artikelserie und das Update für 2013 bei JSFCentral:

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


Auf den ersten Blick machen beide JSF-Implementierungen (MyFaces und Mojarra) dasselbe, da sie auf demselben Standard basieren. Die Tatsache, dass Sie von einer Implementierung zur anderen wechseln können, ist eine Tatsache der Qualität der JSF-Standardspezifikationen.

Aber unten gibt es viele Gründe, warum MyFaces Core 2.x besser ist als Mojarra. Hinweis Ich bin ein Committer des MyFaces-Projekts, daher gebe ich Ihnen hier nur meine Sichtweise:

  • Viele Probleme wurden behoben. Nur in 2.0.x-Zweig von 2.0.0-alpha bis 2.0.7 wurden 835 Ausgaben geschlossen. Dies gibt eine "ungefähre" Messung, wie viele Beiträge und Feedback die Community im Laufe der Zeit bereitgestellt hat. Dies sind die Zahlen für geschlossene Ausgaben im Laufe der Zeit: 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.

UPDATE MAI 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

  • Community over code: Die Community von MyFaces zählt viele Leute mit hervorragenden Kenntnissen über JSF. Abonnieren von Benutzern und Dev-Mailinglisten sind der beste Weg, um zu erfahren, was los ist, Feedback zu erhalten und andere an JSF Interessierte zu kennen. Siehe MyFaces-Mailinglisten

  • Apache ist bekannt dafür, alles von Sun/Oracle zu übernehmen und es besser zu machen. In diesem Fall bietet MyFaces Core einige Optimierungen hinsichtlich teilweiser Zustandserhaltung, zusammengesetzter Komponenten und vielem mehr!.

  • MyFaces Core ist OSGi-freundlich. Es bietet einige SPI - Schnittstellen für spezielle Setups, wenn Sie mehr Kontrolle über das Classloading benötigen.

  • MyFaces Core ist mit Facelets 1.1.x! Besser kompatibel. Setzen Sie org.Apache.myfaces.REFRESH_TRANSIENT_BUILD_ON_PSS web config param auf true, und ein spezieller Modus wird aktiviert. Nein c: Wenn Tags oder c: forEach oder ui: include broken mehr! UPDATE MAI 2012 In MyFaces Core wurde ein verbesserter Algorithmus implementiert, der die Statusgröße selbst in Teilen reduziert, wenn Facelets verwendet werden, um den Komponentenbaum dynamisch zu aktualisieren. Dieser Parameter ist nicht mehr erforderlich.

  • MyFaces hat andere Projekte (Trinidad, Tobago, Tomahawk, ExtVal, CODI, Orchester, PortletBridge RI, ...), die dazu beitragen, den Code auf dem neuesten Stand zu halten, da all diese Projekte gegen MyFaces Core testen und wenn es einen Fehler gibt schneller gehandhabt werden.

  • Sie können mit svn auschecken und problemlos jedes MyFaces-Projekt erstellen, da alle Maven-basiert und die meisten IDEs Maven-Unterstützung bieten.

  • Mojarra hat zur aktuellen Zeit (JUN 2011) einige böse Bugs im Zusammenhang mit der Statusersparnis, die MyFaces nicht hat, weil seine Implementierung völlig anders ist. Tatsächlich bietet der partielle Zustandssparungsalgorithmus von MyFaces eine bessere Kompatibilität mit der Zustandsspeicherung von JSF 1.2 als Mojarra. Aber beachten Sie, dass die Mojarra-Jungs daran arbeiten, aber das wird sie Monate, sogar Jahre in Anspruch nehmen.

  • Innovation findet auf MyFaces statt.

UPDATE MAI 2012

Siehe diesen Artikel 10 Gründe, warum Sie MyFaces Core als JSF-Implementierung für Webanwendungen gewählt haben

Für die Jungs, die einen Leistungsvergleich zwischen MyFaces, Mojarra und Wicket sehen wollen Verständnis von JSF 2 und Wicket: Leistungsvergleich

UPDATE JULI 2013

Der Vergleich wurde um andere Frameworks wie Spring MVC, Tapestry, Grails 2 und Wicket erweitert. Siehe den Artikel bei JSFCentral: Update JUL 2013 bei JSFCentral

44
lu4242

Ich würde sagen, dass es wirklich keine Rolle spielt. 

Ich habe vor kurzem ein JSF 2.0-Projekt mit Myfaces und Primefaces gestartet. Um einen Fehler zu untersuchen, habe ich letzte Woche versucht, ihn auf Mojarra auszuführen. Es genügte nur, die JARs auszutauschen und Myfaces-spezifische Einträge in web.xml zu entfernen - und alles funktionierte ohne Probleme. Zwar war dies ein Prototyp, der nicht die gesamte JSF-Funktionalität nutzt, aber ich war ziemlich beeindruckt von dieser Demonstration der Kompatibilität durch Einhaltung von Standards.

Warum brauche ich mehr Gläser, wenn ich .__ benutze? Meine Gesichter?

  • myfaces-impl und myfaces-api-JARs entsprechen jjsf-impl und jsf-api von Mojarra.
  • myfaces-bundle enthält beides zur Vereinfachung. Sie benötigen entweder dieses oder die beiden anderen, nicht alle drei.
  • commons- * sind Bibliotheken, die nützliche grundlegende Funktionen für den Umgang mit Sammlungen, Java-Beans usw. enthalten, die ansonsten neu implementiert werden müssten (wahrscheinlich langsamer und mit mehr Fehlern). Viele andere Projekte verwenden diese auch.
8

Im Allgemeinen halte ich mich an die Implementierung von Mojarra, es sei denn, es gibt einen Grund, etwas anderes zu unternehmen. Ich verwende Netbeans, daher ist es am einfachsten, das "Standard" -Projekt-Setup zu verwenden, das Mojarra unter GlassFish verwendet.

Zuletzt habe ich MyFaces verwendet, weil ich daran dachte, Tomahawk zu verwenden, und es schien sinnvoll, die JSF-Implementierung von derselben Quelle zu verwenden. Ich habe jedoch stattdessen zu Primefaces gewechselt und das funktioniert unter Mojarra gut. 

Momentan scheint es viel zu tun, JSF-2.0-Komponentenbibliotheken werden online gestellt. Sie sollten also lernen und zwischen den JSF-Implementierungen wechseln können, falls etwas schief geht.

Der Grund, warum MyFaces mehr Jars enthält, ist, dass es mehr Funktionalität als nur die Referenzimplementierung hat. 

5
AlanObject

welche IDE verwendest du? Wenn Sie Eclipse verwenden, werden beim Erstellen von jsf 2.0-Projekt Jars heruntergeladen. Überprüfen Sie dies http://www.icesoft.org/training/icefaces-self-serve-training.jsf

2
user1099871

Es gibt keinen großen Unterschied zwischen Mojarra und MyFaces. Sie können überprüfen, welche Version stabiler ist. Wie Balusc gesagt hat, ist MyFaces die stabilste Version (2005-2006). Außerdem haben viele Leute den Mojarra nach 2.0 verwendet, weil er im Vergleich zu den Myfaces stabil geworden ist

1
Krishna

Ich hatte ernsthafte Kopfschmerzen mit Mojarra (2.2.8), seltsame Verhaltensweisen wie ajax-Methoden, die aufgrund von vorherigen Formularupdates erst nach der zweiten Benutzerinteraktion ausgeführt wurden. Alles weg mit MyFaces.

0
Mateus Viccari