Сведения о вопросе

FELL

11:26, 9th August, 2020

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

Просмотров: 641   Ответов: 24

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

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

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

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



  Сведения об ответе

DO__IT

01:14, 7th August, 2020

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

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

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

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

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

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

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


  Сведения об ответе

PHPH

17:21, 5th August, 2020

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

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


  Сведения об ответе

lesha

03:40, 2nd August, 2020

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

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


  Сведения об ответе

pumpa

15:40, 16th August, 2020

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

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

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


  Сведения об ответе

PAGE

17:17, 4th August, 2020

Сам еще не пробовал, но думаю, что да.

http://www.playframework.org/

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

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


  Сведения об ответе

ASER

06:19, 22nd August, 2020

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

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

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

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

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

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

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


  Сведения об ответе

ЯЯ__4

02:40, 23rd August, 2020

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

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

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

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


  Сведения об ответе

KOMP

22:36, 20th August, 2020

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

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

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

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

  • Hibernate / JPA2

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

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

Я также хотел бы отметить, что я был всего лишь в небольшом шаге от того, чтобы пропустить все эти Java вещи и вместо этого изучить Scala/LIFT. Насколько я понимаю, все в Java, что связано с ультрасовременной веб-разработкой (comet, асинхронная Связь, безопасность (да, даже с Spring безопасностью!)) все равно это немного халтура (доказывай мне неправоту доказательствами, пожалуйста!). Мне кажется, что Scala/LIFT является более подходящим решением для out-of-the-box и all-in-one.

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

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

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

Овации Э


  Сведения об ответе

FAriza

13:37, 14th August, 2020

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


  Сведения об ответе

dumai

05:06, 10th August, 2020

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

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


  Сведения об ответе

PHPH

01:04, 29th August, 2020

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


  Сведения об ответе

PIRLO

03:01, 15th August, 2020

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

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

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


  Сведения об ответе

pumpa

08:54, 4th August, 2020

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

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

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

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


  Сведения об ответе

PAGE

06:03, 3rd August, 2020

http://zkoss.org -хороший человек


  Сведения об ответе

#hash

20:04, 10th August, 2020

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

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


  Сведения об ответе

dumai

21:12, 22nd August, 2020

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


  Сведения об ответе

прога

10:28, 9th August, 2020

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


  Сведения об ответе

appple

21:50, 12th August, 2020

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


  Сведения об ответе

lesha

05:54, 27th August, 2020

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

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


  Сведения об ответе

P_S_S

14:57, 10th August, 2020

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


  Сведения об ответе

park

21:27, 26th August, 2020

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


  Сведения об ответе

appple

21:51, 8th August, 2020

Я бы сказал vaadin или калитка


  Сведения об ответе

+-*/

06:33, 1st August, 2020

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


  Сведения об ответе

davran

17:13, 19th August, 2020

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

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться