Каковы плюсы и минусы разных веб-фреймворков Java? [закрыто]

Я рассматриваю возможность создания собственного веб-сайта с использованием Java и пытаюсь решить, какую инфраструктуру использовать. Однако при быстром поиске Java-фреймворков вы получите более 50 вариантов на выбор!

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

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

Есть ли кто-нибудь, кто имеет опыт работы с некоторыми из этих платформ и может дать рекомендацию? Является ли огромное количество вариантов всего лишь ранним предупреждением, чтобы по возможности избежать веб-разработки на основе Java?

23.08.2008 20:58:25
В какой-то степени это все равно, что сказать: «быстрый поиск инструментов дает более 50 вариантов на выбор; я должен выбрать молоток, отвертку или плоскогубцы?» Тем не менее, с подвопросами, это достойный «хороший субъективный» вопрос.
Pops 30.08.2011 20:27:13
«Забавно» как обычно, чрезвычайно полезный вопрос и ответы (я только что заказал книгу о калитке, спасибо всем), но весь пост закрыт как неконструктивный. «этот вопрос, скорее всего, будет» - и этот сухой факт, ничего спекулятивного, о, ирония…
greenoldman 8.03.2012 20:40:41
24 ОТВЕТА
РЕШЕНИЕ

Я довольно широко использовал Tapestry 3 , Wicket , Echo и JSF . Я бы порекомендовал вам просмотреть их и выбрать тот, который кажется вам наиболее простым и наиболее подходящим для вашей работы.

Из них мне было удобнее всего работать с Wicket из-за легкого характера компоновки компонентов и простоты шаблонизации страниц. Это происходит вдвойне, так что если вы используете свой собственный db-код вместо Hibernate или какой-либо другой фреймворк (я никогда не был полностью доволен Wicket Hibernate или Spring Integration).

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

Гобелен - отличный продукт, но он явно сильно отличается от других с точки зрения модели разработки, поскольку его возглавляет в основном один чувак. Говард Льюис Шип, без сомнения, достаточно умен, но я разочарован их решением забыть о обратной совместимости с каждым выпуском. Опять же, однако, для ваших нужд это может не иметь значения, и я всегда находил, что продукты Гобеленов приятны для работы.

JSF существует уже много лет и до сих пор чувствует себя как нечто, что парень из Struts создал, чтобы решить все проблемы Struts. Без реального понимания всех проблем со Struts. У этого все еще есть незаконченное чувство к этому, хотя продукт очевидно очень гибок. Я использую его и испытываю некоторую любовь к нему, с большими надеждами на его будущее. Я думаю, что следующий выпуск (2.0), который будет поставляться в JEE6, действительно принесет его в свой собственный, с новым синтаксисом шаблона (похожим на Facelets) и упрощенной компонентной моделью (пользовательские компоненты только в 1 файле ... наконец).

И, конечно же, существует миллион более мелких платформ и инструментов, которые получают свои собственные фолловеры ( Velocity для базовых потребностей, необработанные JSP , Struts и т. Д.). Однако я обычно предпочитаю компонентно-ориентированные фреймворки.

В конце я бы порекомендовал просто взглянуть на Tapestry, Wicket и JSF и выбрать тот, который кажется вам лучшим. Вы, вероятно, найдете тот, который вам подходит, чтобы работать очень быстро.

58
15.12.2010 15:21:32
Если ваше веб-приложение основано на контенте, как система форумов, я предлагаю вам использовать GWT и Ext-js. Если ваше веб-приложение больше похоже на настольное приложение, такое как ERP-терминал, я рекомендую вам использовать ZK, Echo3, Vaddin и GWT. Я не буду предлагать какие-либо решения JSF, потому что без факта «Это стандарт JEE» я не нашел никакой пользы для их использования.
Zanyking 9.11.2009 07:24:20
@Zanyking - Если ваш форум нуждается в SEO, GWT вам покажется сложным.
jsight 9.11.2009 16:58:29
JSF, вероятно, является излишним для веб-сайта, вместо этого я бы выбрал более производительные фреймворки, ... разработка должна оставаться веселой, а JSF не
HeDinges 30.12.2009 11:12:38
Tapestry, Wicket, JSF и Echo ориентированы на компоненты, а GWT, Ext-js и Vaadin ориентированы на Javascript. Не забудьте взглянуть на все замечательные «классические» фреймворки MVC, такие как Spring MVC, фреймворк Play, Grails и Stripes. У них совершенно другая модель программирования по сравнению с предыдущими, но есть и другие плюсы (вот почему существует так много сред - разные цели, потребности и вкус требуют разных инструментов).
DaGGeRRz 12.11.2010 20:36:06

Отказ от ответственности: я работаю в Vaadin (ранее IT Mill)

Если вы делаете что-то RIAish, вы можете взглянуть на Vaadin . Это AJAX-среда с открытым исходным кодом, ориентированная на пользовательский интерфейс, которую мне приятно использовать (я сам из PHP).

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

Несмотря на то, что исследование проводится в вики компании, я могу заверить, что оно объективное, подлинное и правдивое, хотя я не могу заставить вас поверить мне.

9
24.02.2011 23:15:12
+1 Каркас переименован в vaadin (ранее ITMill). Я должен сказать, что vaadin - это очень красивый веб-фреймворк и все остальное java. Я нахожу это очень продуктивным.
fmucar 8.02.2011 11:00:04

Я думаю, для ваших скромных требований, вам просто нужно кодировать сервлеты или простые страницы JSP, которые вы можете обслуживать с сервера Tomcat. Я не думаю, что вам нужны какие-либо веб-фреймворки (например, Struts) для личных данных веб-сайта

3
23.08.2008 21:40:54

Мой любимый это Spring Framework. С 2.5 Spring MVC - это офигенно, с новыми аннотациями, соглашениями о конфигурации и т. Д.

Если вы просто делаете что-то очень простое, вы можете просто попробовать использовать обычный Servlet API и не беспокоиться о фреймворке.

38
23.08.2008 21:55:11
Голосуйте за упоминание использования обычного Servlet API для чего-то простого.
lsiu 27.10.2009 04:43:02
Я бы избегал использования любой структуры web mvc по причинам, изложенным в (бесплатной) первой главе Wicket In Action. Кроме того, я бы избегал использования Servlet API напрямую, если у вас нет одностраничного приложения или вы хотите написать свой собственный фреймворк с нуля.
Eelco 31.01.2010 23:25:42
Мне тоже нравится Spring, но я обнаружил, что вся конфигурация окупается, только если вы пишете приложение mahoosive.
Leonard Ehrenfried 16.02.2010 19:43:08
Существует едва ли какая-либо конфигурация с использованием аннотаций.
bpapa 17.02.2010 00:15:20
@bpapa Аннотации просто помещают конфигурацию в ваши классы Java вместо XML.
Steven 4.01.2012 00:56:26

Я тоже слышал хорошие вещи о Spring Framework. В целом, однако, я был в восторге от большинства веб-фреймворков Java, на которые я смотрел (особенно Struts).

Для простого приложения я бы определенно подумал об использовании «сырых» сервлетов и JSP и не беспокоился о принятии фреймворка. Если сервлеты хорошо написаны, в будущем должно быть просто портировать на среду, если это необходимо, когда приложение становится все сложнее.

5
23.08.2008 23:10:20
+1 за «Если сервлеты хорошо написаны ...»
Chris 18.08.2009 14:43:12

Я недавно начал использовать Stripes Framework . Если вы ищете платформу, основанную на запросах, которая действительно проста в использовании, но не накладывает никаких ограничений на то, что вы делаете, я настоятельно рекомендую ее.

Это похоже на распорки, но выходит далеко за рамки. Есть даже некоторые проекты плагинов, которые позволяют вам использовать hibernate или jpa с очень маленькой конфигурацией.

Есть много хороших фреймворков, хотя я слышал, что калитка тоже хорошая, но я ею не пользовался.

17
25.08.2008 14:04:20

Я рекомендую компонентно-ориентированную структуру Wicket . Он позволяет вам писать ваше веб-приложение в виде простого старого Java-кода, вы можете использовать POJO в качестве модели для всех компонентов, и вам не нужно возиться с огромными XML-файлами конфигурации.

Я успешно разработал приложение для онлайн-банкинга со Struts, когда обнаружил Wicket и увидел, насколько простой может быть разработка веб-приложений!

25
25.08.2008 21:16:28

ОБНОВЛЕНИЕ: Гобелен 5.2 отсутствует, поэтому он не заброшен, как это было раньше. Мой опыт работы с Гобеленом 4, а не 5, поэтому ваш пробег может отличаться. Мое мнение о Гобелене изменилось за эти годы; Я изменил этот пост, чтобы отразить его.

