Spring Roo - Википедия - Spring Roo

Spring Roo
Логотип SpringRoo.png
Spring Roo 2.0.x
Spring Roo 2.0.x
Разработчики)DISID, Основное программное обеспечение
Стабильный выпуск
1.3.2 / 1 сентября 2015 г. (2015-09-01)
Предварительный выпуск
2.0.0.RELEASE / 30 сентября 2019 (2019-09-30)
Написано вЯва
ПлатформаJava SE
ТипБыстрая разработка приложений
ЛицензияЛицензия Apache 2.0
Интернет сайтпроекты.весна.io/ spring-roo/

Spring Roo является Открытый исходный код программный инструмент, который использует конвенция над конфигурацией принципы обеспечения быстрая разработка приложений из Ява -основан корпоративное программное обеспечение.[1] Полученные приложения используют общие технологии Java, такие как Spring Framework, Java Persistence API, Тимелист, Apache Maven и AspectJ.[2] Spring Roo является членом Весна портфель проектов.

Мотивация и история

Заявление Spring Roo заключается в том, чтобы «существенно повысить продуктивность Java-разработчиков без ущерба для инженерной целостности и гибкости».[3]

Технология была впервые продемонстрирована во время вступительного выступления на конференции разработчиков SpringOne Europe 27 апреля 2009 г., одновременно с этим был опубликован первоначальный альфа-выпуск. Во время выступления на сцене было создано приложение, которое будет использоваться участниками конференции для голосования за предпочтительное название проекта (которое в то время было под кодовым названием «Roo» в SpringSource ).[4] В конечном итоге имя «Spring Roo» было предпочтительнее альтернатив, включая Spring Boost, Spring Spark, Spring HyperDrive и Spring Dart.[5]

Последовало несколько релизов,[6][7] с Roo 1.0.0.RELEASE (общедоступность ) выпущен в декабре 2009 года. В октябре 2010 года был выпущен Spring Roo 1.1.0.RELEASE. Выпуск 1.1.0 перемещен на основу OSGi со связанной моделью обнаружения надстроек, плюс добавлена ​​поддержка инкрементного обратного проектирования базы данных, снижение сложности страницы Spring MVC, Google Web Toolkit, Google App Engine, Apache Solr, JSON и более мелкие функции, такие как сериализуемые автоматизация.[8] Текущие инженеры проекта Roo работают в SpringSource, и поэтому выпуски Roo обычно поддерживают последние доступные выпуски других Весна портфолио проектов.

В 2014 DISID берет на себя руководство фреймворком с открытым исходным кодом Spring Roo после партнерского соглашения с Pivotal. Они сотрудничают в дальнейшем развитии проекта Spring Roo. Roo продолжит свою цель - предоставить стиль разработки RAD фреймворка.

Проект Spring Roo останется проектом с открытым исходным кодом в рамках Spring с той же текущей политикой лицензирования. И Pivotal, и DISID обращаются к сообществам Spring и Java для всех, кто хотел бы сотрудничать в проекте.

Стандарты и совместимость технологий

Установка Roo по умолчанию облегчает создание приложений, соответствующих следующим стандартам и основным технологиям:[9]

Приведенный выше список может быть дополнен дополнительными надстройками Roo, которые предоставляют метод Roo для расширяемость.

Пользовательский интерфейс

Основной пользовательский интерфейс Spring Roo - это командная строка. ракушка. Оболочка обеспечивает как Интерфейс командной строки а также механизм для размещения плагины (которые в Roo называются «надстройками»). Одна из ключевых целей дизайна Roo - гарантировать, что пользователь может продолжать работать «естественным образом», что обычно означает использование предпочтительных интегрированная среда развития (IDE) или Текстовый редактор для большинства задач. Таким образом, Roo часто загружается в отдельном окне в IDE или текстовом редакторе и будет отслеживать файловую систему на предмет изменений, сделанных пользователем вне Roo. Также выполняется сканирование проекта пользователя при запуске, чтобы определить любые изменения, которые могли быть внесены, пока Roo не работал.

Оболочка пользовательского интерфейса поддерживает обширные удобство использования функции, включая завершение командной строки (т.е. нажмите TAB), онлайн помощь, хинтинг (форма контекстно-зависимая помощь ) и контекстная осведомленность (которая обеспечивает автоматический вывод о вероятных намерениях на основе недавних действий). Это позволяет пользователю создавать новый программный проект через оболочку Roo или использовать Roo в существующем проекте. Ниже приведен пример команд, используемых Roo для создания нового приложения, плюс плагин Spring Boot Maven. пробег цель скомпилировать и запустить приложение с использованием встроенного HTTP-сервера:

$ mkdir привет $ CD hello $ roo.shroo> настройка проекта --topLevelPackage com.fooroo> jpa setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORYroo> entity jpa --class ~ .domain.Timerroo> field string --fieldName message --notNullroo> repository jpa - -allroo> service --allroo> web mvc setuproo> web mvc view setup --type THYMELEAFroo> web mvc controller --all --responseType THYMELEAFroo> web mvc controller --all --pathPrefix / apiroo> quit $ mvn spring-boot :пробег

