Какие инструменты выбрать для создания web-приложения на java?

Здравствуйте.

На данный момент выбираю библиотеки, фреймворки для реализации веб-приложения на Java.
Ознакомился с информацией в интернете и было выбрано несколько вариантов:

1. GWT/Vaadin - Spring - Hibernate.
2. Wicket+jQuery - Spring - Hibernate
3. Tapestry - Spring - Hibernate

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

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

Заранее спасибо.
  • Вопрос задан
  • 5188 просмотров
Пригласить эксперта
Ответы на вопрос 5
AngularJS + UI Bootstrap + Spring + Hibernate.

Формировать и управлять сложными формами на стороне клиента гораздо легче, чем формировать их на стороне сервера, а потом навешивать на них кучу лапшеобразного JavaScript/jQuery кода.

AngularJS полностью берёт на себя пользовательский интерфейс, а Spring работает как RESTful сервис.
Ответ написан
Комментировать
Foror
@Foror
Графоман
С GWT намучаетесь, да и гугл на него уже как забил, сделав GWT 2.0 - Dart, у которого также сомнительное будущее. В Wicket - кривая реализация, сделано рукожопами, в сессию юзера пихают, что попало, хотя как сейчас у них не в курсе.

Tapestry более-менее, вот-вот даже выйдет новая версия, в которой Prototype.js заменили на JQuery. А также Bootstrap из коробки по дефолту jumpstart.doublenegative.com.au/jumpstart7 Еще один плюс это изменение классов/шаблонов и отображение результата без перезагрузки контейнера. Хотя конечно не всё так гладко и через какоё-то время контейнер тупо закрешится и нужно поднимать его заново.

Но проблема в том, что фреймворк постоянно изменяется и переход на новые версии может быть проблемным. Например, в 5.3. Prototype.js, а в 5.4 все дефолтные компоненты на JQuery и Bootstrap. Из 5.2 в 5.3 полностью переделали URLRewrite сервис, сделали хуже, чем было. Но с другой стороны плюс в том, что фреймворк очень гибок и если не нравится новый URLRewrite, можно сделать override через IoC и вернуть старый.

Использовать Tapestry 5 + Spring особого смысла нет, в Tapestry 5 собственный IoC и модуль для Hibernate. А если поискать на гитхабе можно найти и другие модули. Но в целом, руками придется многое пилить самому. По формам есть дефолтный компонент, генерирующий форму автоматом из модели, но он конечно слабоват, для сложных форм может и не хватить.

Я сейчас тоже планирую делать веб-приложение и склоняюсь к Angular.js Т.к. хочу полный аджакс, чтобы юзер вообще не видел переходов на другие страницы. Отчасти из-за того, что он напоминает Tapestry 5. А вот на сервер-сайде, думаю просто использовать какой-нибудь простенький контроллер (Undertow, например) и какой-нибудь фреймворк JSON-POJO + может подключу IoC из Tapestry 5. Или попробую разобраться в Spring, в последних версиях все можно конфигурить через аннотации, но тут тоже надо смотреть, что он мне даст, может также все нужно будет пилить руками, а в этом случае Tapestry IoC выглядит проще.

По формам можно использовать, что-нибудь такого плана https://github.com/dobtco/formbuilder А вообще, можно на гитхабе поискать что-нибудь на angular form, может что есть kelp404.github.io/angular-form-builder
Ответ написан
Комментировать
Вы не рассмотрели еще как минимум один вариант. Есть такой замечательный Java/Groovy framework, Grails. Вдохновлен Rails, jQuery - по умолчанию, последние версии (2.3) сделаны для максимального удобства работы с Rest, Angularjs на ура привязывается. Spring + Hibernate из коробки. Настоятельно рекомендую попробовать. Groovy рассматривайте даже как преимущество, если имеете большой опыт на Java, на Groovy писать будете через пару часов без проблем.

Выбор в основном состоит средстве для реализации пользовательского интерфейса.

Boostrap + Angular выглядит очень хорошим решением для быстрого прототипирования.
А в чем, собственно проблема? Как фреймворк, который в основном ориентирован на backend (кроме Vaadin, насколько я знаю), вам поможет сделать frontend? Поясните, если не сложно.
Ответ написан
Комментировать
@prizrak39 Автор вопроса
Я немного неточно высказался. На данный момент и логика и интерфейс пишется на Vaadin. Хочется организовать в новом приложении более понятную и удобную в масштабировании архитектуру.
Ответ написан
azrail_dev
@azrail_dev
Play Framework 2.0
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