Подтвердить что ты не робот

Какую структуру я должен выбрать - Seam, Wicket, JSF или GWT?

Я обсуждаю, использовать ли Seam, Wicket, JSF или GWT в качестве основы для моего уровня представления в проекте Java.

Я сузил свой выбор веб-фреймворков Java до этого подмножества, основываясь на соображениях рынка труда, новизне технологии и рекомендациях других S.O. пользователей.

Какие факторы следует принимать во внимание при решении этих проблем?

4b9b3361

Ответ 1

Единственным из тех, что я использовал, является JSF, поэтому я не смогу дать вам отзывы о других, но здесь я беру на себя JSF. По моему опыту, в ту минуту, когда мы превратились из JSF в JSP в JSF в личиках, жизнь стала намного проще, поэтому я сосредоточусь на лицах. Кроме того, похоже, что Seam и JSF не являются взаимоисключающими.

Плюсы:

  • Создание компонентов facelet xhtml прост, что способствует повторному использованию.
  • Достойные возможности шаблонов с использованием встроенных тегов, таких как ui: insert, ui: include и ui: decorate
  • Простой доступ к Spring beans через faces-config
  • На основе XHTML веб-разработчики, незнакомые с java, могут быть эффективными
  • Хорошая библиотека виджетов, доступная в tomahawk/trinidad

Минусы:

  • Только запросы на отправку. Это может затруднить создание закладок.
  • Не как встроенный ajax-y как GWT, но это может быть исправлено при использовании с Seam

Я никоим образом не специалист в JSF/Facelets, поэтому я уверен, что есть другие, которых я пропустил. Надеюсь, кто-то еще будет разрабатывать.

Обновление для JSF 2.0:

  • Еще лучше использовать возможности повторного использования с составными компонентами
  • Библиотеки виджетов для 2.0 включают в себя перфорированные и моджаррские шкалы.
  • Позволяет получать запросы и закладки
  • Встроенная поддержка Ajax
  • Подробнее о JSF 2 см. http://andyschwartz.wordpress.com/2009/07/31/whats-new-in-jsf-2/

Ответ 2

Я использовал GWT с версии 1.4 и JSF, так как вышел спецификатор 2.0.

GWT - это клиентская среда, она генерирует JavaScript с Java. Ваша архитектура будет чистым клиент-сервером, что означает:

  • Лучше всего использовать крупнозернистые услуги.
  • Все объекты, которые отправляются на клиентскую сторону, должны быть полностью сериализуемыми (это означает, что нет ленивой загрузки или шаблона OpenSessionInView)
  • С GWT 2.0 вы можете создать свой gui с помощью xhtml, что намного проще в отношении стиля и структурирования HTML
  • GWT склоняется к хорошей архитектуре, если вы ее испортите, это будет плохо для рефакторинга
  • Идеальная история (кнопка браузера, закладки для ссылок) жесткая, вам, вероятно, придется сворачивать самостоятельно, хотя легко взломать что-то прямо перед собой.

JSF - это основанная на компонентах среда, с дизайном первого вида (позади кода, если хотите):

  • Легче сделать некоторый тип webapps (stateful, как корзина)
  • JSF + Seam имеет поддержку для разговоров (подумайте о мастере, как страницы, поддерживающие состояние на нескольких страницах)
  • Вы можете реализовать OpenSessionInView, в зависимости от вашего стека. Вероятно, это не рекомендуется, если вы используете EJB для уровня обслуживания/бизнеса.
  • JSF2 поддерживает превосходную поддержку AJAX, а с помощью набора компонентов, такого как RichFaces, вы можете создавать приятные webapps
    • Но если вы хотите изысканное поведение JavaScript, вам придется написать javascript
  • JSF отслеживает текущее состояние пользовательского интерфейса на стороне клиента или на стороне сервера. Это компромисс между сетевым трафиком или памятью сервера.

Резюме:

  • GWT более подходит для веб-приложений (думаю, gmail), которые требуют наилучшей производительности на стороне клиента. Легко писать пользовательские компоненты (вы пишете Java), и поскольку ваша серверная часть - это только уровень сервиса, вы можете быть полностью без гражданства на стороне сервера.
  • JSF более подходит для большинства приложений CRUD, которые лучше подходят для компонентно-ориентированного материала: подумайте о системе бронирования отелей/рейсов, интернет-магазине с корзиной покупок и т.д.

Ответ 3

Спасибо, ребята из калитки, за то, что они остались трезвыми и продолжали обсуждать эту дискуссию. Я пользователь калитки, и мне это нравится. Мои главные причины:

  • Это компонентная структура. Мне нравится работать с компонентами, а не с полными страницами.
  • Я могу позволить дизайнерам работать с шаблонами и страницами, когда я работаю над компонентами java

  • Нет ничего нового, чтобы учиться. Его "просто java и просто HTML"

  • Мне нравится механизм Ajax Fallback. Там, где в браузере нет поддержки JavaScript, особенно на мобильных устройствах, он возвращается к простому html, и все работает.
  • Отсутствие конфигурации xml - это плюс
  • Он поддерживает все, что я хочу в веб-приложении. например, валидация, интернационализация, поддержка кнопок с обратной связью и остаточные URL-адреса среди других.

