Ответы пользователя по тегу JSF
  • Что такое jsf и Richfaces?

    @bobzer
    Java EE Developer
    Oracle говорит, что JSF:
    JavaServer Faces technology establishes the standard for building server-side user interfaces

    Если это "слишком заумно", то попробую упростить. JSF - это стандарт, который описывает один из подходов, который можно использовать для формирования HTML-странички на сервере, с последующей передачей её клиенту (браузеру). Существует масса технологий для того, чтобы делать то же самое, это одна из них.

    Есть базовые библиотеки, реализующие стандарт JSF, на вышеприведённой странице от Oracle есть ссылка на Mojarra.

    Richfaces - это одна библиотек, расширяющих стандарт JSF своими "плюшками". Есть и другие библиотеки.

    Обычно, JSF-проект включает в себя Mojarra и одно из расширений, они практически всегда хорошо уживаются. Ставить 2 расширения - не комильфо и чревато, плюс бардак в проекте. Что-то вроде установки двух двигателей на авто - редкий случай...

    Общий принцип работы. Вы пишете XML-страницы, которые содержат стандартный HTML и специфическую разметку стандарта JSF. При обращении к страничке из браузера (GET/POST), библиотеки JSF на сервере обрабатывают XML-страницу, формируют из неё HTML для браузера и возвращают это в ответе. Исходные XML-страницы описывают и разметку и наполнение этой разметки данными с сервера. Таким образом, при обработке запроса на сервере специфические теги преобразуются в HTML-элементы, и эти элементы наполняются данными из вашей бизнес-логики.

    Технология довольно распространённая в Java EE. Насчет преимуществ - это лишь тема для холиваров...
    Ответ написан
  • Чем заменить JSF(primefaces)

    @bobzer
    Java EE Developer
    Работал с JSF пару лет на паре проектов, впечатления не из лучших. JSF красив только в примерах, типа написал десяток строчек — получил полнофункциональный интерфейс. Когда пишешь реальные приложения, вот так красиво можно разве что прототип накидать, когда же дело доходит до специфических рюшечек, да и просто сложной функциональности, все становится плохо. Код превращается в мешанину, в которой все спутано: логика размазана между страницами и серверными компонентами, на клиенте часть логики, на сервере — работа с интерфейсом. Сами страницы — гремучая смесь html/el/javascript и еще черт знает чего. Всегда надо помнить о цикле обработки JSF-страницы, чтобы, например, не читать из базы 7 раз одни и те же данные в момент обновления пары визуальных элементов на странице. Также надо держать в голове некие магические правила, при которых все работает, и не дай Бог применить неправильную комбинацию акшонов/онкликов/онкомплитов при которой все просто перестает работать, причем каких-либо возможностей нормального дебага не существует. Да, когда уже наработаны готовые рабочие решения, типа «если надо при закрытии диалога кроме выполнения акшона, еще обновить вон тот элемент, и сообщить тому бину что-то, то делается это ТАК», то основная часть работы делается без непонятных глюков. Но даже при этом, у меня лично, рисование каждой новой JSF-странички вызывает аллергию.

    Насчет связки JavaScript-фреймоврков с Java ничего не скажу, не пробовал, но подозреваю схожую с JSF историю — сначала что-то легко и красиво заработает, а потом может начать вылазить такой ужас, что JSF покажется цветочками. Не хочу этим сказать, JavaScript-фреймоврки — это плохо, а только лишь что если будете пробовать, проверяйте что-то более сложное, чем демо-странички, прежде чем применять в серьезном проекте.

    Насколько мне известно, Java в вебе в большинстве случаев применяется в корпоративных приложениях, имеющих ограниченное количество постоянных пользователей. Для таких случаев очень хорошо подходит GWT — писать на нем очень удобно, т.к. всё пишется на Java. Сгенерированный клиентский JavaScript весит обычно немало, но, загружается один раз, и лежит закешированный в браузере до следующего обновления вашего ПО. А все это время между клиентом и сервером ходят только чистые данные, и никаких html-оберток над ними. За счет такой экономии, за пару часов работы первоначальная загрузка большого JavaScript-а полностью компенсируется. GWT не очень подходит для обычных сайтов в Интернете, т.к. там пользователи обычно непостоянные (открыл страничку, посмотрел, ушел и не вернулся), и каждому загружать большой JavaScript затратно. В GWT есть готовый набор основных компонентов. Также есть фреймворки над GWT, предоставляющие более комплексные компоненты, но с ними вы опять вернетесь к истории с JSF — отлично работает и быстро разрабатывается только пока просто, потом начинается ступор, раскопки и научный тык.
    Ответ написан
    1 комментарий