miércoles, 30 de mayo de 2012

Desarrollo Rápido con Spring Roo.


Spring Roo es una herramienta de desarrollo rápido de aplicaciones (RAD), que permite el desarrollo de aplicaciones Java EE de manera más productiva y cómoda para el desarrollador.

Tecnologias Utilizadas.

  • Spring Framework: framework de Java cuya principal caracteristicas es brindar una fabrica de objetos basado en la Inyeccion de Depedencias.
  • Spring MVC: modulo del framework Spring, que implementa una arquitectura Modelo-Vista-Controlador para desarrollar una aplicación web.
  • Spring Security: modulo del framework Spring, que permite gestionar completamente la seguridad de las aplicaciones Java.
  • Spring Web Flow: modulo del framework Spring, que define y gestiona los flujos de paginas dentro de una aplicación web.
  • Selenium: herramienta para hacer pruebas de aplicaciones web.
  • Maven: herramienta de software para la gestión y construcción de proyectos Java, basado en un formato XML.
  • Log4j: biblioteca desarrollada en Java que permite a los desarrolladores de software elegir la salida y el nivel de granularidad de los logs a tiempo de ejecución.
  • JUnit: conjunto de bibliotecas utilizadas para hacer pruebas unitarias de aplicaciones Java y llevar un desarrollo guiado por pruebas (TDD).
  • JavaServer Pages.
  • Java Persistence Api (JPA): framework de java que maneja datos relacionales en aplicaciones, no perdiendo las ventajas de la orientación a objetos al interactuar con una base de datos (mapeo objeto-relacional), y permitiendo usar objetos regulares (POJOs)
  • AspectJ: lenguaje de programación orientado a aspectos construido como una extensión del lenguaje Java.

Caracteristicas.

  • Genera código (de forma activa y pasiva) para aplicaciones Java con Spring.
  • Eliminar el trabajo tedioso centrando el desarrollo en la lógica de negocio.
  • Se basa en el paradigma Convencion sobre Configuración (CoC).
  • Posee un enfoque de diseño guiado por el dominio (DDD).

    • Está dirigido por un modelo de entidades.
    • Se centra en la logica de las entidades y elimina las capas redundantes.
    • Utiliza el patron de diseño "Active Record" en oposicion al anti-patrón de diseño "Anemic Domain Model (ADM)".

  • Crea un proyecto en minutos.
  • Añade valor durante todo el ciclo de vida (Retroalimentación).
  • Las aplicaciones siguen las mejores práticas de diseño.
  • Permite auto-generar test unitarios y de integración.
  • No incorpora elementos adicionales al entorno de ejecución, por lo que no penaliza la velocidad de aplicación.
  • Se puede integrar con IDEs como Spring Tool Suite o Eclipse.
  • Recibe instrucciones a través de una consola interactiva con auto-completado y ayuda en línea.
  • Es extensible usando modulos OSGI (ficheros JAR con un conjunto de metadatos que especifican la caracteristicas del modulo).
  • Se puede eliminar un proyecto en minutos.

Interfaz de Linea de Comandos (CLI)

Spring Roo es una herramienta de Linea de Comandos (CLI) de fácil uso, que proporciona auto-completado "Tab" de comandos y argumentos, y ayuda en linea mediante "help" y "hint".



Arquitectura.

Roo genera código que se puede dividir en dos categorías:

  1. Código gestionado por Spring Roo => Ficheros AspectJ ITD (.aj)
  2. Código gestionado por el programador => Fuentes Java.



En tiempo de compilación, el código de los ficheros .aj, es tejido en el código de los fuentes Java.


Ejemplo: Aplicacion de Inventario.


Se tiene una clase "Producto" con sus respectivos atributos: numero identificador (id_producto), nombre, descripcion y precio.


Se procede a crear la carpeta "Inventario" donde se almacenara el proyecto, y dentro de esta, se ingresa a la consola del Roo.


A continuación se comienza a desarrollar la aplicación:

// Se Crea el Proyecto
roo> project --topLevelPackage com.curso.inventario
// Se Define la herramienta de persistencia y la base de datos a utilizar
roo> jpa setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY
// Se Crea la entidad "Producto"
roo> entity jpa --class ~.domain.Producto --testAutomatically
// Se crean los antributos de la entidad "Producto" con sus respectivas restricciones
roo> field number --fieldName id_Producto --type int --notnull
roo> field string --fieldName nombre --notNull
roo> field string --fieldName descripcion
roo> field number --fieldName precio --type double
// Se genera la capa de presentacion
roo> web mvc setup
roo> web mvc all --package ~.web
// Se ejecutan las pruebas respectivas
roo> perform tests
// Se empaqueta el proyecto
roo> perform package
// Se estructura el proyecto para ser usado y modificado en eclipse
roo> perform eclipse
// Se sale de Roo
roo> exit
// Se despliega la aplicación en un contenedor web
C:\Users\Arak\Roo\Inventario> mvn tomcat:run

A traves de estos simples pasos, se genero la siguiente aplicación web:



Desarrollo en MQ Arriendos.

Se propone desarrollar la aplicación del "Sistema de Inventario" para MQ Arriendo utilizando Spring Roo, donde cada tarea asociada a un requerimiento, tendra un script con todos los comandos utilizados en el desarrollo de la aplicacion de esa tarea. Luego estos script se uniran para formar solo uno, y por ende, solo una aplicación que integre todas las tareas y finalmente todos los requerimientos planteados por el Product Owner.


Fuente y más información:

No hay comentarios:

Publicar un comentario