С Javascript и такими фреймворками, как jQuery, вы получаете полную гибкость и полный контроль. С ext и т.д. вы теряете контроль и должны адаптироваться к фреймворку. С JSF вы полностью теряете контроль и должны полностью адаптироваться к структуре. Вы вызываются в жизненных циклах и т. Д., И, наконец, вы не можете контролировать, когда можно сделать вызов на сервер, а где нет. Если вы собираетесь сделать что-то «особенное», вы находитесь в очень тяжелом положении. А в мире JSF даже такие базовые вещи, как сортировка многоколоночной таблицы или поля, в которые можно вводить только ограниченный набор символов (например, числовое поле), считаются «особыми».
Однако чем больше у вас гибкости, тем больше ошибок или неправильных действий вы сможете совершить. Высокая гибкость работает только с очень умными программистами, другие превратят проект в неуправляемый кошмар.
Но с JSF и его ограниченной гибкостью всегда есть только несколько (или даже только один) правильный способ что-то сделать. Вы очень ограничены, вы не можете создавать ярлыки, вы должны писать больше XML и т. Д. - но при адаптации к стандарту появляется лучший контроль над кодом, который будут создавать неопытные или неопытные программисты. В результате крупные корпорации любят JSF, потому что он «безопаснее» для них.
Когда я перешел с GWT на JSF, я был шокирован тем, как много вещей, которые были естественными для меня, считались весьма нетипичными и скольких простых вещей было так сложно достичь. Более того, даже внесение мельчайших изменений, таких как добавление знака ':' после метки, что в приложении на базе GWT / jQuery будет изменять метку, генерирующую одну функцию, потребовало изменения десятков файлов с локализованными свойствами, что даже не было рассмотрено кто-нибудь кроме меня странный ...