Я больше не могу рекомендовать Гобелен, как раньше. Гобелен 5, кажется, значительное улучшение, но моя главная проблема с Гобеленом не связана с самой платформой; это с людьми, стоящими за этим.

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

Говард Льюис Шип (основной автор Tapestry), безусловно, блестящий разработчик, но я не могу сказать, что мне небезразлично его руководство проектом Tapestry. Разработка Tapestry 5 началась почти сразу после поставки Tapestry 4. Судя по тому, что я могу сказать, Корабль в значительной степени посвятил себя этому, оставив Tapestry 4 в руках других участников, которые, как я чувствую, не так способны, как Корабль. Сделав болезненный переход с Гобелена 3 на Гобелен 4, я почувствовал, что меня бросили почти сразу.

Конечно, с выпуском Tapestry 5 Tapestry 4 стал устаревшим продуктом. У меня не было бы проблемы с этим, если бы путь обновления не был таким жестоким снова . Так что теперь наша команда разработчиков находится в довольно незавидном положении: мы могли бы продолжать использовать практически заброшенную веб-платформу (Tapestry 4), сделать отвратительное обновление до Tapestry 5 или полностью отказаться от Tapestry и переписать наше приложение, используя другую платформу. Ни один из этих вариантов не очень привлекателен.

Гобелен 5 предположительно написан так, чтобы уменьшить вероятность поломки обновлений с этого момента. Хороший пример - классы страниц: в предыдущих воплощениях классы страниц произошли от базового класса, предоставленного Tapestry; несовместимые изменения API в этом классе стали причиной большого количества проблем с обратной совместимостью. В Tapestry 5 страницы представляют собой POJO, которые улучшаются во время выполнения с помощью «волшебной волшебной пыли Гобелена» посредством аннотаций. Таким образом, пока поддерживается контракт на аннотации, изменения в Tapestry не будут влиять на классы ваших страниц.

Если это правильно, то написание нового приложения с использованием Tapestry 5 может оказаться удачным. Но лично мне не хочется снова класть руку на горелку.

11
31.08.2010 21:25:38
Обновление: Со временем проект Гобелен, похоже, был заброшен. С апреля '09 не было релизов Tapestry 5, а у Tapestry 4, все еще с кучей выдающихся ошибок в JIRA, с 2008 года не было обновлений. Из-за этого я больше не могу рекомендовать Tapestry как жизнеспособный выбор для инфраструктуры веб-приложений.
Robert J. Walker 16.02.2010 19:36:12
Гобелен не был оставлен. Ветвь Tapestry 5 довольно активна с 5.1 в качестве стабильной опции и 5.2 в ближайшее время.
Timo Westkämper 27.07.2010 16:25:48
Ты прав. Фактически, Гобелен 5.2 был с тех пор выпущен. Я обновил пост, чтобы отразить мое обновленное мнение о Гобелене.
Robert J. Walker 31.08.2010 21:29:48

Не могу поверить, что никто не упомянул GWT

0
11.09.2008 04:43:14
Я бы на самом деле не считал GWT фреймворком для веб-приложений (это больше похоже на веб-инструментарий, отсюда и название). Однако GWT великолепен и хорошо сочетается с Spring, например.
stian 21.09.2008 20:14:34
рамки или инструментарий, в чем конкретно разница? Кодирование с GWT чувствует себя так же, как работа с фреймворком, как и другие варианты.
Eelco 31.01.2010 23:28:18

Мой любимый способ использовать действительно простые приложения - это Apache VelocityTools (VelocityLayoutServlet) с Velosurf ( http://velosurf.sourceforge.net ).

Для более сложных приложений Spring MVC или Struts 2.

0
15.09.2008 16:03:02

Все они - это проблема ;-)

4
26.09.2008 11:36:22

Мой выбор - калитка !!

5
24.02.2009 09:44:20

