четверг, 29 марта 2007 г.

JavaServer Faces


Я ненавижу JavaServer Faces(JSF) и ASP.NET как технологию для Web-программирования. Соответственно, все продукты порожденные данной технологией(Sun Java ServerFaces Reference Implementation, Apache MyFaces, Shale) тоже отстой. Возможно какой-нибудь внутренний ресурс предприятия и можно на этом сделать(и то надо сперва очень хорошо подумать), но публичный web-сайт на этом писать просто нельзя. Причины тому следующие:



  1. Использует Java ServerPages тэги для создания дизайна. Это нехорошо. Дизайн должен создаваться дизайнером, а дизайнер должен знать HTML, XHTML, CSS. Используя JSF он должен изучить набор других тэгов. Кроме того, в стандартном наборе компонент имеются компоненты без внутренних данных, дублирующие стандартные тэги HTML. Зачем это надо было делать не совсем понятно.

  2. Компоненты имеют внутреннее состояния. Т.е. у компонента имеются некоторые данные(например, значение в ячейках таблицы). Поскольку при выполнении пользователем различных действий над компонентом(например, отсортировать значения в выбранной колонке таблицы), состояние компонента меняется, то по рекомендациям HTTP-протокола надо отсылать POST-запросы на сервер. Возможности использовать GET просто нет. Соответственно, пользователь, например, не сможет добавить себе в закладки страницу с таблицей, отсортированной по определенному столбцу. Ему придется каждый раз сортировать ее.

  3. По своей природе Web-технологии очень гибкая штука и сужение его до некоторых стандартных GUI-подобных компонент слишком ограничивает возможности всех разработчиков сайта, в первую очередь дизайнеров.



В принципе для быстрого создания какого-нибудь стандартного внутреннего ресурса компании JSF подойдет. Однако было бы намного лучше, если бы Sun сделала что-то наподобие Ruby on Rails, а не содрала(во многом) ASP.NET.

2 комментария:

Анонимный комментирует...

JSF и ASP.NET никогда не создавались для создания сайтов. Пусть этим занимаются дизайнеры, верстальщики, "знатоки" HTML, даже программисты на PHP, PERL и т.д. Мощь технологий JSF и ASP.Net не заканчивается на компонентах - стоит лишь повнимательнее на них посмотреть. Так что такой подход, как "ненавижу" вряд ли уместен.
Эти технологии созданы для облегчения написания бизнес-приложений со сложной логикой. Для статических страниц используйте HTML-лучше не найдете. Это и будет сайт. Но в сложных приложениях без динамических страниц не обойтись. В приложении можно использовать CSS, скрипты, статические страницы - без проблем. Так что "ненавижу" - это скорее подход ламера, никогда не работавшего над серьезным проектом.

Ilya комментирует...

а я согласен, что jsf - полный п... :)
когда в нашем проекте дошло дело до паджинации и ничего лучше не нашлось как t:dataScroller, который передает все по посту, мы решили дружно отказаться от этой злобной технологии и писать обычные, понятные и предсказуемые (!) jsp-страницы