Comme souligné dans un précédent billet, intitulé Struts – JSF – Même combat??, beaucoup de personnes se demandent quel framework utiliser pour écrire leur application web : Struts ou JSF ? Avant de pouvoir répondre à cette question, il faut comprendre comment chacun se positionne par rapport à l’autre.

Alors que certains annonçaient la mort de Struts suite à l’arrivée de JSF, l’auteur de Struts et co-auteur des spécifications de JSF, Craig McClanahan, clamait haut et fort que le premier de disparaîtra pas[1]. En effet, Struts et JSF n’ont pas le même champ d’action. Mais pourquoi ?

JSF est orienté view controler alors que Struts est plus orienté action controler[2]. Donc ces deux frameworks sont complémentaires. Le problème est que chacun empiète sur le terrain de l’autre. A savoir que Struts propose des tag libs pour les vues et une définition de la navigation au travers des pages. Et de son côté JSF supprime la notion de servlet grâce aux managed beans et propose l’aide à la réalisation de contrôle de formulaire[3].

Compte tenu de cette situation, il n’est pas évident de faire son choix entre ces deux options :

  • JSF : une jeune spécification mais réfléchie[4] de Sun pour J2EE
  • Struts : une application mature, répandue et portée par la communauté des développeurs Java

Après avoir utilisé ces solutions, il est évident que JSF offre une mise en place beaucoup plus simple et rapide[5]. Néanmoins, la maturité de Struts lui permet de fournir des outils dont il est difficile de s’en passer quand on a l’habitude de les utiliser. Il est vrai que Tiles et Validator manquent énormément à JSF. Alors faut continuer son chemin avec Struts ?

Pour les nouveaux projets, il vaut mieux partir sur du JSF. Par contre, pour les projets existant, il est préférable de garder Struts. Quitte à réaliser une migration progressive à grâce JSF Integration ou le futur Struts Shale. Attention ! JSF Integration doit être seulement utilisé pour effectuer une migration et non pas pour mettre en place une solution viable. En effet, la cohabitation de Struts et JSF se révèle très bancale au sein de cette extension.

Doit-on dire au revoir à Struts ? Non ! Car Struts Shale offre des perspectives très attrayantes. Il se base sur JSF et intègre tous les outils présents dans l’actuel Struts[6] en y incorporant de nouveaux modules.

Pour résumer, le futur se profile avec Struts et JSF via Struts Shale. Donc vivement Struts Shale !

Notes

[1] Une explication a été donnée dans le billet Evolution des applications Web par Craig McClanahan.

[2] JSF est axé sur la partie vue alors que Struts sur la partie contrôleur du modèle MVC.

[3] Les contrôles de formulaires au travers de JSF est extrêmement décevants.

[4] Même si son utilisation révèle parfois quelques lacunes. Oublis qui heureusement sont comblés par des implémentations offrant des extensions tel que MyFaces.

[5] Et ce sans évoquer l’intégration dans des outils de type RAD tel que Sun Java Studio Creator 2 !

[6] Qui doit être appelé Struts Classic maintenant.