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


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

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

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

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

24 84

24 ответа:

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

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

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

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

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

и, конечно же, есть миллион меньших фреймворков и инструментов, которые получают свои собственные следующие (скорость для основных потребностей, raw JSPs, распорки и т. д.). Однако я обычно предпочитаю компонентно-ориентированные фреймворки.

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

мой любимый весенний рамках. С 2.5 Spring MVC-это soooo kick ass, с новыми аннотациями, соглашением по функциям конфигурации и т. д.

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

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

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

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

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

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

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

http://www.playframework.org/

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

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

обновление: гобелен 5.2 отсутствует, поэтому он не заброшен, как это ранее казалось. Мой опыт работы с гобеленом 4, а не 5, поэтому ваш пробег может отличаться. Мое мнение о гобелене изменилось за эти годы; я изменил этот пост, чтобы отразить его.

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

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

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

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

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

Если это правильно, то писать новую заявку Гобелен 5 может получиться хорошо. Но лично мне не хочется снова класть руку на горелку.

Disclamer: я работаю в Vaadin (ранее это мельница)

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

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

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

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

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

  • jQuery для всех вещей на стороне клиента

  • Весенняя безопасность для, ну, аспект безопасности

  • Hibernate / JPA2

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

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

Я также хотел бы упомянуть, что я был всего в нескольких шагах от пропуска всего этого Java-материала и вместо этого изучал Scala/LIFT. Насколько я понимаю, все в Java, что связано с ультрасовременной веб-разработкой (comet, async communication,безопасность (да, даже с весны безопасности!)) все еще немного Хак (proove me неправильно, доказательства, пожалуйста!). Для меня, лестница/лифт, кажется, больше из-из-коробки и все-в-одном решение.

Почему я, наконец, решил не идти со Скала это

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

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

Ура Эр

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

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

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

все они-вот в чем проблема; -)

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

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

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

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

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

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

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

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

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

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

Ура!

мой выбор будет калиткой (для крупных проектов и предсказуемой базы пользователей), GWT (для крупных проектов, которые в основном являются публичными) или просто фреймворком услуг (например, Jersey/ JAXRS) вместе с набором инструментов JavaScript (для небольших и средних проектов).

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

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

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

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

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

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

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

попробуйте HybridJava-это гораздо проще, чем все остальное.

Я бы сказал фреймворк Vaadin или калитка