Какую структуру я должен выбрать - Seam, Wicket, JSF или GWT?
Я обсуждаю, использовать ли Seam, Wicket, JSF или GWT в качестве основы для моего уровня представления в проекте Java.
Я сузил свой выбор веб-фреймворков Java до этого подмножества, основываясь на соображениях рынка труда, новизне технологии и рекомендациях других S.O. пользователей.
Какие факторы следует принимать во внимание при решении этих проблем?
Ответы
Ответ 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
Я использовал 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, калитка. Потому что серверу не нужно хранить состояние клиента, а также использовать мощность процессора клиента. Это огромная выгода, вам не нужно сериализовать состояние клиента между серверными компьютерами для достижения отказоустойчивой системы.
Ответ 9
Я знаю это немного позже, но есть много сравнения на Framewrok, особенно на этом, у которого был durinf Devox 2010 conf:
http://www.devoxx.com/display/Devoxx2K10/Comparing+JVM+Web+Frameworks
Это поможет вам выбрать:)
Ответ 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 должны поддерживать устаревшие приложения).