stringtranslate.com

Canguro de primavera

Spring Roo es una herramienta de software de código abierto que utiliza principios de convención sobre configuración para proporcionar un desarrollo rápido de aplicaciones de software empresarial basado en Java . [1] Las aplicaciones resultantes utilizan tecnologías Java comunes como Spring Framework , Java Persistence API , Thymeleaf , Apache Maven y AspectJ . [2] Spring Roo es miembro de la cartera de proyectos de Spring .

Motivación e historia

La declaración de misión de Spring Roo es "mejorar fundamentalmente la productividad de los desarrolladores de Java sin comprometer la integridad o la flexibilidad de la ingeniería" . [3]

La tecnología se demostró por primera vez durante la conferencia de desarrolladores SpringOne Europe, el 27 de abril de 2009, y al mismo tiempo se publicó una versión alfa inicial. Durante la conferencia, se creó una aplicación en vivo en el escenario que los asistentes a la conferencia usarían para votar el nombre preferido para el proyecto (que en ese momento tenía el nombre en código "Roo" dentro de SpringSource ). [4] Finalmente, se prefirió el nombre "Spring Roo" sobre otras alternativas, como Spring Boost, Spring Spark, Spring HyperDrive y Spring Dart. [5]

Siguieron varios lanzamientos, [6] [7] con Roo 1.0.0.RELEASE ( disponibilidad general ) lanzado en diciembre de 2009. En octubre de 2010, se lanzó Spring Roo 1.1.0.RELEASE. La versión 1.1.0 se trasladó a una base OSGi con un modelo de descubrimiento de complementos asociado, además de soporte agregado para ingeniería inversa de base de datos incremental, reducción de complejidad de página Spring MVC, Google Web Toolkit, Google App Engine, Apache Solr, JSON y características más pequeñas como automatización serializable. [8] Los ingenieros del proyecto Roo actuales son empleados por SpringSource y, como tal, las versiones de Roo generalmente admiten las últimas versiones disponibles de otros proyectos de la cartera de Spring .

En 2014, DISID asume el liderazgo del marco de código abierto Spring Roo tras el acuerdo de asociación con Pivotal. Colaboran en el desarrollo del proyecto Spring Roo. Roo seguirá con su objetivo de proporcionar un marco RAD con estilo de generación de código.

El proyecto Spring Roo seguirá siendo un proyecto de código abierto bajo Spring, manteniendo la misma política de licencias actual. Tanto Pivotal como DISID están haciendo un llamamiento a las comunidades Spring y Java para que colaboren en el proyecto.

Compatibilidad de estándares y tecnologías

La instalación predeterminada de Roo facilita la creación de aplicaciones que cumplen con los siguientes estándares y tecnologías principales: [9]

La lista anterior se puede ampliar mediante complementos adicionales de Roo, que proporcionan el método de extensibilidad de Roo .

Interfaz de usuario

La interfaz de usuario principal de Spring Roo es un shell de línea de comandos . El shell proporciona tanto una interfaz de línea de comandos como un mecanismo para alojar complementos (que se denominan "complementos" en Roo). Un objetivo de diseño clave de Roo es garantizar que un usuario pueda seguir trabajando de forma "natural", lo que normalmente significa utilizar su entorno de desarrollo integrado (IDE) o editor de texto preferido para la mayoría de las tareas. Como tal, Roo se carga a menudo en una ventana separada del IDE o editor de texto, y supervisará el sistema de archivos para detectar cambios realizados por el usuario fuera de Roo. También se realiza un análisis del proyecto de un usuario en el momento del inicio para determinar los cambios que se hayan podido realizar mientras Roo no se estaba ejecutando.

