web-dev-qa-db-fra.com

Différence entre Mojarra et MyFaces

Je commence sur JSF2.0 J'ai utilisé un tutoriel comme référence mais j'ai la question suivante:

Le tutoriel utilisait 2 bibliothèques uniquement: jsf-api.jar, jsf-impl.jar (mais aussi JSTL) de Mojarra Project.

J'ai essayé de les télécharger également, mais il semble que le site ne soit pas accessible . J'ai donc utilisé Apache MyFaces, mais pour utiliser l'exemple, j'ai dû ajouter 8 fichiers jar (commons-*, myfaces-*).
Pourquoi ai-je besoin de plus de bocaux si j'utilise MyFaces? Devrais-je préférer Mojarra aussi léger? Aussi la page de téléchargement est en effet JSF Mojarra

Merci

45
Cratylus

Pourquoi ai-je besoin de plus de bocaux si j'utilise MyFaces?

Parce que ces dépendances commons-* ne sont pas regroupées dans MyFaces. D'autre part, si vous utilisez d'autres bibliothèques d'Apache.org qui utilisent également ces dépendances commons-*, vous finirez par vous retrouver avec des bibliothèques de taille totale plus petites.

Il convient de noter que, depuis Mojarra 2.1.6, un seul fichier JAR au format javax.faces.jar est disponible.


Dois-je préférer Mojarra plus léger

Ceci est un non-argument. Vous devriez regarder à quel point la mise en œuvre de JSF est robuste et bien maintenue. 

Le grand-père de Mojarra, Sun JSF RI 1.0, et les premières versions de RI 1.1 étaient encombrés de bugs méchants. À ce moment-là (autour de 2004-2006), MyFaces était définitivement la solution la plus stable. 

Depuis les 1.1_02 et 1.2_02, début 2006, la nouvelle équipe de développement Sun/Oracle JSF a fait un excellent travail. Non seulement avec la correction de bugs, mais aussi avec les améliorations de performances. À peu près à mi-parcours de la durée de vie de Mojarra 1.2 (environ 2007-2009), Mojarra était le meilleur choix que MyFaces. 

Depuis JSF 2.0, qui est venu avec une nouvelle gestion des économies d’états partielles, MyFaces était le meilleur choix en termes de performances en raison d’une approche différente et beaucoup plus efficace du calcul des deltas d’état, en particulier lors de l’utilisation d’arbres de composants volumineux. Mojarra n'est rattrapé que depuis la version 2.1.22 . Au cours de la chronologie 2.0/2.1, Mojarra n’avait que de graves problèmes avec <ui:repeat> dans des compositions complexes/imbriquées (entre autres, enregistrement de l'état brisé, traitement du dernier formulaire itéré, <f:ajax>, etc.) et avec implémentation de la portée flash } _ (la mise en œuvre initiale n’était pas du tout à l’épreuve des balles). MyFaces avait aussi son propre ensemble de bugs, mais ils étaient gérables.

Pour le moment, avec JSF 2.2, on ne peut pas vraiment dire à l’avance lequel est le meilleur. Les bogues n'exposent souvent que plus tard et la robustesse ne peut être évaluée qu'à la suite. Choisissez ce que vous "sentez" comme étant le meilleur. Parcourez leurs rapports de problèmes ( MyFaces et Mojarra ) pour en savoir plus sur les problèmes précédemment résolus et les problèmes actuellement ouverts. Si vous rencontrez un bogue spécifique, essayez avec les deux implémentations d’exclure celle-ci. Signaler si nécessaire pour maintenir la qualité globale des deux implémentations à un niveau élevé.


Aussi la page de téléchargement est bien JSF Mojarra ?

Leur page d'accueil a été déplacée plusieurs fois. Pour le moment (septembre 2017), il se trouve à l'adresse https://javaserverfaces.github.io . Vous pouvez trouver les bibliothèques également à org.glassfish:javax.faces dans Maven Central . Vous pouvez trouver le code source dans javaserverfaces/mojarra project in GitHub . Vous pouvez trouver les instructions d'installation dans le README.md ci-dessous.


Voir également:

69
BalusC

La réponse vient de mon blog:

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

UPDATE JUILLET 2013: voir la série d'articles et la mise à jour pour 2013 sur JSFCentral:

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


À première vue, les deux implémentations JSF (MyFaces et Mojarra) font la même chose, car elles sont basées sur le même standard. Le fait que vous puissiez passer d'une implémentation à une autre est un fait de la qualité de la spécification standard JSF.

