Спринг Роо
![]() | |
![]() Весенняя Ру 2.0.x | |
Разработчик(и) | ЮГ, Ключевое программное обеспечение |
---|---|
Стабильная версия | 1.3.2
/ 1 сентября 2015 г. |
Предварительный выпуск | 2.0.0.РЕЛИЗ
/ 30 сентября 2019 г. |
Написано в | Ява |
Платформа | Ява SE |
Тип | Быстрая разработка приложений |
Лицензия | Лицензия Апач 2.0 |
Веб-сайт | проекты |
Spring Roo — это программный инструмент с открытым исходным кодом , который использует соглашения по настройке принципы для обеспечения быстрой разработки приложений корпоративного Java на основе программного обеспечения . [1] В полученных приложениях используются распространенные технологии Java, такие как Spring Framework , Java Persistence API , Thymeleaf , Apache Maven и AspectJ . [2] Spring Roo является членом Spring портфолио проектов .
Мотивация и история
[ редактировать ]Миссия Spring Roo заключается в том, чтобы «фундаментально повысить производительность Java-разработчиков без ущерба для инженерной целостности и гибкости» . [3]
Технология была впервые продемонстрирована во время вступительного выступления на конференции разработчиков SpringOne Europe 27 апреля 2009 года, одновременно с этим была опубликована первоначальная альфа-версия. Во время основного доклада в прямом эфире было создано приложение, которое участники конференции будут использовать для голосования за предпочтительное название проекта (который в то время в SpringSource носил кодовое название «Roo» ). [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 обычно поддерживают последние доступные выпуски других проектов портфолио Spring .
В 2014 году DISID берет на себя руководство инфраструктурой с открытым исходным кодом Spring Roo после соглашения о партнерстве с Pivotal. Они сотрудничают в дальнейшем развитии проекта Spring Roo. Roo продолжит реализацию своей цели по созданию среды RAD с генерацией кода.
Проект Spring Roo останется проектом с открытым исходным кодом в рамках Spring, сохраняя ту же текущую политику лицензирования. И Pivotal, и DISID призывают сообщества Spring и Java всех, кто хотел бы сотрудничать в проекте.
Стандарты и совместимость технологий
[ редактировать ]Установка Roo по умолчанию облегчает создание приложений, соответствующих следующим стандартам и основным технологиям: [9]
- Apache ActiveMQ (как встроенная реализация JMS )
- Apache Maven (версия 3.2 или выше)
- Apache Tomcat (встроенная поддержка выполнения)
- AspectJ (используется для AOP плюс миксины для достижения разделения задач )
- Инструменты разработки AspectJ (плагин Eclipse)
- Bootstrap (версия 3.3.6 или выше)
- Облачные вычисления (через SpringSource Cloud Foundry, Google App Engine и VMforce)
- Eclipse IDE (параллельное выполнение и создание метаданных проекта)
- EclipseLink (как реализация JPA )
- Hibernate (как реализация JPA )
- Проверка Java Bean (JSR 303) (включая средство проверки Hibernate)
- Java API для веб-служб XML (как служб, так и клиентов)
- Служба сообщений Java (как производители, так и потребители сообщений)
- Java Persistence API (несколько реализаций)
- API транзакций Java (через абстракцию транзакций Spring )
- Java (версия 5, 6 или 7). Java 7 поддерживается начиная с Roo 1.2.4. [10]
- JQuery (версия 1.11 или выше)
- JSON (поддержка REST)
- JUnit (автоматические тесты для пользовательских проектов)
- Log4J (установка и настройка)
- OSGi (инструмент Roo создан на базе OSGi)
- Представительская государственная передача (REST)
- Spring Boot (версия 1.4 или выше)
- Spring Data JPA (версия 1.10 или выше)
- Spring Framework (версия 4 или выше)
- Spring Security (версия 4 или выше)
- Spring Web Flow (установка и определение потока)
- SpringSource Tool Suite (STS имеет встроенную оболочку Roo и помощники команд Roo)
- Тимелеаф (версия 3 или выше)
Приведенный выше список может быть дополнен дополнительными надстройками Roo, которые обеспечивают метод расширяемости Roo .
Пользовательский интерфейс
[ редактировать ]Основной пользовательский интерфейс Spring Roo представляет собой оболочку командной строки . Оболочка предоставляет как интерфейс командной строки , так и механизм для размещения плагинов (которые в Roo называются «дополнениями»). Одной из ключевых целей разработки Roo является обеспечение того, чтобы пользователь мог продолжать работать «естественным образом», что обычно означает использование предпочитаемой им интегрированной среды разработки (IDE) или текстового редактора для большинства задач. Таким образом, Roo часто загружается в отдельном окне IDE или текстового редактора и отслеживает файловую систему на предмет изменений, внесенных пользователем за пределами Roo. Сканирование пользовательского проекта во время запуска также выполняется для определения любых изменений, которые могли быть внесены, пока Roo не работал.
Оболочка пользовательского интерфейса поддерживает обширные удобства использования функции , включая завершение командной строки (например, нажатие клавиши TAB), интерактивную справку , подсказки (форма контекстно-зависимой справки ) и контекстную осведомленность (которая обеспечивает автоматический вывод о вероятных намерениях на основе недавних действий). Это позволяет пользователю создать новый программный проект через оболочку Roo или использовать Roo в существующем проекте. Ниже приведен пример команд, используемых Roo для создания нового приложения, а также цель запуска плагина Spring Boot Maven для компиляции и запуска приложения с использованием встроенного HTTP-сервера:
$ mkdir hello
$ cd hello
$ roo.sh
roo> project setup --topLevelPackage com.foo
roo> jpa setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY
roo> entity jpa --class ~.domain.Timer
roo> field string --fieldName message --notNull
roo> repository jpa --all
roo> service --all
roo> web mvc setup
roo> web mvc view setup --type THYMELEAF
roo> web mvc controller --all --responseType THYMELEAF
roo> web mvc controller --all --pathPrefix /api
roo> quit
$ mvn spring-boot:run
Вышеупомянутые команды не нужно было вводить полностью, они выполнялись с помощью TAB. Кроме того, команду «подсказка» можно было использовать для получения помощи в любое время.
Архитектура
[ редактировать ]Хотя существует множество способов, с помощью которых программное обеспечение может автоматически генерировать код, [11] Roo работает, генерируя AspectJ объявления межтиповых типов (также известные как примеси или введения). Это обеспечивает разделение задач , поскольку код, поддерживаемый Roo, находится в другой единице компиляции, чем код, который пишет пользователь. Это означает, что Roo может постепенно изменять необходимые ему объявления межтиповых типов AspectJ, оставляя все остальные файлы нетронутыми. [12] [13] [14]
Spring Roo использует надстройки для обеспечения всех функций внутри и поверх системы выполнения OSGi на основе Apache Felix .
Базовые дополнения
[ редактировать ]В Roo доступно множество команд, в зависимости от того, какие «базовые надстройки» (те, которые поставляются с Roo) и «сторонние надстройки» (те, которые не поставляются с Roo) были установлены. Базовые дополнения, поставляемые с Roo 2.0.x, включают:
- Add-On Creator : позволяет легко создавать сторонние дополнения Roo.
- Резервное копирование : позволяет создавать резервные копии в ZIP-файл, набрав
backup
- Информация о компоненте : предоставляет метаданные свойств JavaBean, средств доступа и мутаторов (в основном используются другими надстройками).
- Конфигурируемый : представляет аннотацию @Configurable Spring Framework (в основном используется другими надстройками).
- Реверс-инжиниринг базы данных : позволяет поэтапный реверс-инжиниринг реляционных баз данных.
- Данные по требованию : предоставляет начальные данные, соответствующие аннотациям JSR 303 (проверка JavaBean), присутствующим в объектах.
- DTO : расширенная поддержка автоматического обслуживания объектов передачи данных.
- Электронная почта : упрощает настройку электронной почты на основе SMTP и поддержку отправителей почты через Javamail.
- Entity : расширенная поддержка автоматического поддержания Java Persistence API @Entity. классов
- Java Bean : автоматически поддерживает методы получения/установки JavaBean для классов с аннотацией @RooJavaBean.
- JDBC : инкапсулирует OSGi-совместимый доступ к драйверам JDBC, поставляемым в различных пакетах (в основном используется другими надстройками).
- JMS : упрощает подключение к поставщику JMS (или внедрение ActiveMQ ) и отправку/получение сообщений JMS.
- JPA : устанавливает указанный поставщик JPA настраивает JDBC. и соответствующим образом
- JSON : добавляет JSON. в POJO методы сериализации и десериализации, связанные с
- Ведение журнала : настройка Log4j , включая настройку уровня журнала на основе команд.
- Плюрализация : обеспечивает множественное число существительных (в основном используется в других дополнениях).
- Редактор свойств : управляет редакторами свойств, как того требует Spring MVC.
- Файл свойств : управляет файлами свойств Java и предоставляет команды оболочки для чтения, установки и удаления значений свойств.
- Безопасность : настраивает Spring Security , включая страницы входа, фильтры и зависимости.
- Тест : создает JUnit для классов проекта. интеграционные тесты
- ToString : создает действительный метод toString() для любого класса с аннотацией @RooToString.
- Web Flow : устанавливает Spring Web Flow и создает поток по умолчанию.
- Web MVC : поддерживает уровень представления на основе шаблонов Spring MVC плюс Thymeleaf и RESTful API.
- WS : производит службы SOAP и клиенты SOAP.
Основные модули Roo
[ редактировать ]Roo также включает в себя основной набор модулей, которые обеспечивают размещенную среду выполнения для различных надстроек. Эти основные модули включают в себя:
- Поддержка : используется основными модулями и надстройками для общих классов утилит. служб поддержки
- Метаданные : предоставляет интерфейс и реализацию поставщика услуг метаданных , которые включают регистрацию и кэширование зависимостей.
- Монитор файлов : публикует события после обнаружения изменений файловой системы (реализация по умолчанию использует автоматически масштабируемый опрос диска ).
- Отмена файла файла : предоставляет возможность отмены для использования менеджером процессов.
- Проект : абстрагирует типичные системы сборки проектов конечных пользователей, такие как Apache Maven и Apache Ant.
- Диспетчер процессов : предлагает ACID -подобную абстракцию файловой системы , включающую откат диска и синхронизацию процессов.
- Путь к классам : выполняет синтаксический анализ абстрактного синтаксического дерева и привязку типов Java и AspectJ. модулей компиляции
- Felix : интегрируется с Apache Felix , например, предоставляет команды «osgi» в оболочке Roo.
- OBR : добавлены Apache Felix OSGi. возможности репозитория пакетов
- URL-поток : инкапсулирует доступ к загрузкам в различных хост-средах (оболочка Roo, внедрение IDE) и обеспечивает Pretty Good Privacy. обработчик протокола httppgp:// на основе
Дифференциация
[ редактировать ]Spring Roo отличается от других инструментов быстрой разработки приложений, использующих соглашения и настройки, по следующим основным параметрам: [15]
- Производительность платформы Java : Roo предоставляет решение для повышения производительности Java-разработчиков. Он не требует от пользователя программирования на каком-либо другом языке, кроме Java . Он также использует основные стандарты и технологии корпоративных приложений Java (перечисленные выше) для максимального повторного использования существующих знаний, навыков и опыта разработчиков.
- Удобство использования : оболочка Roo разработана таким образом, чтобы обеспечить доступную для обнаружения и простую в использовании среду, которая сводит к минимуму требования к обучению. Все аннотации Roo начинаются с @Roo для облегчения работы с кодом ( завершение командной строки в IDE). Пользователи могут использовать свою IDE для всех операций, и им не нужно знать, что Roo работает. Roo также поддерживает пользователей, редактирующих свои файлы, когда Roo не запущен.
- Нет среды выполнения : Roo не предоставляет API среды выполнения и не требует определенных компонентов среды выполнения. Это гарантирует отсутствие связанного с Roo потребления ресурсов ЦП , памяти и дискового хранилища во время выполнения. Код Roo оптимизирован для небольшого облачного развертывания и вариантов использования с высокой масштабируемостью .
- Избегает привязки : Roo можно быстро удалить из пользовательского проекта, что полезно для защиты от привязки к поставщику . Это возможно, поскольку нет компонента времени выполнения, который нужно удалить, аннотации @Roo предназначены только для «сохранения исходного кода» (гарантируя, что они не сохраняются в скомпилированных файлах *.class). [16] AspectJ Ру а объявления межтиповых типов можно «вставить» в стандартные модули компиляции *.java. [17] [18]
- Расширяемость : разделение Roo базовой инфраструктуры и базовых надстроек позволит третьим сторонам легко расширять Roo. [19] [20]
См. также
[ редактировать ]- Грааль (фреймворк)
- Griffon (фреймворк) — фреймворк рабочего стола, вдохновленный Grails.
- Игровая платформа
Ссылки
[ редактировать ]- ^ «InfoWorld: генеральный директор SpringSource рекламирует Roo, новое усовершенствование Java» Пола Криля; Датировано 1 июня 2009 г.
- ^ «SD Times: Ру выпущен для выполнения повторяющихся задач Spring». Архивировано 25 февраля 2012 г. в Wayback Machine Алексом Хэнди; Датировано 19 октября 2009 г.
- ^ «Справочная документация Spring Roo» , раздел «Заявление о миссии»; Проверено 21 февраля 2010 г.
- ^ «Технические видеоролики: будущее инноваций в Java». Архивировано 9 октября 2009 г. в Wayback Machine Родом Джонсоном (генеральным директором SpringSource); Проверено 17 октября 2009 г.
- ^ «Справочная документация Spring Roo» , раздел «История»; Проверено 21 февраля 2010 г.
- ^ «InfoQ: Выпущен Spring Roo 1.0 M1» Срини Пенчикала; Датировано 31 мая 2009 г.
- ^ «Отслеживание проблем Jira для выпусков Spring Roo Project» ; Проверено 21 февраля 2010 г.
- ^ «Большой шаг вперед: выпущен Spring Roo 1.1.0!» Архивировано 28 октября 2010 г. в Wayback Machine Беном Алексом (руководителем Spring Roo в SpringSource); Проверено 27 октября 2010 г.
- ^ «TechCast: подкаст Spring Roo» Кена Римпла; Проверено 21 февраля 2010 г.
- ^ «Spring Roo 1.2.4.РЕЛИЗ уже доступен» от 17 октября 2013 г.
- ^ «InfoQ: роль генерации кода в разработке Java» Шрини Пенчикала; Датировано 3 сентября 2009 г.
- ^ «InfoQ: Знакомство с видеопрезентацией Spring Roo 1.0.0» , Бен Алекс (руководитель Spring Roo в SpringSource); Проверено 21 февраля 2010 г.
- ^ «Конференция JAX Italia 2009: Весенний Ру» Массимилиано Десси; Проверено 21 февраля 2010 г.
- ^ «Группа пользователей Java в Филадельфии: Spring Roo» Кена Римпла; Проверено 21 февраля 2010 г.
- ^ "Домашняя страница Spring Roo" ; Проверено 21 февраля 2010 г.
- ^ «Sun Java 5 JavaDocs для RetentionPolicy.SOURCE» от Sun Microsystems; Проверено 17 октября 2009 г.
- ^ «Рефакторинг Push-In для AJDT» Эндрю Айзенберга (руководитель проекта AJDT в SpringSource); Проверено 17 октября 2009 г.
- ^ «Интертипы Eclipse AJDT и рефакторинг Push-In». Архивировано 17 января 2010 г. в Wayback Machine Дхрубой Бандопадхьяем; Датировано 31 декабря 2009 г.
- ^ «Конференция JavaDay IV итальянской группы пользователей Java: Внутренние элементы Spring Roo» Массимилиано Десси; Проверено 21 февраля 2010 г.
- ^ «Весна, Ру и Alfresco тоже: что Alfresco дал весне и почему» Джеффа Поттса; Датировано 16 декабря 2009 г.