Плюсы и минусы различных технологий Java Web Presentation Layer

В настоящее время я работаю над веб-приложением, которое активно использует JSF и IceFaces. У нас было несколько обсуждений перехода на другой уровень представления, и я подумал, что перенесу обсуждение в SO и посмотрю, что думают эксперты.

Мне любопытно, может ли кто-нибудь взвесить плюсы и минусы различных технологий уровня представления Java. Если вы работали только с одним, скажите, почему вы его любите или ненавидите. Если вы работали с несколькими, поделитесь своими впечатлениями о том, как они сочетаются друг с другом.

Рассматриваемые нами технологии:

  • IceFaces
  • JSF (без IceFaces)
  • GWT (Google Web Toolkit)
  • Калитка
  • Гобелен

И если мне что-то не хватает в моем списке, дайте мне знать.

Спасибо!


person rtperson    schedule 11.02.2009    source источник


Ответы (8)


Мое мнение сильно предвзято в отношении Wicket, потому что я использовал его некоторое время после того, как слишком много раз спотыкался о мины JSP.

Wicket PRO:

  • Истинное разделение макета и кода.
  • Компонентная, что означает высокую возможность многократного использования элементов сайта; Например, вы можете создать предустановленную форму с автоматической маркировкой, стилями CSS и всем остальным, и, просто изменив его объект DAO в конструкторе компонента, его можно полностью повторно использовать в другом проекте.
  • Отличная поддержка таких вещей, как Ajax, портлеты и различные фреймворки в целом, прямо из коробки, И, что более важно, для работы он не полагается ни на что другое, кроме slf4j / log4j, все необязательно!

Минусы Wicket:

  • В общем, у разработчиков есть некоторая путаница, и дженерики Wicket сейчас немного запутаны, хотя в 1.4 они были сильно очищены.
  • Некоторые компоненты (например, Form.onSubmit()) требуют обширного подкласса или переопределения анонимного метода для легкого внедрения поведения. Частично это связано с мощным дизайном Wicket, основанным на событиях, но, к сожалению, это также означает, что с Wicket легко внести путаницу в код.

Случайные минусы: (то есть я не использовал, но это мои мнения и / или то, что я слышал)

  • GWT основан на JavaScript, что для меня звучит глупо. Основная проблема в том, что он слишком напоминает мне JSP: s и его автоматически сгенерированные классы, которые ужасны.
  • Tapestry не разделяет разметку и код должным образом таким образом, чтобы их можно было легко проверить между ними, что вызовет проблемы в будущем.
person Esko    schedule 12.02.2009
comment
Эско, я разделяю ваше отвращение к JavaScript, но, возможно, вы захотите взглянуть на книгу Дугласа Крокфорда «JavaScript: хорошие части». Кроме того, работа с JQuery во многом подавила мой рвотный рефлекс при упоминании JavaScript. - person rtperson; 12.02.2009
comment
Спасибо, я только что написал название книги в почтовом ящике, так что, в конце концов, проверю. Oh, и Wicket, конечно, имеет отличную поддержку jQuery, mootools, dojo и scriptaculous через Wicket Stuff (подпроект инкубатора компонентов). - person Esko; 13.02.2009
comment
Tapestry 5 позволяет вам разделять разметку и код, но не обеспечивает этого, как Wicket. - person Sergey; 21.09.2009
comment
Это правда, однако сильная сторона Wicket на самом деле обеспечивает его соблюдение, это не позволяет разработчикам лениться в этом отношении, а разработчикам действительно не следует позволять лениться. - person Esko; 21.09.2009

Я использовал GWT для пары небольших проектов. Вот что мне в нем нравится:

  1. По умолчанию это ajax, поэтому мне не нужно было заставлять использовать ajax, он просто появился вместе с использованием GWT.
  2. У него хорошее разделение клиентского и серверного кода.
  3. Я могу модульно протестировать свой клиентский код с помощью junit
  4. Он позволяет создавать четкие и быстрые приложения, в основном потому, что это ajax.

Что мне не нравится:

  1. Некоторые вещи работают не так, как ожидалось. Например, я видел случаи, когда события щелчка не срабатывали, как ожидалось, поэтому мне пришлось найти обходной путь.
  2. Автоматическое развертывание на tomcat, работающее в eclipse, иногда просто перестает работать, и я никогда не мог понять, почему.
person Don Branson    schedule 11.02.2009

Самый большой вопрос, который я задам, - почему вы меняете уровень представления? Это очень дорогая цена, и я вижу, что преимущества одной технологии перевешивают другие, не меньше, чем затраты на изменение ...

