Облегченная веб-платформа Java - особые требования - PullRequest
21 голосов
/ 10 июля 2011

Когда я впервые столкнулся, например, с платформой Ruby Sinatra или PHP Zend Framework, я подумал, есть ли что-то адекватное в Java, здесь все кажется таким раздутым.Несмотря на то, что вокруг существует множество фреймворков, я не нашел ни одного настолько подходящего для той архитектуры, которую хотел бы реализовать.

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

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

Так что я такойищу, среду с открытым исходным кодом со следующими функциями:

  • Соглашение о конфигурации
  • Нет конфигурации XML, за исключением web.xml
  • Чистая Java (без Scala,нет Groovy, ...)
  • естественные URL-адреса в стиле REST, такие как / news / 2011 / июль (no .do, no .jsp, ...)
  • REST-осведомленный
  • это не должно заставлять меня развертываться на сервере приложений (например, EJB должен быть необязательным). * Поддержка сеансов 1020 *
  • была бы хорошей, но не обязательной
  • генерация кода, как в Rails, будеткруто, но не обязательно
  • минимум зависимостей, маленький в общем размере
  • MVC было бы неплохо, но
    • Я хотел бы иметь возможность выбрать часть М, выбратьпостоянные библиотеки самостоятельно (без комплектации).
    • Нет автоматически сгенерированного кода для представления, ни HTML, Javascript, ни CSS
    • Интегрированный язык шаблонов был бы хорош, но он должен быть минималистичным (простой поток управления, доступ к переменным шаблона)
    • Поддержка макетов (т.е. вы можете указать общий шаблон для похожих представлений)
    • Свободный выбор Javascript Framework для представлений

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

Ответы [ 3 ]

15 голосов
/ 10 июля 2011

Как насчет Play Framework ?

Соглашение по конфигурации

Play имеет только несколько файлов конфигурации. Большая часть его структуры условно. Например, базовая структура выглядит следующим образом:

|
+---/app - All executable artifacts go here (java files, conf files and view templates). 
|     |
|     +---/model  - Your model Java classes.
|     |
|     +---/view   - Your view templates.
|     |
|     +---/controller - Your controller classes
|     
|---/conf - Contains all configuration files for the application. Initially contains application configuration and routing table.
|     
|---/lib  - Libraries your appliaction needs. Added automatically to classpath.
|     
|---/log  
|     
|---/public - Public stuff are your static assets that your server gives directly
|     
|---/test
|     
|---/tmp  - All your temporarily compiled .class files are here

Нет конфигурации XML, за исключением web.xml

Play не имеет конфигурации XML, в том числе web.xml. Вместо этого у него есть файл маршрутизации. Ниже приведен пример того, что он использует для маршрутизации.

Чистая Java (без Scala, без Groovy, ...)

Это чистая Java, но вы можете использовать Scala или Groovy через плагин.

  • естественные URL-адреса в стиле REST, такие как / news / 2011 / июль (no .do, no .jsp, ...)
  • REST-известно

С сайта:
Play is a real "Share nothing" system. Ready for REST, it is easily scaled by running multiple instances of the same application on several servers.

На самом деле маршрутизация в режиме отдыха очень проста:

 # Play 'routes' configuration file…

 # Method   URL path         Controller

GET        /                Application.index
GET        /about           Application.about
POST       /item            Item.addItem
GET        /item/{id}       Item.getItem
GET        /item/{id}.pdf   Item.getItemPdf

Нетрудно догадаться, что произойдет, когда вы привыкнете немного играть.

  • это не должно заставлять меня развертываться на сервере приложений (например, EJB должен быть необязательным)

Это не так. На самом деле вы развертываете, сохраняя свои файлы. EJB полностью необязательны, как и .war, .ear и другие формы развертывания.

генерация кода как в Rails была бы классной, но не обязательной

Я не думаю, что это генерирует много кода, но я не на 100% в этом. Он автоматически создает все необходимые папки и создает базовый пример страницы. Я не знаю, генерирует ли Rails что-нибудь еще ...

MVC было бы неплохо, но
- Я бы хотел иметь возможность выбрать деталь М, самостоятельно выбрать библиотеки постоянства (без связывания).
- Нет автоматически сгенерированного кода для представления, ни HTML, Javascript, ни CSS
- Встроенный язык шаблонов был бы хорош, но он должен быть минималистичным (простой поток управления,

См. MVC в игре

  • Думаю, это незначительный контрапункт. Модели Play должны использовать JPA или расширять определенный класс Model, который поставляется с Play. Для получения дополнительной информации см. Play framework-model .
  • Он не генерирует HTML, хотя вы можете использовать язык шаблонов внутри ваших .html, .css, .js и других файлов для создания динамических страниц.
  • У меня есть встроенный язык шаблонов на основе языка шаблонов Groovy, например.

    You have ${emails.unread ?: 'no'} ${emails.unread?.pluralize('email')} !

Другие плюсы:

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

Минусы:

  • Это 51 МБ, не уверен, что это считается легким: /
3 голосов
/ 10 июля 2011

Я использовал фреймворк Stripes в нескольких проектах в прошлом, и, похоже, он соответствует всем / большинству ваших критериев, особенно соглашению о конфигурации. Конфигурация XML отсутствует - есть один файл stripes.properties, который имеет общую поведенческую конфигурацию (это однократное добавление к вашему пути к классам). Для настройки «Диспетчера полос» требуется одноразовое редактирование в файле web.xml, которое представляет собой фильтр, который направляет запросы в соответствующие компоненты действия. ActionBeans обнаруживаются автоматически, поэтому вам даже не нужно обновлять файл web.xml при добавлении дополнительных Action Bean. Все ваши URL-адреса настроены с использованием аннотаций на бинах действий, поддержки отдыха, динамических привязок ActionBean, проверки и преобразования на стороне сервера с помощью встроенных аннотаций для простых типов с возможностью создания собственных обработчиков и преобразователей проверки для сложных типов. Работает с JSP и вашими пользовательскими библиотеками JS / CSS. Документация и поддержка форумов отличная. Это быстро узнать, если вы следуете их руководству.

3 голосов
/ 10 июля 2011

Spring Roo : мне было легко начать. Он может генерировать код пользовательского интерфейса, но вы можете его использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...