Впервые я столкнулся, например. Фреймворк Ruby Sinatra или PHP Zend Framework, мне было интересно, есть ли что-то адекватное в Java, здесь все кажется таким раздутым. Несмотря на то, что вокруг существует множество фреймворков, я пока не нашел ни одного, который я считаю идеальным для той архитектуры, которую я хотел бы реализовать.
Я хотел разработать веб-приложение, которое было бы тяжело для Javascript, с большей частью логики приложения, реализованной на клиенте, серверная часть Java более или менее просто служила бы хранилищем данных или выполняла сложные вычисления.
Я просмотрел здесь связанные вопросы, но не смог найти идеального ответа, у каждого из предложенных решений была причуда, которая не соответствовала требованиям.
Итак, это то, что я ищу, фреймворк с открытым исходным кодом со следующими функциями:
- Соглашение о конфигурации
- Нет конфигурации XML, кроме web.xml
- Чистая Java (без Scala, без Groovy,...)
- естественные URL-адреса в стиле REST, такие как /news/2011/july (без .do, без .jsp, ...)
- REST-осведомленный
- это не должно заставлять меня развертываться на сервере приложений (например, EJB должен быть необязательным)
- поддержка сеанса была бы хорошей, но не обязательной
- генерация кода, как в Rails, была бы замечательной, но не обязательной
- минимум зависимостей, небольшие габариты
- MVC would be nice, but
- I'd like to be able to choose the M part, choose the persistence libraries on my own (no bundling).
- Нет автоматически сгенерированного кода для представления, ни HTML, ни Javascript, ни CSS
- Интегрированный язык шаблонов был бы хорош, но он должен быть минималистичным (простой поток управления, доступ к переменным шаблона).
- Поддержка макета (т.е. вы можете указать общий шаблон для похожих видов)
- Свободный выбор фреймворка Javascript для представлений
В основном это будет означать структуру MVC, которая выполняет маршрутизацию за меня и предлагает поддержку шаблонов для представлений, но все остальное полностью модульное, никакой магии. Есть ли какая-нибудь минималистичная структура, которая бы это обеспечивала (или, по крайней мере, была бы достаточно модульной, чтобы ее можно было настроить таким образом)?