El shell de la interfaz de usuario admite amplias funciones de usabilidad , entre las que se incluyen la finalización de la línea de comandos (es decir, presionar TAB), ayuda en línea , sugerencias (una forma de ayuda sensible al contexto ) y conocimiento contextual (que proporciona una inferencia automática de las intenciones probables en función de la actividad reciente). Esto permite que un usuario cree un nuevo proyecto de software a través del shell de Roo o utilice Roo en un proyecto existente. El siguiente es un ejemplo de los comandos utilizados por Roo para crear una nueva aplicación más el objetivo de ejecución del complemento Maven de Spring Boot para compilar y ejecutar la aplicación utilizando un servidor HTTP integrado:

$  mkdir  hola$ cd hola  $  roo.shroo> configuración  del proyecto --topLevelPackage com.foo   roo> configuración  de jpa --proveedor HIBERNATE --base de datos HIPERSONICO_EN_MEMORIA     roo>  entidad  jpa  --class  ~.dominio.Timerroo>  campo  cadena  --fieldName  mensaje  --notNullroo>  repositorio  jpa  --allroo>  servicio  --todosconfiguración  de
web  mvc roo> configuración de vista  web  mvc --type THYMELEAF    roo> controlador  web  mvc --all --responseType THYMELEAF    roo> controlador  web  mvc --all --pathPrefix /api    roo>  salir$  mvn  spring-boot:ejecutar

No era necesario escribir los comandos anteriores en su totalidad, sino que se completaban con la tecla TAB. Además, se podría haber utilizado el comando "hint" para obtener ayuda en cualquier momento.

Arquitectura

Si bien existen muchas formas en las que el software puede generar código automáticamente, [11] Roo opera generando declaraciones entre tipos de AspectJ (también conocidas como mixins o introducciones). Esto logra la separación de preocupaciones , ya que el código mantenido por Roo está en una unidad de compilación diferente del código que escribe un usuario. Esto significa que Roo puede modificar de manera incremental las declaraciones entre tipos de AspectJ que necesita y dejar todos los demás archivos intactos. [12] [13] [14]

Spring Roo utiliza complementos para proporcionar toda la funcionalidad dentro y encima de un sistema de ejecución OSGi basado en Apache Felix .

Complementos básicos

Hay numerosos comandos disponibles en Roo, según los "complementos básicos" (los que se incluyen con Roo) y los "complementos de terceros" (los que no se incluyen con Roo) que se hayan instalado. Los complementos básicos que se incluyen con Roo 2.0.x incluyen:

Módulos principales de Roo

Roo también incluye un conjunto básico de módulos que proporcionan un entorno de ejecución alojado para diferentes complementos. Estos módulos principales incluyen:

Diferenciación

Spring Roo se diferencia de otras herramientas de desarrollo rápido de aplicaciones que se basan en convenciones sobre configuración en los siguientes aspectos principales: [15]

  1. Productividad de la plataforma Java : Roo ofrece una solución de productividad para los desarrolladores de Java. No requiere que el usuario programe en ningún lenguaje que no sea Java . También utiliza estándares y tecnologías de aplicaciones empresariales Java (como los que se enumeran arriba) para maximizar la reutilización de los conocimientos, las habilidades y la experiencia de los desarrolladores existentes.
  2. Usabilidad : El shell de Roo está diseñado para proporcionar un entorno fácil de usar y que se pueda descubrir, y que minimice los requisitos de capacitación. Todas las anotaciones de Roo comienzan con @Roo para facilitar la asistencia de código ( completar la línea de comandos en los IDE). Los usuarios pueden usar su IDE para todas las operaciones y no necesitan estar al tanto de que Roo se está ejecutando. Roo también permite a los usuarios editar sus archivos cuando Roo no se está ejecutando.
  3. Sin tiempo de ejecución : Roo no proporciona una API de tiempo de ejecución ni requiere componentes de tiempo de ejecución específicos. Esto garantiza que no haya consumo de recursos de CPU , memoria y almacenamiento en disco relacionados con Roo en tiempo de ejecución. El código de Roo está optimizado para implementaciones en la nube de tamaño reducido y casos de uso de alta escalabilidad .
  4. Evita el bloqueo : Roo se puede eliminar rápidamente de un proyecto de usuario, lo que resulta útil para protegerse contra el bloqueo de un proveedor . Esto es posible porque no hay ningún componente de tiempo de ejecución que eliminar, las anotaciones @Roo son solo de "retención de la fuente" (lo que garantiza que no se conserven en los archivos *.class compilados) [16] y las declaraciones entre tipos de AspectJ de Roo se pueden "introducir" en las unidades de compilación *.java estándar. [17] [18]
  5. Extensibilidad : la separación de Roo de la infraestructura central y los complementos básicos tiene como objetivo permitir que terceros extiendan Roo fácilmente. [19] [20]