Сказать «использовать JSF» немного просто. Когда вы решите использовать JSF, вы должны выбрать библиотеку компонентов поверх нее. Будете ли вы использовать MyFaces Tomahawk, Тринидад, Тобаго ( http://myfaces.apache.org/ )? Или, может быть, ICEfaces ( http://www.icefaces.org/ )? О, и если вы используете ICEfaces, будете ли вы использовать JSP или Facelets для своих представлений?

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

3
24.02.2009 10:23:50
Мне было больно, когда я делал веб-приложение, которое мы продаем. Обновление будет рассматривать лицевые вместо.
Thorbjørn Ravn Andersen 24.12.2009 14:31:11
Да, к этому времени я почти уверен: используйте Facelets вместо JSP. Это намного лучше, и я не вижу никаких (больших) недостатков.
Tim Büthe 7.01.2010 15:03:33

http://zkoss.org - хороший

3
9.09.2009 13:38:09

Сам не пробовал, но думаю

http://www.playframework.org/

имеет большой потенциал ...

Исходя из php и classic asp, это первый java веб-фреймворк, который звучит многообещающе для меня ....

16
25.10.2009 19:08:36
Забавно, что сегодня в пятый раз я увидел «Я не использовал его, но я рекомендую Play» здесь на stackoverflow.
Marko 2.11.2012 09:39:02

Для сайтов с высоким трафиком я бы использовал инфраструктуру, которая не управляет состоянием клиента на сервере - Wicket, JSF и Tapestry управляют состоянием клиента на сервере. Я бы использовал эти фреймворки (Wicket - мой любимый), если приложение должно быть больше похоже на настольное приложение. Но я бы попробовал использовать более масштабируемый и простой подход REST + AJAX.

Spring MVC был бы кандидатом, но начиная с Spring MVC 3, он имеет странную аннотированную перегруженную модель программирования, которая не использует преимущества статической типизации. Есть и другие уродливые вещи, такие как выходные параметры в методах в сочетании с обычным возвратом, поэтому у одного метода есть два выходных канала. Spring MVC также имеет тенденцию заново изобретать колесо, и вам придется настраивать больше по сравнению с другими платформами. Я не могу порекомендовать Spring MVC, хотя у него есть хорошие идеи.

Grails - это удобный способ использования Spring MVC и других установленных сред, таких как Hibernate. Кодирование это весело, и вы быстро увидите результаты.

И не забывайте, что Servlet API с несколькими маленькими помощниками, такими как FreeMarker для создания шаблонов, очень мощный.

3
30.12.2009 10:08:21

Мой выбор был бы Wicket (для больших проектов и предсказуемой базы пользователей), GWT (для больших проектов, которые в основном общедоступны) или просто сервисная структура (например, Jersey / JAXRS) вместе с инструментарием JavaScript (для малых и средних проектов) ,

2
31.01.2010 23:30:31

Я рекомендую Seam, особенно если вам нужна настойчивость.

2
6.03.2010 17:48:23

Я оценил довольно много фреймворков, и Ваадин ( http://vaadin.com/home ) проскочил до самого верха.

Вы должны по крайней мере дать ему короткую оценку.

Ура!

3
27.07.2010 16:17:58

Попробуйте HybridJava - это намного проще, чем что-либо еще.

0
28.07.2010 05:32:44
opensas 30.07.2010 13:15:37

Посмотрите несколько комментариев о некоторых фреймворках Java-приложений (второй абзац):

http://swiss-knife.blogspot.com/2009/11/some-java-application-servers.html

1
2.08.2010 17:48:14

После долгого времени тестирования различных решений для меня это оказалось:

  • Spring MVC для уровня представления и контроллера (хотя Spring Webflow не работает, потому что мои потоки основаны на ajax)

  • JQuery для всего на стороне клиента

  • Spring Security с точки зрения безопасности

  • Hibernate / JPA2

  • Причал ради продолжения (комета)

Один месяц необычайно крутой кривой обучения, но теперь я счастлив.

Я также хотел бы отметить, что я был всего в нескольких шагах от того, чтобы пропустить все эти вещи Java и использовать вместо этого Scala / LIFT. Насколько мне известно, все в Java, связанное с передовой веб-разработкой (комета, асинхронное общение, безопасность (да, даже с Spring Security!)), Все еще является чем-то вроде взлома (докажите, что я не прав, используя доказательства, pleeease !). На мой взгляд, Scala / LIFT - это более готовое и универсальное решение.

Причина, по которой я наконец решил не ездить со Scala, заключается в том, что

  • как руководитель проекта, я должен учитывать человеческие ресурсы, и разработчиков на Java гораздо проще найти, чем разработчиков Scala

  • Для большинства разработчиков в моей команде функциональную концепцию Scala, как бы она ни была великолепна, трудно понять.

Ура Эр

7
3.08.2010 07:21:40
Это все хорошие вещи. Хороший выбор весной MVC, оставайтесь на безопасной (и мудрой) стороне.
Victor Ionescu 14.01.2011 13:51:10

Я бы сказал ваадин или калитка

0
8.02.2011 11:08:06

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

1
24.11.2012 17:05:17