Мой предыдущий опыт - GWT и JSF 1.0

Ответ 4

Seam - это структура приложения, а не уровень представления. Он был первоначально разработан, чтобы сделать JSF менее болезненным, но превратился в более общую концепцию инъекций зависимостей.

Я считаю, что вы можете использовать Seam с JSF, Wicket и GWT. Поддержка JSF является первичным и превосходным; Я не уверен, насколько хорошо поддерживаются два других.

Поскольку фокус ваших критериев, по-видимому, является конкурентоспособностью ваших навыков, я бы предложил попробовать Seam и JSF через Facelets. JSF является хорошо принятым стандартом и на самом деле приятен в использовании, если вы используете Facelets. Вы можете использовать функциональность AJAX с помощью Richfaces и Ajax4jsf. Шов более или менее стандартизован через JCP.

Ответ 5

Мой опыт в хронологическом порядке:

Сырые сервлеты - (да, много тяжелой работы, но это были ранние дни, и мы были бьющими бобрами!)

JSP - Я думал, что это был beez neez в то время, когда он вышел (если мы только знали;))

Echo - Удивительная структура, но не для страниц, которые должны быть дружественными к поисковым системам (таким же проблема с GWT)

Wicket - Удивительная структура - разработчики полностью понимают концепцию OO (в отличие от JSP и многих других) и применили все обычные OO-тонкости к этой структуре. Если вы цените "повторное использование", если вы цените инкапсуляцию, если вы цените разделение проблем, и если вы хотите привязать свою модель к пользовательскому интерфейсу, не беспокоясь о сортировке объектов и других подобных уродствах, то это основа для вас!

Ответ 6

В долгосрочном сценарии я бы рекомендовал использовать технологии, поддерживаемые спецификацией Sun. До сих пор это доказало, что дает множество реализаций, приводящих к выбору (часто также реализация с открытым исходным кодом), а поведение, как правило, очень хорошо определено.

Это поможет вам в сценарии поддержки, который, надеюсь, - ваш код тоже будет со временем. Хорошо написанный код живет вечно:)

В этом конкретном сценарии я бы предложил JSF. Я только пробовал реализацию Apache 1.1, но было больно быть на вершине JSP. Мы скоро пересмотрим его - я ожидаю, что я буду смотреть на JSF на лице.

Ответ 7

Я использовал Wicket и GWT довольно сильно. Никогда не научился любить Wicket.

Мое электронное сообщение о нем http://salk31.blogspot.com/2009/07/wicket-ajax.html

Глядя на GWT 2.0, uiBinder сегодня напомнил мне, насколько досадно было в Wicket сопоставлять дерево компонентов XML с тем, что было создано на Java. Движение GWT на этом выглядит намного лучше для меня.

Я больше не использовал Wicket больше года, поэтому, возможно, они многое исправили, но, учитывая современный браузер и поддержку JS, я не вижу смысла делать все это на сервере (знаю, знаю данные местонахождение).

Ответ 8

Если вы рассматриваете только рынок труда, вы должны выбрать JSF. Но я полагаю, что будущее RIA принадлежит GWT и gwt, как технологии на стороне клиента.

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

Ответ 10

Я начал с JSF (1.1 и 1.2), и было так больно, что я решил изменить в следующих проектах. Я немного исследовал, и я решил попробовать Wicket, и это было так приятно. Также я пробовал JSF 2, но все равно то же самое.

Оба они являются компонентами фреймворка, но вещи с Wicket легки, а JSF - полный беспорядок.

Калитка через JSF:

  • В Wicket HTML HTML. JSF имеет свои собственные метки разметки. H: dataTable (для таблиц) - нонсенс. Поверьте мне, Sun Engineers должны были быть пьяны при его разработке.
  • В Wicket такие вещи, как безопасность,
  • В JSF на панели навигации отображается предыдущий URL. Действительно странно.
  • JSF мне кажется очень тяжелым, и с такими библиотеками, как Rich или Prime, еще больше.
  • Иногда кажется невозможным узнать, что происходит. Вы всегда орали на свой компьютер, потому что не знаете, почему JSF делает.

JSF над калитки:

  • В Wicket вы собираетесь написать больше Java (привязка к HTML). По крайней мере, ваша IDE предоставит поддержку рефакторинга и проверки.
  • Управление ресурсами в Wicket немного сложнее.
  • Существует гораздо больше документации и поддержки для JSF

Одним из распространенных недостатков является то, что размер сеанса является проблемой (поскольку там хранятся графические компоненты).

В целом, если вам нужно решить только между Wicket и JSF, для меня не будут сомневаться, Wicket.

Ответ 11

JSF устарел (JSF даже не указан в качестве рамки для сравнения, когда евангелисты сравнивают или говорят о веб-фреймворках в 2010 году).

Теперь полномасштабные приложения большого масштаба создаются с использованием GWT, YUI, JQuery и т.д.

Прочитайте некоторые статьи по Google и выше, будет очевидно.

(ВСЕ JOBS на JSF должны поддерживать устаревшие приложения).