Да, я знаю, старый вопрос о лучшем веб-фреймворке... но позвольте мне объяснить.
Я ищу веб-фреймворк на базе Java Servlet, который допускает взаимодействие RESTful, а также подходит для создания веб-графических интерфейсов.
Что я хочу:
- Поддержка REST с согласованием содержимого HTTP и хорошим отображением URL-адресов.
- преобразование данных из параметров запроса в объект домена (и в идеале другое направление)
- не нужно дублировать объект домена как интерфейс к сети (например, в расположении)
- простая интеграция EJB
- Включение зависимостей должно выполняться сервером Java EE
- понятный код (мне не нравится Spring MVCs магия wirering компонентов в пути класса)
- легко настроить (то, что не настроено в Spring магически утомительно для настройки в контейнере - я бы предпочел иногда прямые зависимости)
- колесо не должно быть повторно выбрано, например. г. что-то вроде JPA и BeanValidation должно быть использовано и не заново изобретено каркасом, или, по крайней мере, эти стандарты должны быть просты в использовании.
- Поддержка валидации с отображением ошибок в формах
- поддержка интернационализации
Кандидаты:
-
Spring MVC является мощным, но я устал от конфигурации Spring и не люблю модель программирования. Я думаю, что это слишком абстрактно и гибко и, следовательно, требует большой конфигурации. И мне не нравится способ Spring MVC использует аннотации. Но есть и некоторые недостатки дизайна, такие как методы, возвращающие значение через
return
и через выходной параметр - действительно уродливый! Я думаю, что было бы нелегко использовать Spring MVC с инъекцией зависимости Java EE, так как Spring MVC сильно полагается на Spring DI. -
Roo кажется классным, но это просто еще один способ создать приложение Spring MVC, и он делает некоторые странные вещи с AOP.
-
Struts несколько неудобно и устарело.
-
Stripes Подход ActionBean выглядит не намного лучше, чем Struts. Мне это не нравится.
- Grails приятный, но глючный (по крайней мере до 1.2). Reeinvents колесо: Я бы предпочел JPA над Gorm, например.
См. также 10 лучших веб-фреймворков Java
Я не ищу фреймворки с состоянием пользовательского интерфейса на сервере, например, Wicket, Tapestry или JSF. Я думаю, что этот подход противоречит фундаментальным принципам Интернета!
Так что делать? Создать структуру с нуля? хм...
Я хотел бы иметь что-то вроде JAX-RS с поддержкой классических графических интерфейсов браузера. Например, структура должна поддерживать проверку и помещать ошибку проверки в повторно отображаемую форму. Есть что-то в этом роде? Любые рекомендации?