Con Javascript y marcos como jQuery, tiene total flexibilidad y control total. Con ext's, etc., pierde mucho control y debe adaptarse al marco. Con JSF pierde totalmente el control y debe adaptarse totalmente al framework. Se te invoca en ciclos de vida, etc. y finalmente no tienes control sobre cuándo se puede realizar la llamada al servidor y dónde no. Si va a hacer algo considerado "especial", está en una posición muy difícil. Y en el mundo JSF, incluso las cosas básicas como la clasificación de tablas de varias columnas o los campos en los que solo puede escribir un conjunto limitado de caracteres (como el campo numérico) se consideran "especiales".
Sin embargo, cuanta más flexibilidad tenga, más errores o malas prácticas podrá cometer. La alta flexibilidad funciona solo con programadores altamente inteligentes, otros convertirán el proyecto en una pesadilla inmanejable.
Pero, con JSF y su flexibilidad limitada, siempre hay solo unas pocas (o incluso una) forma correcta de hacer algo. Es muy limitado, no puede crear atajos, debe escribir más XML, etc., pero cuando se adapta al estándar, hay un mejor control sobre el código que producirán los programadores inexpertos o poco calificados. Como resultado, las grandes corporaciones aman JSF porque es 'más seguro' para ellas.
Cuando me mudé de GWT a JSF, me sorprendió ver cuántas cosas, que eran naturales para mí, se consideraban muy atípicas y cuántas cosas simples eran tan difíciles de lograr. Además, incluso hacer los cambios más pequeños, como agregar el signo ':' después de la etiqueta, que en la aplicación con tecnología GWT / jQuery cambiaría una etiqueta generadora de función, requirió cambiar docenas de archivos con propiedades localizadas, que ni siquiera fue considerado por cualquiera excepto yo extraño ...