Вышеупомянутые команды не нужно было вводить полностью, они были выполнены с помощью TAB. Кроме того, команда «подсказка» могла быть использована для получения помощи в любое время.

Архитектура

Хотя программное обеспечение может автоматически генерировать код,[11] Roo работает, генерируя AspectJ объявления между типами (иначе известные как миксины или введения). Этим достигается разделение проблем, поскольку код, поддерживаемый Roo, находится в другой единице компиляции, чем код, который пишет пользователь. Это означает, что Roo может постепенно изменять необходимые ему межтиповые объявления AspectJ и оставлять все остальные файлы нетронутыми.[12][13][14]

Spring Roo использует надстройки для обеспечения всех функций внутри и поверх OSGi система исполнения на основе Апач Феликс.

Базовые дополнения

В Roo доступно множество команд, в зависимости от того, какие «базовые надстройки» (те, которые поставляются с Roo) и «сторонние надстройки» (те, которые не поставляются с Roo) были установлены. Базовые надстройки, поставляемые с Roo 2.0.x, включают:

  • Создатель дополнений: позволяет легко создавать сторонние надстройки Roo
  • Резервный: позволяет создавать резервные копии в ZIP-файл, набрав резервный
  • Информация о бобах: предоставляет метаданные свойства, средства доступа и мутатора JavaBean (в основном используются другими надстройками)
  • Настраиваемый: представляет аннотацию @Configurable Spring Framework (в основном используется другими надстройками)
  • Обратное проектирование базы данных: позволяет инкрементный обратный инжиниринг реляционных баз данных
  • Данные по запросу: предоставляет исходные данные, соответствующие JSR 303 (проверка JavaBean) аннотации в сущностях
  • DTO: обширная поддержка для автоматического обслуживания Объекты передачи данных
  • Электронное письмо: упрощает настройку SMTP -на основе электронной почты и поддержки отправителя почты через Джавамаил
  • Юридическое лицо: обширная поддержка для автоматического обслуживания Java Persistence API @Entity классы
  • Java Bean: автоматически поддерживает методы получения / установки JavaBean для классов с аннотацией @RooJavaBean
  • JDBC: инкапсулирует OSGi-совместимый доступ к драйверам JDBC, поставляемым в разных пакетах (в основном используется другими надстройками)
  • JMS: упрощает подключение к JMS провайдер (или встраивание ActiveMQ ) и отправка / получение сообщений JMS
  • JPA: устанавливает указанный JPA провайдер и настраивает JDBC соответственно
  • JSON: добавляет JSON связанные методы сериализации и десериализации для POJO
  • логирование: устанавливает Log4j, включая конфигурацию уровня журнала на основе команд
  • Плюрализация: предоставляет плюрализация существительных (в основном используется другими надстройками)
  • Редактор свойств: управляет редакторами собственности, как того требует Весна MVC
  • Файл свойств: управляет Ява файлы свойств и предоставляет команды оболочки для чтения, установки и удаления значений свойств
  • Безопасность: устанавливает Весенняя безопасность, включая страницы входа, фильтры и зависимости
  • Тест: производит JUnit интеграционные тесты для классов проекта
  • Нанизывать: создает допустимый метод toString () для любого класса с аннотацией @RooToString
  • Веб-поток: устанавливает Spring Web Flow и создает поток по умолчанию
  • Web MVC: поддерживает уровень представления на основе Весна MVC плюс Тимелист шаблоны и RESTful API
  • WS: создает сервисы SOAP и клиентов SOAP

Основные модули Roo

Roo также включает в себя основной набор модулей, которые обеспечивают размещенную среду выполнения для различных надстроек. Эти основные модули включают:

  • Поддерживать: используется основными модулями и надстройками для общих служебный класс службы поддержки
  • Метаданные: обеспечивает метаданные интерфейс и реализация поставщика услуг, включающая регистрацию и кэширование зависимостей
  • Файловый монитор: публикует События после обнаружения изменений файловой системы (реализация по умолчанию использует автоматически масштабируемый диск опрос )
  • Отменить файл: предоставляет файл отменить средство для использования менеджером процесса
  • Проект: абстрагирует типичные системы сборки проекта конечного пользователя, такие как Apache Maven и Apache Ant
  • Менеджер процессов: предлагает КИСЛОТА -подобно файловая система абстракция, включающая откат диска и синхронизацию процессов
  • Путь к классам: выполняет абстрактное синтаксическое дерево парсинг и привязка типов Java и AspectJ единицы компиляции
  • Феликс: интегрируется с Апач Феликс, например, предоставление команд "osgi" в оболочке Roo
  • OBR: добавляет Апач Феликс Возможности OSGi Bundle Repository
  • URL-поток: инкапсулирует доступ к загрузкам в разных средах хоста (оболочка Roo, внедрение IDE) и обеспечивает Довольно хорошая конфиденциальность на основе httppgp: // обработчик протокола

