Frage

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

Das Tutorial verwendete nur 2 Libs: jsf-api.jar, jsf-impl.jar (aber auch JSTL) vom Mojarra -Projekt.

Ich habe auch versucht, sie zu dowellieren, aber die Site scheint nicht erreichbar zu sein. Also habe ich Apache MyFaces verwendet, aber um das Beispiel auszuführen, musste ich 8 Gläser hinzufügen (commons-*, myfaces-*).
Warum brauche ich mehr Gläser, wenn ich MyFaces benutze? Sollte ich Mojarra als leichter bevorzugen? Auch die Download -Seite ist in der Tat JSF Mojarra?

Vielen Dank

War es hilfreich?

Lösung

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

Weil diese commons-* Abhängigkeiten sind nicht in MyFaces gebündelt. Andererseits, wenn Sie andere Bibliotheken von apache.org verwenden, die diese auch verwenden commons-* Abhängigkeiten, dann haben Sie letztendlich kleinere Bibliotheken der Gesamtgröße.

Notiert sollte sein, da Mojarra 2.1.6 ein einzelnes JAR -Dateiformat javax.faces.jar ist verfügbar.


Soll ich Mojarra als leichter bevorzugen

Dies ist ein Nicht-Argument. Sie sollten sich ansehen, wie robust und gut die JSF -Implementierung aufrechterhalten wird.

Der Großvater von Mojarra, Sun JSF RI 1.0 und die frühen Versionen von RI 1.1 wurden von bösen Käfern überfüllt. In diesem Moment (um 2004-2006) war MyFaces definitiv die stabilere Alternative.

Seit 1.1_02 und 1.2_02 um Anfang 2006 hat das neue JSF -Dev -Team von Sun/Oracle großartige Arbeit geleistet. Nicht nur mit Bugfixing, sondern auch mit Leistungsverbesserungen. Etwa die Hälfte der Mojarra 1.2-Lebenszeit (um 2007-2009) war Mojarra die bessere Wahl als MyFaces.

Seit JSF 2.0, das mit einem neuen partiellen staatlichen Sparmanagement geliefert wurde, war MyFaces aufgrund eines anderen und viel effizienteren Ansatzes bei der Berechnung von Zustandsdeltas die bessere Wahl, insbesondere bei der Verwendung großer Bäume mit großer Komponenten. Mojarra hat nur seit der Version eingeholt 2.1.22. Während der Zeitleiste 2.0/2.1 hatte Mojarra nur ernsthafte Probleme mit <ui:repeat> In komplexen/verschachtelten Zusammensetzungen (AO gebrochener Zustandssparen, Verarbeitung nur zuletzt iteriertes Formular, fehlgeschlagen <f:ajax>, usw.) und mit Implementierung von Flash -Bereiche (Die erste Implementierung war völlig kugelsicher). MyFaces hatten auch seine eigenen Fehler, aber sie waren überschaubar.

Im Moment kann man mit JSF 2.2 vorher nicht wirklich sagen, welches besser ist. Bugs entlarven oft erst später und Robustheit kann nur während der Folgen bewertet werden. Wählen Sie einfach die Implementierung aus, die Sie "fühlen". Durchsuchen Sie ihre Ausgabenberichte (Myflächen und Mojarra) Um die zuvor festen Probleme und die derzeit offenen Probleme kennenzulernen. Wenn Sie auf einen bestimmten Fehler stoßen, versuchen Sie es mit beiden Implementierungen, um den einen und anderen auszuschließen. Melden Sie bei Bedarf, um die Gesamtqualität der beiden Implementierungen hoch zu halten.


Auch die Download -Seite ist in der Tat JSF Mojarra?

Ihre Homepage wurde mehrmals bewegt. Derzeit (September 2017) befindet es sich um https://javaserverfaces.github.io Sie finden die Bibliotheken in org.glassfish:javax.faces in Maven Central zu. Sie finden den Quellcode in javaserverfaces/mojarra Projekt in GitHub. Sie finden die Installationsanweisungen in der README.md da drüben.


Siehe auch:

Andere Tipps

Die Antwort stammt aus meinem Blog:

http://lu4242.blogspot.com/2011/06/10-rason-why-choose-yfaces-core-as.html http://lu4242.blogspot.com/2012/05/undallandingjsf-2-and-wicket.html

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

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


Bei den ersten Ansicht tun beide JSF -Implementierungen (MyFaces und Mojarra) dasselbe, da sie auf demselben Standard basieren. Die Tatsache, dass Sie von einer Implementierung zu einer anderen wechseln können, ist eine Tatsache der Qualität der JSF -Standardspezifikation.

