Подтвердить что ты не робот

Условные требования к веб-среде Java

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

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

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

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

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

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

4b9b3361

Ответ 1

Как насчет 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, no Groovy,...)

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

  • естественные URL-адреса стиля REST, такие как /news/ 2011/july (нет .do, no.jsp,...)
  • REST-Aware

На сайте:
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 будет приятным, но
  - Я хотел бы иметь возможность выбрать часть M, самостоятельно выбирать библиотеки сохранения (без комплектации).
  - Нет автоматически созданного кода для представления, ни HTML, Javascript, ни CSS
  - Интегрированный язык шаблонов был бы приятным, но он должен быть минималистичным (простой поток управления,

Смотрите MVC в игре

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

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

Другие профи:

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

Минусы:

  • 51MB не уверен, что это может быть легким:/

Ответ 2

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

Ответ 3

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