person Stephane Grenier    schedule 11.02.2009
comment
Хороший вопрос. Наша неудовлетворенность IceFaces проистекает из а) исключений из ада - загадочного мяса - проблемы, присущей жизненному циклу JSF, б) многие здесь воспринимают ее как тяжелую и медленную и в) слабой поддержки сообщества. Мы рассматриваем изменения для нового проекта, а не для нашего существующего приложения. - person rtperson; 11.02.2009
comment
Хорошо, если это для нового проекта. Мне также интересно узнать, как вы отреагировали на IceFaces, так как я уже думал об этом раньше. Когда некоторое время назад он впервые стал открытым, это казалось очень интересным решением. Но я никогда не пробовал на полномасштабном приложении ... Очень интересно. - person Stephane Grenier; 12.02.2009
comment
Большой плюс IceFaces в том, что он упрощает создание интерфейса с поддержкой AJAX. Это достигается за счет сокрытия большого количества сложностей. Но, конечно, бывают случаи, когда вам хочется заглянуть под капот, и IceFaces делает это труднее, чем нужно. (продолжение ...) - person rtperson; 12.02.2009
comment
Например, если вы устанавливаете идентификатор для DIV, этап рендеринга IceFaces засоряет идентификаторы каждого отдельного компонента в этом DIV только что добавленным именем. На нашем сайте есть несколько небольших эффектов Javascript, и все они регулярно ломаются из-за этого. Кроме того, он не очень хорошо работает с JQuery. - person rtperson; 12.02.2009
comment
Интересно ... А что с производительностью? Мне всегда было любопытно посмотреть на более крупный сайт с большим трафиком. - person Stephane Grenier; 13.02.2009
comment
У нашего текущего проекта IceFaces не более нескольких сотен пользователей, поэтому я мало что знаю о его производительности при больших нагрузках. Поработав над несколькими крупными сайтами электронной коммерции, я сомневаюсь, насколько хорошо IceFaces сможет справиться с таким трафиком. Но я, честно говоря, не могу сказать наверняка. - person rtperson; 13.02.2009
comment
Я нашел полезную информацию о масштабируемости IceFaces здесь: icefaces.org/JForum/posts/ list / 2840.page. Итог: для больших масштабируемых сайтов принудительная отправка AJAX может быть сложной задачей. - person rtperson; 13.02.2009
comment
Вот что мне было интересно. На большом сайте вы не хотите, чтобы все было ajax'ом, вы хотите выбирать, какие элементы важны. Спасибо за подсказку о IceFaces, приятно слышать от кого-то, кто использовал его из первых рук. Спасибо. - person Stephane Grenier; 17.02.2009

Короче:

= JSF =

ЗА:

  • компонентная архитектура;
  • множество библиотек и инструментов;
  • неплохая поддержка IDE

МИНУСЫ:

  • большой вес, как в процессоре / памяти, и кривой обучения;
  • когда что-то работает не так, как ожидалось, трудно отлаживать

= КАЛИТКА =

ЗА:

  • легкий;
  • разумная система шаблонов;
  • хорошие уроки;

МИНУСЫ:

  • справочная документация не так хорошо организована и глубока, как учебные пособия;
  • У команды разработчиков были серьезные трудности, особенно при становлении и инкубации проекта. Это привело к путанице по важным аспектам фреймворка, в то время мне пришлось переключиться на другой фреймворк из-за этого ...
person Dimitri De Franciscis    schedule 12.02.2009
comment
В то время он казался мне легким ... ну, по крайней мере, легче, чем JSF. - person Dimitri De Franciscis; 12.02.2013

А как насчет полосок?

person A_M    schedule 17.02.2009

Я выбрал бы Калитка. Использовали его, и он дает отличную возможность повторного использования. У него один из самых ярких форумов / списков рассылки. Как вопрос, и ответ на него будет через несколько минут. Имеет отличную поддержку AJAX. Одна из обычных минусов, приписываемых Wicket, - это крутая кривая обучения. Что ж, это были одни из минусов старости, которые сейчас не имеют никакой ценности.

JSF: Лучше держись от этого подальше. Другая команда, которая разработала проект на JSF, теперь думает о переходе на Wicket после того, как мы добились успеха с ним.

@Megadix: Как вы сказали, вначале документация была плохой, но теперь это не так. Есть отличная книга под названием Wicket in Action, написанная разработчиками Wicket. Образец кода, представленный на сайте, также является хорошим местом для начала и изучения.

person Franklin    schedule 23.02.2009

Интересно, есть ли у вас уровень обслуживания, отличный от веб-клиента, который веб-контроллеры просто вызывают для выполнения своей работы.

Если вы это сделаете, выбор технологии веб-интерфейса может быть отделен от серверной части. Если он представлен как контрактная первая веб-служба, вы можете использовать его в разных приложениях. Пока ваши клиенты могут отправлять и получать XML, они могут взаимодействовать с вашими службами. Хотите перейти на Flex? Не беспокойтесь - направьте его на службу и верните ответ XML.

person duffymo    schedule 11.02.2009
comment
Это хорошая идея. Наши слои в значительной степени разделены, хотя и не совсем устойчивы к SOA. И хотя здесь мы используем веб-сервисы, производительность между нашими уровнями представления и сервисами является достаточной проблемой, и мы, вероятно, не пойдем в этом направлении на этот раз. - person rtperson; 12.02.2009

См. Мое сравнение калитки и гобелена 5: Разница между гобеленом Apache и Apache Wicket.

person Sergey    schedule 15.04.2009