Véase también

Referencias

  1. ^ "InfoWorld: El CEO de SpringSource promociona Roo, una nueva mejora de Java" por Paul Krill; fechado el 1 de junio de 2009.
  2. ^ "SD Times: Roo lanzado para manejar tareas repetitivas de Spring" Archivado el 25 de febrero de 2012 en Wayback Machine por Alex Handy; con fecha del 19 de octubre de 2009.
  3. ^ "Documentación de referencia de Spring Roo", sección Declaración de misión; consultado el 21 de febrero de 2010.
  4. ^ "Videos tecnológicos: El futuro de la innovación en Java" Archivado el 9 de octubre de 2009 en Wayback Machine por Rod Johnson (director ejecutivo de SpringSource); consultado el 17 de octubre de 2009.
  5. ^ "Documentación de referencia de Spring Roo", sección Historial; consultado el 21 de febrero de 2010.
  6. ^ "InfoQ: Lanzamiento de Spring Roo 1.0 M1" por Srini Penchikala; Con fecha del 31 de mayo de 2009.
  7. ^ "Seguimiento de problemas de Jira para los lanzamientos del Proyecto Spring Roo"; Consultado el 21 de febrero de 2010.
  8. ^ "Un gran salto hacia adelante: ¡Spring Roo 1.1.0 ya está disponible!" Archivado el 28 de octubre de 2010 en Wayback Machine , por Ben Alex (director de Spring Roo en SpringSource); consultado el 27 de octubre de 2010.
  9. ^ "TechCast: Spring Roo podcast" de Ken Rimple; consultado el 21 de febrero de 2010.
  10. ^ "Spring Roo 1.2.4.RELEASE ya está disponible" Fechado el 17 de octubre de 2013.
  11. ^ "InfoQ: El papel de la generación de código en el desarrollo de Java" por Srini Penchikala; fechado el 3 de septiembre de 2009.
  12. ^ "InfoQ: Introducción a Spring Roo 1.0.0 Presentación en video", por Ben Alex (director de Spring Roo en SpringSource); consultado el 21 de febrero de 2010.
  13. ^ "Conferencia JAX Italia 2009: Spring Roo" por Massimiliano Dessì; Consultado el 21 de febrero de 2010.
  14. ^ "Grupo de usuarios de Java de Filadelfia: Spring Roo" por Ken Rimple; consultado el 21 de febrero de 2010.
  15. ^ "Página de inicio de Spring Roo"; Consultado el 21 de febrero de 2010.
  16. ^ "Sun Java 5 JavaDocs para RetentionPolicy.SOURCE" de Sun Microsystems; consultado el 17 de octubre de 2009.
  17. ^ "Refactorización Push-In para AJDT" por Andrew Eisenberg (líder del proyecto AJDT en SpringSource); consultado el 17 de octubre de 2009.
  18. ^ "Intertipos AJDT de Eclipse y refactorización Push-In" Archivado el 17 de enero de 2010 en Wayback Machine por Dhruba Bandopadhyay; con fecha del 31 de diciembre de 2009.
  19. ^ "Conferencia JavaDay IV del grupo italiano de usuarios de Java: aspectos internos de Spring Roo" por Massimiliano Dessì; consultado el 21 de febrero de 2010.
  20. ^ "Primavera, canguro y también aire libre: lo que el aire libre le dio a la primavera y por qué", por Jeff Potts; fechado el 16 de diciembre de 2009.

Enlaces externos