Aber am Boden gibt es viele Gründe, warum MyFaces Core 2.x besser ist als Mojarra. Beachten Sie, dass ich ein Committer des MyFaces -Projekts bin, also gebe ich Ihnen hier nur meinen Standpunkt:

  • Viele Probleme wurden behoben. Nur in 2,0.x Branch von 2.0.0-Alpha bis 2.0.7 wurden 835 Ausgaben geschlossen. Dies gibt ein "rohes" Maß dafür, wie viele Beiträge und Feedback von der Community im Laufe der Zeit geliefert wurden. Dies sind die Zahlen für geschlossene Probleme 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: MyFaces Community zählt mit vielen Leuten mit hervorragendem Wissen über JSF. Die Benutzer- und Dev -Mailingliste ist der beste Weg, um zu wissen, was los ist, Feedback erhalten und andere Personen kennen, die an JSF interessiert sind. Sehen MyFaces Mailing -Listen

  • Apache ist bekannt dafür, dass sie alles von Sonne/Orakel nimmt und es besser macht. In diesem Fall hat MyFaces Core einige coole Optimierungen gegenüber partiellem Zustandssparen, zusammengesetzten Komponenten und vielem mehr!.

  • MyFaces Core ist OSGI -freundlich. Es bietet einige SPI -Schnittstellen, um mit speziellen Setups umzugehen, wenn Sie mehr Kontrolle über das Klassenladen benötigen.

  • MyFaces Core hat eine bessere Kompatibilität mit den Facelets 1.1.x!. Setzen Sie einfach org.apache.myfaces.refresh_transient_build_on_pss web config -Params auf True, und ein spezieller Modus wird aktiviert. NEIN C: Wenn Tags oder c: foreach oder ui: Boting mehr gebrochen!. Update Mai 2012 Ein verbesserter Algorithmus wurde im MyFaces -Kern durchgeführt, der die Zustandsgröße selbst in Teilen reduziert, wenn Facelets verwendet werden, um den Komponentenbaum dynamisch zu aktualisieren. Dieser Param ist nicht mehr erforderlich.

  • MyFaces hat andere Projekte (Trinidad, Tobago, Tomahawk, Extval, Codi, Orchester, Portletbridge RI, ....), die dazu beitragen schneller behandelt.

  • Sie können mit SVN einchecken und problemlos jedes MyFaces -Projekt erstellen, da alle auf Maven basieren und die meisten IDEs Maven unterstützen.

  • Mojarra zum aktuellen Zeitpunkt (Jun 2011) hat einige böse Fehler im Zusammenhang mit dem staatlichen Speichern, den MyFaces nicht hat, da seine Implementierung völlig unterschiedlich ist. Tatsächlich bietet MyFaces Partial State Saving Algorithmus eine bessere Kompatibilität mit JSF 1.2 State Saving als Mojarra. Aber beachten Sie, dass Mojarra -Jungs daran arbeiten, aber beheben Sie, dass sie Monate und sogar Jahre dauern werden.

  • Innovation findet auf MyFaces statt.

Update Mai 2012

Siehe diesen Artikel 10 Grund Warum wählen Sie MyFaces Core als JSF -Implementierung für Webanwendungen

Für die Jungs, die einen Leistungsvergleich zwischen MyFaces, Mojarra und Wicket sehen wollen JSF 2 und Wicket verstehen: Leistungsvergleich

Update Juli 2013

Der Vergleich wurde auf andere Frameworks wie Spring MVC, Wandteppich, Grals 2 und Wicket erweitert. Siehe den Artikel bei JSFCentral: Aktualisieren Sie Jul 2013 bei JSFCentral

Ich würde sagen, dass es wirklich egal ist.

Ich habe kürzlich ein JSF 2.0 -Projekt mit MyFaces und Primefaces gestartet. Letzte Woche, um einen Fehler zu untersuchen, habe ich versucht, ihn auf Mojarra zu betreiben. Alles, was es brauchte, war das Austausch der Gläser und das Entfernen von MyFaces -spezifischen Einträgen in Web.xml - und alles hat ohne Probleme funktioniert. Zugegebenermaßen war dies ein Prototyp, der nicht die gesamte JSF -Funktionalität verwendet, aber ich war sehr beeindruckt von dieser Demonstration der Kompatibilität durch die Einhaltung von Standards.

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

  • MyFaces-Impls und MyFaces-API-Gläser sind das Äquivalent von Mojarra's JSF-IMPL und JSF-API.
  • MyFaces-Bundle enthält beide für den Einfachheit halber, Sie benötigen entweder diese oder die beiden anderen, nicht alle drei.
  • Commons-* sind Bibliotheken, die nützliche grundlegende Funktionen für den Umgang mit Sammlungen, Java-Bohnen usw. enthalten. Viele andere Projekte nutzen diese ebenfalls.

Ich bleibe im Allgemeinen bei der Mojarra -Implementierung, es sei denn, es gibt einen Grund, mit etwas anderem zu gehen. Ich benutze Netbeans, daher ist es am einfachsten, das "Standard" -Projekt -Setup zu verwenden, das Mojarra verwendet, das unter Glassfish rennt.

Zuletzt habe ich MyFaces verwendet, weil ich daran dachte, Tomahawk zu verwenden, und es schien vernünftig zu sein, die JSF -Implementierung aus derselben Quelle aus zu verwenden. Ich habe stattdessen zu Primefaces gewechselt und das funktioniert unter Mojarra gut.

Derzeit scheint es eine Menge Entwicklung zu geben, in der JSF-2.0-Komponentenbibliotheken online kommen. Sie sollten also lernen und in der Lage sein, zwischen den JSF -Implementierungen zu wechseln, falls etwas schief geht.

Der Grund, warum MyFaces mehr Gläser enthält, ist, dass es mehr Funktionen hat als nur die Referenzimplementierung.

Welche ide benutzt du? Wenn Sie Eclipse verwenden, wird es beim Erstellen von JSF 2.0 -Projekt Gläser herunterladen. Überprüfen Sie dies http://www.icesoft.org/training/icefaces- self-serve-training.jsf

Es gibt keinen großen Unterschied zwischen Mojarra und MyFaces. Sie können überprüfen, welche stabilere Version ist. Wie Balusc sagte, ist MyFaces die stabilste Version (2005-2006). Außerdem haben viele Leute nach 2.0 angefangen, das Mojarra zu verwenden

Ich hatte ernsthafte Kopfschmerzen mit Mojarra (2.2.8), seltsamen Verhaltensweisen wie AJAX -Methoden, die erst nach der zweiten Benutzerinteraktion aufgrund früherer Formularaktualisierungen ausgeführt wurden. Alles mit MyFaces weg.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top