Дифференциация

Spring Roo отличается от других инструментов быстрой разработки приложений, не требующих настройки, по следующим основным направлениям:[15]

  1. Производительность платформы Java: Roo предоставляет Java-разработчикам решение для повышения производительности. Он не требует от пользователя программирования на любом языке, кроме Ява. Он также использует основные стандарты и технологии корпоративных приложений Java (перечисленные выше) для максимального повторного использования существующих знаний, навыков и опыта разработчиков.
  2. Удобство использования: Оболочка Roo разработана, чтобы предоставить доступную для обнаружения, простую в использовании среду, которая минимизирует требования к обучению. Все аннотации Roo начинаются с @Roo, чтобы облегчить поддержку кода (завершение командной строки в IDE). Пользователи могут использовать свою IDE для всех операций, и им не нужно знать о запущенном Roo. Roo также поддерживает редактирование файлов пользователями, когда Roo не запущен.
  3. Нет времени выполнения: Roo не предоставляет время выполнения API или требуются определенные компоненты среды выполнения. Это гарантирует отсутствие связанных с Roo ЦПУ, объем памяти и дисковое хранилище потребление ресурсов во время выполнения. Код Roo оптимизирован для компактности облако развертывание и высокий масштабируемость сценарии использования.
  4. Избегает блокировки: Roo можно быстро удалить из пользовательского проекта, что полезно для защиты от привязка к поставщику. Это возможно, потому что нет компонента среды выполнения, который нужно удалить, аннотации @Roo предназначены только для "сохранения исходного кода" (гарантируя, что они не сохраняются в скомпилированных файлах * .class)[16] и AspectJ Ру межтиповые объявления могут быть "вставлены" в стандартные единицы компиляции * .java.[17][18]
  5. Расширяемость: Разделение Roo базовой инфраструктуры и базовых надстроек позволяет третьим сторонам легко расширять Roo.[19][20]

Смотрите также

Рекомендации

  1. ^ «InfoWorld: генеральный директор SpringSource расскажет о Roo, новом усовершенствовании Java» Пол Крилл; От 01.06.2009.
  2. ^ «SD Times: Roo выпущен для обработки повторяющихся задач Spring» Алекс Хэнди; Датировано 19 октября 2009 г.
  3. ^ «Справочная документация Spring Roo», Раздел «Миссия»; Проверено 21 февраля 2010.
  4. ^ «Технические видео: будущее инноваций Java» В архиве 2009-10-09 на Wayback Machine Род Джонсон (генеральный директор SpringSource); Проверено 17 октября 2009.
  5. ^ «Справочная документация Spring Roo», Раздел истории; Проверено 21 февраля 2010.
  6. ^ "InfoQ: Выпущен Spring Roo 1.0 M1" Шрини Пенчикала; Датировано 31 мая 2009 г.
  7. ^ «Отслеживание проблем Jira для выпусков Spring Roo Project»; Проверено 21 февраля 2010.
  8. ^ "Большой шаг вперед: выпущена Spring Roo 1.1.0!" В архиве 2010-10-28 на Wayback Machine Бен Алекс (руководитель Spring Roo в SpringSource); Проверено 27 октября 2010.
  9. ^ "TechCast: подкаст Spring Roo" Кен Римпл; Проверено 21 февраля 2010.
  10. ^ "Spring Roo 1.2.4.RELEASE уже доступен" Датировано 17 октября 2013 г.
  11. ^ «InfoQ: роль генерации кода в разработке Java» Шрини Пенчикала; Дата 2009-9-3.
  12. ^ «InfoQ: Введение в Spring Roo 1.0.0 Видеопрезентация» Бен Алекс (руководитель Spring Roo в SpringSource); Проверено 21 февраля 2010.
  13. ^ "Конференция JAX Italia 2009: Spring Roo" Массимилиано Десси; Проверено 21 февраля 2010.
  14. ^ "Филадельфийская группа пользователей Java: Spring Roo" Кен Римпл; Проверено 21 февраля 2010.
  15. ^ "Домашняя страница Spring Roo"; Проверено 21 февраля 2010.
  16. ^ "Sun Java 5 JavaDocs для RetentionPolicy.SOURCE" компанией Sun Microsystems; Проверено 17 октября 2009.
  17. ^ «Рефакторинг Push-In для AJDT» Эндрю Айзенберг (руководитель проекта AJDT в SpringSource); Проверено 17 октября 2009.
  18. ^ «Интертипы Eclipse AJDT и рефакторинг Push-In» В архиве 2010-01-17 на Wayback Machine Дхруба Бандопадхьяй; Дата 31 декабря 2009 г.
  19. ^ "Конференция итальянской группы пользователей Java по JavaDay IV: внутреннее устройство Spring Roo" Массимилиано Десси; Проверено 21 февраля 2010.
  20. ^ "Весна, Ру и Alfresco тоже: что Alfresco дало весне и почему" Джеффа Поттса; Дата 16 декабря 2009 г.

внешняя ссылка