Я ненавижу JavaServer Faces(JSF) и ASP.NET как технологию для Web-программирования. Соответственно, все продукты порожденные данной технологией(Sun Java ServerFaces Reference Implementation, Apache MyFaces, Shale) тоже отстой. Возможно какой-нибудь внутренний ресурс предприятия и можно на этом сделать(и то надо сперва очень хорошо подумать), но публичный web-сайт на этом писать просто нельзя. Причины тому следующие:
- Использует Java ServerPages тэги для создания дизайна. Это нехорошо. Дизайн должен создаваться дизайнером, а дизайнер должен знать HTML, XHTML, CSS. Используя JSF он должен изучить набор других тэгов. Кроме того, в стандартном наборе компонент имеются компоненты без внутренних данных, дублирующие стандартные тэги HTML. Зачем это надо было делать не совсем понятно.
- Компоненты имеют внутреннее состояния. Т.е. у компонента имеются некоторые данные(например, значение в ячейках таблицы). Поскольку при выполнении пользователем различных действий над компонентом(например, отсортировать значения в выбранной колонке таблицы), состояние компонента меняется, то по рекомендациям HTTP-протокола надо отсылать POST-запросы на сервер. Возможности использовать GET просто нет. Соответственно, пользователь, например, не сможет добавить себе в закладки страницу с таблицей, отсортированной по определенному столбцу. Ему придется каждый раз сортировать ее.
- По своей природе Web-технологии очень гибкая штука и сужение его до некоторых стандартных GUI-подобных компонент слишком ограничивает возможности всех разработчиков сайта, в первую очередь дизайнеров.
В принципе для быстрого создания какого-нибудь стандартного внутреннего ресурса компании JSF подойдет. Однако было бы намного лучше, если бы Sun сделала что-то наподобие Ruby on Rails, а не содрала(во многом) ASP.NET.