martes, 18 de junio de 2013

Introducción a Spring Roo para el desarrollo rápido de aplicaciones.

clip_image002

Cuando los desarrolladores JAVA se enfrentan a un nuevo proyecto por lo general tienden a reutilizar buenas prácticas, frameworks de diferentes niveles, patrones de diseño y de arquitectura que en su conjunto les ayudan a no reinventar la rueda y a reutilizar cosas ya hechas en trabajos previos.

Esto lleva mucho copy/paste, cambio en las configuraciones y tiempo invertido que se podría utilizar en implementar cosas nuevas. Cuando esto sucede existe un framework que nos puede quitar mucho trabajo de encima: Spring Roo.

Spring Roo es una herramienta RAD (Rapid Application Development) para JAVA y basada en Spring Framework. A partir del uso de este framework se puede comprobar que es un generador avanzado de código que se puede ir utilizando desde una línea de comandos similar a Maven donde a través de una guía vamos configurando todo un proyecto a lo largo de su ciclo de vida.

Importante es que al no contener ningún componente en tiempo de ejecución no interfiere en el despliegue de las soluciones ni crea dependencias con el producto final, de forma tal que resulta transparente para el despliegue en producción.

Su desarrollo está enfocado en una serie de plugins como pasa con Maven y se usan scripts relacionados con estos plugins para ejecutar las tareas.

Entre sus características básicas se pueden identificar:

  • Permite desarrollar una aplicación Web en minutos. Genera un war. Construye dos capas: la de persistencia y la de presentación. Para agregar la capa de negocio, se pueden agregar las clases manualmente a los controladores generados con Roo.
  • Permite generar un modelo de datos complejo, incluyendo validaciones.
  • La aplicación Web es RESTful y tiene soporte para internacionalización en varios idiomas.
  • Tiene soporte de seguridad out-of-the-box.
  • La presentación usa Dojo (incorporar otro, por ejemplo JQuery, se hace a mano y es costoso).

Entre los frameworks que usa podemos listar los siguientes:

  • AspectJ
  • Java Persistence API: Hibernate, OpenJPA, EclipseLink
  • Java Server Pages
  • JUnit
  • Log4J
  • Maven
  • Selenium
  • Spring Framework
  • Spring MVC
  • Spring Security
  • Spring Web Flow

Los requisitos para su uso son bastante sencillos:

1. Tener JAVA instalado.

2. Tener MAVEN instalado.

Para descargar el framework pueden ir a su sitio oficial http://www.springsource.org/roo/ y obtener la versión más actualizada así como ejemplos de su uso.

Revisando la web podemos encontrar los siguientes puntos a su favor:

Usabilidad.

El primer punto a favor de Spring Roo es su interfaz, un intérprete de comandos con autocompletado, muy similar a las shells de *nix con readline.
Esto nos va a permitir crear scripts propios para generar el esqueleto o partes de la aplicación con la flexibilidad y la productividad propia de los intérpretes de comandos. Además el intérprete es realmente intuitivo. Basta pulsar [tab] para ver las opciones que disponemos o introducir el comando 'hint' para obtener indicaciones sobre el próximo paso a seguir. Por supuesto, podemos seguir usando nuestro IDE favorito para el desarrollo. Spring Roo vigila los cambios que hacemos en el código y toma las medidas oportunas en caso de que deba hacerlo.

Funcionalidad.

Spring Roo está basado en una arquitectura modular que permite construir distintos tipos de aplicaciones según los módulos que utilicemos. Sin embargo, en principio, está bastante orientado a la creación de aplicaciones web basadas en Spring MVC en la capa de presentación y una capa de modelos del dominio persistentes mediante JPA.

Los modelos del dominio encapsulan tanto lógica de negocio como la lógica de persistencia, un patrón de ORM, Active Record, descrito por Martin Fowler en P of EAA como:
"An object that wraps a row in a database table or view, encapsulates the database access, and adds domain logic on that data."

Representa una simplificación importante sobre la clásica arquitectura de tres capas donde se han suprimido la capa de servicios (Service Layer) y la capa de acceso a datos (DAO, Repository) que suelen ser una sobrecarga innecesaria en proyectos web de tamaño medio o pequeño.

La productividad de la arquitectura basada en registros activos ha sido probada considerablemente en el pasado, por ejemplo en frameworks como Ruby on Rails.

Otra ventaja a tener en cuenta es que suele ser bastante más asequible para equipos de desarrollo con un porcentaje alto (o muy alto) de programadores con poca experiencia, como por ejemplo, las factorías de software. El lanzamiento de la aplicación es un auténtico relámpago y la herramienta se hace cargo de muchas de las tareas que, a pesar de ser monótonas para programadores experimentados, suelen ser barreras difíciles de pasar para los nuevos por la cantidad de conceptos que manejan.

Spring Roo incluye las siguientes funcionalidades:

  • Lanzamiento de una aplicación nueva (aunque también puede aplicarse a una aplicación existente).
  • Configurar el sistema de compilación (actualmente soporta Maven2).
  • Instalar un proveedor de JPA.
  • Configurar la base de datos que se va a utilizar.
  • Configurar Log4Java.
  • Crear entidades JPA y manejar automáticamente las inyecciones de dependencias (Spring) y los métodos de persistencia.
  • Añadir campos a las entidades (Active Records) incluyendo las anotaciones de JPA como del nuevo estándar de validación de Beans JSR 303.
  • Manejar test de integración JUnit automáticos incluso cuando existen relaciones entre entidades o restricciones en las validaciones de los beans.
  • Crear y mantener controladores de Spring MVC que cumplen las convecciones REST, incluyendo la creación y el mantenimiento de las páginas JSP.
  • Crear esqueletos de controladores de Spring MVC que pueden ser terminados por el programador, ahorrando el trabajo de buscar las anotaciones y los métodos que normalmente se utilizan en dichos controladores.
  • Creación dinámica de métodos finders sin necesidad de escribir consultas en JPA QL.
  • Instalación y configuración simple de Spring Security

¿Te ha gustado este Post? Compártelo con tus amigos.

No hay comentarios:

Publicar un comentario

IconIconIcon