Avec Javascript et des frameworks tels que jQuery, vous avez une flexibilité totale et un contrôle total. Avec les extensions, vous perdez beaucoup de contrôle et devez vous adapter au framework. Avec JSF, vous perdez totalement le contrôle et devez totalement vous adapter au framework. Vous êtes appelé dans les cycles de vie, etc. et finalement vous n'avez aucun contrôle sur le moment où l'appel au serveur peut être effectué et où pas. Si vous devez faire quelque chose de «spécial», vous êtes dans une position très difficile. Et dans le monde JSF, même les éléments de base tels que le tri de table multicolonne ou les champs dans lesquels vous ne pouvez taper qu'un jeu limité de caractères (comme un champ numérique) sont considérés comme «spéciaux».
Cependant, plus vous avez de flexibilité, plus vous pouvez commettre d'erreurs ou de mauvaises pratiques. Une grande flexibilité ne fonctionne qu'avec des programmeurs très intelligents, d'autres transformeront le projet en cauchemar ingérable.
Mais, avec JSF et sa flexibilité limitée, il n'y a toujours que quelques (ou même une seule) façon correcte de faire quelque chose. Vous êtes très limité, vous ne pouvez pas créer de raccourcis, vous devez écrire plus de XML, etc. - mais lors de l'adaptation au standard, il y a un meilleur contrôle sur le code que les programmeurs inexpérimentés ou peu qualifiés produiront. En conséquence, les grandes entreprises aiment JSF parce qu'il est «plus sûr» pour elles.
Quand je suis passé de GWT à JSF, j'ai été choqué, combien de choses, c'était naturel pour moi, étaient considérées comme très atypiques et combien de choses simples étaient si difficiles à réaliser. De plus, même apporter les plus petits changements, tels que l'ajout d'un signe ':' après l'étiquette, qui dans l'application alimentée par GWT / jQuery changerait une fonction générant l'étiquette, nécessitait de changer des dizaines de fichiers avec des propriétés localisées, ce qui n'était même pas pris en compte par n'importe qui sauf moi étrange ...