Mais en bas, il y a beaucoup de raisons pour lesquelles MyFaces Core 2.x est meilleur que Mojarra. Notez que je suis un partisan du projet MyFaces, je vais donc vous donner ici juste mon point de vue:

  • Beaucoup de problèmes ont été corrigés. Seule la branche 2.0.x de 2.0.0-alpha à 2.0.7 a fermé 835 problèmes. Cela donne une mesure "brute" du nombre de contributions et de retours d'informations fournis par la communauté au fil du temps. Voici les chiffres des problèmes résolus au fil du temps: 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

  • Communauté au-dessus du code: la communauté MyFaces compte beaucoup de personnes possédant une connaissance exceptionnelle de JSF. S'abonner à l'utilisateur et à la liste de diffusion dev sont le meilleur moyen de savoir ce qui se passe, de recevoir des commentaires et de connaître les autres personnes intéressées par JSF. Voir Listes de diffusion MyFaces

  • Apache est bien connu pour tout prendre de Sun/Oracle et le rendre meilleur. Dans ce cas, MyFaces Core propose des optimisations intéressantes en matière d’économies d’État partielles, de composants composites et bien plus encore!.

  • MyFaces Core est compatible avec OSGi. Il fournit des interfaces SPI permettant de gérer des configurations spéciales lorsque vous avez besoin de davantage de contrôle sur le chargement de classes.

  • MyFaces Core a une meilleure compatibilité avec facelets 1.1.x !. Définissez simplement org.Apache.myfaces.REFRESH_TRANSIENT_BUILD_ON_PSS param Web config sur true et un mode spécial sera activé. Non c: si balises ou c: forEach ou ui: include cassé plus !. UPDATE MAI 2012 Un algorithme amélioré a été mis au point dans MyFaces Core. Il permet de réduire la taille de l'état, même dans certaines parties, lorsque facelets est utilisé pour mettre à jour l'arborescence des composants de manière dynamique. Ce paramètre n'est plus nécessaire.

  • MyFaces a d’autres projets (Trinidad, Tobago, Tomahawk, ExtVal, CODI, Orchestra, PortletBridge RI, ...) qui permettent de garder le code à l’ordre, car tous ces projets sont testés contre MyFaces Core, et s’il existe un bogue, c’est traité plus rapidement.

  • Vous pouvez utiliser svn pour commander et construire facilement n'importe quel projet MyFaces, car ils sont tous basés sur Maven et la plupart des IDE fournissent un support Maven.

  • Mojarra à l'heure actuelle (JUN 2011) a quelques méchants bugs liés à la sauvegarde d'état, que MyFaces n'a pas car sa mise en œuvre est complètement différente. En fait, l'algorithme de sauvegarde d'état partiel MyFaces offre une meilleure compatibilité avec la sauvegarde d'état JSF 1.2 que Mojarra. Mais notez que les gars de Mojarra travaillent là-dessus, mais que cela leur prendra des mois, voire des années.

  • L'innovation se passe sur MyFaces.

MISE À JOUR MAI 2012

Voir cet article 10 raisons pour lesquelles choisir MyFaces Core comme implémentation JSF pour applications Web

Pour les gars qui veulent voir une comparaison de performance entre MyFaces, Mojarra et Wicket, regardez Comprendre JSF 2 et Wicket: Comparaison de performance

UPDATE JUILLET 2013

La comparaison a été étendue pour inclure d'autres frameworks tels que Spring MVC, Tapestry, Grails 2 et Wicket. Voir l'article sur JSFCentral: Update JUL 2013 at JSFCentral

44
lu4242

Je dirais que ça n'a pas d'importance. 

J'ai récemment démarré un projet JSF 2.0 utilisant Myfaces et Primefaces. La semaine dernière, pour enquêter sur un bogue, j'ai essayé de l'exécuter sur Mojarra. Il suffisait d'échanger les fichiers JAR et de supprimer les entrées spécifiques de Myfaces dans web.xml - et tout fonctionnait sans problème. Certes, il s’agissait d’un prototype qui n’utilisait pas toutes les fonctionnalités de JSF, mais j’ai été assez impressionné par cette démonstration de compatibilité via la conformité aux normes.

Pourquoi ai-je besoin de plus de bocaux si j'utilise MyFaces?

  • les JAR myfaces-impl et myfaces-api sont l'équivalent des fichiers jsf-impl et jsf-api de Mojarra.
  • myfaces-bundle contient les deux pour plus de commodité, vous avez besoin de ceci ou des deux autres, pas des trois.
  • commons- * sont des bibliothèques qui contiennent des fonctionnalités de base utiles pour traiter des collections, des beans Java, etc. qu'il faudrait sinon réimplémenter (probablement plus lentement et avec plus de bugs). De nombreux autres projets les utilisent également.
8
Michael Borgwardt

Je m'en tiens généralement à la mise en œuvre de Mojarra sauf s'il y a une raison d'aller avec autre chose. J'utilise Netbeans, il est donc plus simple d'utiliser la configuration de projet "par défaut" qui utilise Mojarra sous GlassFish.

Enfin, j’utilisais MyFaces, c’était parce que je pensais utiliser Tomahawk et il me semblait raisonnable d’utiliser l’implémentation JSF de la même source. Cependant, je suis passé à Primefaces et cela fonctionne bien sous Mojarra. 

Actuellement, il semble que beaucoup de développement soit en cours avec les bibliothèques de composants JSF-2.0 mises en ligne. Donc, vous devriez apprendre et être capable de basculer entre les implémentations JSF en cas de problème.

La raison pour laquelle MyFaces contient davantage de fichiers jar, c’est qu’il contient davantage de fonctionnalités que la seule implémentation de référence. 

5
AlanObject

quel IDE utilisez-vous? Si vous utilisez Eclipse, les fichiers jar seront téléchargés lors de la création du projet jsf 2.0. Vérifiez ceci http://www.icesoft.org/training/icefaces-self-serve-training.jsf

2
user1099871

Il n'y a pas beaucoup de différence entre mojarra et MyFaces. Vous pouvez vérifier laquelle est la version la plus stable. Comme le dit Balusc, MyFaces est la version la plus stable (2005-2006). De plus, beaucoup de gens ont commencé à utiliser Mojarra après la 2.0 car il est devenu stable par rapport à myfaces.

1
Krishna

J'avais de graves maux de tête avec mojarra (2.2.8), des comportements étranges tels que les méthodes ajax ne s'exécutant qu'après la deuxième interaction utilisateur en raison des mises à jour précédentes des formulaires. Tous partis avec MyFaces.

0
Mateus Viccari