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

StackOverflow https://stackoverflow.com/questions/24596

Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

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

Гобелен — отличный продукт, но он явно сильно отличается от других с точки зрения модели разработки, поскольку им руководит в основном один чувак.Howard Lewis Ship, без сомнения, довольно умен, но я разочарован их решением практически забыть об обратной совместимости с каждым выпуском.Опять же, для ваших нужд это может не иметь значения, и мне всегда было приятно работать с продуктами Tapestry.

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

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

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

Другие советы

Мой любимый — Spring Framework.В версии 2.5 Spring MVC ооочень крут, с новыми аннотациями, соглашениями по функциям конфигурации и т. д.

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

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

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

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

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

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

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

http://www.playframework.org/

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

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

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

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

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

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

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

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

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

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

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

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

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

После долгого тестирования различных решений для меня получилось следующее:

  • Spring MVC для презентации и уровня контроллера (без весеннего веб -поток, потому что мои потоки основаны на AJAX)

  • jQuery для всей клиентской части

  • Spring Security для аспекта безопасности

  • Спящий режим / JPA2

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

Месяц невероятно крутого обучения, но теперь я счастлив.

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

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

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

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

Приветствия эр

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

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

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

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

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

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

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

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

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

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

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

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

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

Вы должны хотя бы дать ему краткую оценку.

Ваше здоровье!

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top