Introducción a gvNIX y Spring Roo

71
gvNIX / Spring Roo. Desarrollo rápido de aplicaciones web con Java Enrique Ruiz DiSiD Technologies, S.L.

description

Introducción al proyecto gvNIX. gvNIX es un framework de desarrollo Java basado en Spring Roo. gvNIX amplía las funcionalidades básicas de Roo. Incluye: gestión de menús, gestión de temas, control concurrencia, gestión de excepciones, ...

Transcript of Introducción a gvNIX y Spring Roo

Page 1: Introducción a gvNIX y Spring Roo

gvNIX / Spring Roo. Desarrollo rápido de aplicaciones web

con JavaEnrique Ruiz

DiSiD Technologies, S.L.

Page 2: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Agenda

● Introducción

● Spring Roo

● gvNIX

● Hoja de ruta

Page 3: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Agenda

● Introducción

● Historia● Motivación● Premisas● Tecnología● Desarrollo de gvNIX● Núcleo● AppFuse 2

● Spring Roo

● gvNIX

● Hoja de ruta

Page 4: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Introducción

Entorno de trabajo Java para la CIT productivo y flexible, sin comprometer la

calidad

Page 5: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Historia

● Proyecto de código abierto

● Patrocinado por la Conselleria de Infraestructuras y Transporte de la Generalitat Valenciana

● gvNIX surge de la iniciativa de la CIT de comenzar su andadura en tecnologías Java

Page 6: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Motivación

Integración de procesos en un entorno tecnológico heterogéneo

Page 7: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Premisas

● Proyecto de código abierto

● No reinventar la rueda

● Coste mantenimiento fw < Coste mantenimiento proyectos

● Personalizable a las necesidades de un entorno concreto

● Colaborar activamente con otros proyectos de código abierto

● Integración con MOSKitt

● Entorno orientado a la productividad del desarrollador

Page 8: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Tecnología

● La tecnología debe ser de código abierto: PHP, Python, Ruby, Java, ...

● La CIT ya dispone de entorno de trabajo PHP

● Evitar aumentar la diversidad tecnológica

● Gran avance de Java para entornos corporativos

● Diversidad de herramientas Java de código abierto

● Java cubre un área conocimiento necesario en la CIT

Page 9: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Un camino duro

● No es sencillo empezar con la plataforma Java

● La plataforma Java es adecuada para los problemas de las organizaciones

● Alternativas: Ruby on Rails, Grails

Page 10: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Desarrollo de gvNIX

Opción 1. Reinventar la rueda

Opción 2. Delegar: Núcleo de gvNIX

Page 11: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Núcleo de gvNIX

● Código abierto

● Arquitectura fácil de entender y ampliar

● Usar tecnologías sólidas

● Entorno productivo

● Herramientas para desarrollo

● Potenciar buenas prácticas

● Sin sobre coste para la aplicación

Page 12: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

El núcleo y el problema de la fragmentación

● Problema en Java: Diferentes tecnologías a integrar● IDEs● Construcción del proyecto● Herramientas RAD● Frameworks y librerías● Servidores y monitorización

● No están concebidas para trabajar en conjunto

● No hay soluciones completas al problema de la productividad

Page 13: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

AppFuse 2

● Primer núcleo de gvNIX

● Aumento de la productividad basado en:● Combinar y preconfigurar distintas herramientas Java● Generación de código: Pasiva

● Funcionalidad base: clases padre

● Características:● Creación esqueleto aplicación funcional

– Solución al problema de la fragmentación● Generación de CRUD

Page 14: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Limitaciones de AppFuse 2

● Proyecto dependiente de 1 persona: Matt Raible ● Entre la versión 2.0 y 2.1 transcurrieron 18 meses hasta

que dispuso de tiempo para continuar● Desarrollo de extensiones complejo

● Arquetipos y goals de Maven 2

Page 15: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Agenda

● Introducción

● Spring Roo● ¿Qué es Roo?● Filosofía● Generación de código● Usando Roo

● gvNIX

● Hoja de ruta

Page 16: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Spring Roo

Roo es un pequeño genio que observa desde un segundo plano y gestiona todo aquello de lo que no me quiero preocupar

Ben Alex, fundador y líder del proyecto Spring Roo

Page 17: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

¿Qué es?

● Framework núcleo de gvNIX● Mejora beneficios de AppFuse 2 sin sus desventajas

● Aumento de la productividad basado en:● Combinar y preconfigurar distintas herramientas Java● Generación de código: Pasiva y Activa

● Funcionalidad base: Artefactos adicionales

● Facilita la programación del código que realmente añade valor

Page 18: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Filosofía de Roo

● Generación de código en Java (lenguaje estático)

● Eliminar el trabajo tedioso● Centrar al desarrollador en la lógica de negocio

● Convención sobre configuración

● Enfoque DDD (Domain-Driven Development)● Dirigido por el modelo de entidades● Lógica en las entidades (Real Object Oriented), elimina capas

redundantes

● Crea un proyecto en segundos

● Realimentación● Añade valor durante todo el ciclo de vida

Page 19: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

¿No es mala la generación de código?

● Depende de cómo la herramienta gestiona el código escrito por el desarrollador

● No, si asume que escribir código es necesario

● Roo asume que el desarrollador quiere escribir código

Page 20: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Beneficios de la generación de código

● Elimina la necesidad de escribir código que se supone ya está● Métodos Java Bean● Código de la capa web

● Consistencia

● Reduce barreras para integrar otras tecnologías

Page 21: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

El intérprete de comandos

● Herramienta RAD para Java, extensible y tipo consola

● Herramienta sólo para desarrollo

Page 22: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

¿Cómo funciona Roo?

Page 23: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Usabilidad

● Comandos hint y help● Guían al desarrollador en la forma de proceder

● TAB para completar prácticamente cualquier comando● Ocultación de comandos e identificación automática del contexto

● Incluso si se comente algún error, Roo puede deshacer los cambios

● Ejecución de scripts

● Funcionamiento predictivo y conservador● El desarrollador tiene el control y Roo no se entromete en la

forma de hacer las cosas

Page 24: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Proyecto Spring

● Spring 3.0, Spring Security 3.0, Spring MVC 3.0

● JPA 2.0 (Hibernate), JSP 2.1

● AspectJ, JUnit, Maven, Eclipse ...

Page 25: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Aprovecha las fortalezas de Java

● Lenguaje de programación más popular

● APIs de uso generalizado, estandarizadas, seguras y provadas

● Calidad, madurez e integración de herramientas● Asistentes de código, depuradores, refactoring, profilers,

etc

● Tipado estático● Errores en tiempo de compilación, menos errores,

refactoring robusto, asistentes de código, etc

Page 26: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Escalabilidad

● No hay sobrecoste para el rendimiento en tiempo de ejecución● Eficiente: No se usa reflection● No se usan proxies dinámicos, ni compilación a posteriori,

LTW o similar

● No hay sobrecoste para la memoria en tiempo de ejecución● No se crean clases adicionales: no repercute en la memoria

PermGen

● No hay sobrecoste para la dimensión de los WAR● No incluye librerías: no es necesario incluir en WAR

Page 27: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Aún más

● Sin dependencias de Roo● Quita Roo de tu proyecto en 10 minutos

● Desarrolla tus propios add-ons● Roo puede crear la base de los proyectos add-on

● Estructura de aplicaciones similar

Page 28: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Generación de código

● Roo es un generador de código híbrido● Intenta combinar lo mejor de los modelos de generación pasiva

y activa

● Generación pasiva● Intérprete de comandos● Se hace y finaliza el proceso: Usada para generar archivos .xml

y .java

● Generación activa (realimentación automática)● Genera un modelo detallado de metadatos con la ayuda de las

anotaciones @Roo● Incrementalmente actualiza archivos .aj y .jsp

Page 29: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Generación activa

Page 30: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Roo en acción #1

Page 31: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Arquitectura web

● Controladores interactúan con entidades del dominio

● OpenEntityManagerInViewFilter● Patrón: "Open EntityManager in View"● JPA EntitManager en el thread de la petición● Carga perezosa en la vista● Garantiza cierre de transacciones

● Capa de servicio opcional● Lógica que implica múltiples entidades

Page 32: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Gestión del proyecto

● "project", crea un proyecto nuevo en el directorio actual

● "dependency add", añadir una nueva librería al proyecto

● "dependency remove", borrar dependencia

● "backup", crear un ZIP del proyecto

● Repositorio central de Maven (desde 1.1)

Page 33: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Anotaciones generales

● Anotaciones que pueden usarse en cualquier clase● @RooJavaBean● @RooConfigurable● @RooToString

● Roo mantiene el código automáticamente

● Roo no interfiere en el trabajo● Funciona en segundo plano y escribe el código que no

escribe el desarrollador● No hay que indicarle cuando debe dejar de hacer algo● No es necesario utilizar el intérprete de Roo

Page 34: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Soporte para entidades

● "entity", crea una entidad @RooEntity● Entidad persistente● Declara la anotación @Entity de JPA con, id, version,

EntityManager y un constructor sin argumentos● Automáticamente añade los métodos, count, findAll,

findById, findEntries, persist, remove, merge y flush a la entidad

● El comando "entity" tiene gran variedad de opciones● Generar automáticamente los test de integración● Especificar nombre de tabla, nombre de la columna

identificadora, etc

Page 35: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Atributos de entidades

● "field", comando para añadir atributos y tipos● Anotaciones JPA: --fetch, --column, ...● Anotaciones de validación (JSR-303): --max, ...● Modificadores Java: --primitive, --transient, ...

● El intérprete recuerda la última entidad sobre la que trabajamos● Los atributos se añaden automáticamente a esta entidad● Cambiar la clase activa usando --class

Page 36: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Persistencia

● "persistence setup"● --provider: Hibernate, OpenJPA and EclipseLink● --database: Seleccionar la base de datos

● "database properties list", listado de propiedades JDBC

● "database properties set", cambiar propiedad JDBC

● "database properties remove", borrar propiedad JDBC

● En cualquier momento se puede ejecutar el comando "persistence setup"● Cambio del motor de persistencia: de Hibernate a OpenJPA

Page 37: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Búsquedas dinámicas

● Ahorra tener que escribir consultas típicas JPA QL● Roo escribe estas consultas

● Las búsquedas se añaden como métodos estáticos de las entidades● Aún así, son compatibles con entidades abstractas● "finder list", muestra todas las búsquedas disponibles● "finder add", activa una búsqueda concreta

Page 38: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Pruebas unitarias

● "test integration", crear las pruebas de integración para entidades● "data on demand" automático para datos de prueba● "--testAutomatically" del comando "entity"

● "test mock", crear los tests unitarios● Permite probar los métodos estáticos de las entidades

● "dod", crea una clase que proporciona los datos bajo demanda● Rara vez se usa directamente● Se crea automáticamente si se solicita en las pruebas

Page 39: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Spring Web MVC

● "controller scaffold", controladores web automáticos● Genera un controlador según el modelo REST para una

entidad● Genera y mantiene las JSP● El desarrollador puede afinar el comportamiento de

algunos métodos (CRUD)● Permite indicar el formato de los campos fecha● Genera formularios de búsqueda

● "controller all", scaffold automático de todas las entidades

● "controller class", genera el esqueleto de un controlador

Page 40: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Tecnología web

● Spring JS, Tiles y URL Rewrite

● "selenium test", crea pruebas funcionales de controladores● Controladores generados con "scaffold"● "mvn tomcat:run"● "mvn selenium:selenese"

● "web flow", instala Spring Web Flow

Page 41: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

SMTP y JMS

● "email sender setup", configura el envío por SMTP

● "field email", añade código para envío de email

● "jms setup", instala proveedor JMS● Incluye una instancia de ActiveMQ accesible por TCP

● "jms listener class", crea un receptor de mensajes JMS

Page 42: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Proceso de construcción

● "perform clean", ejecuta "mvn clean eclipse:clean"

● "perform eclipse", ejecuta "mvn eclipse:eclipse"

● "perform tests", ejecuta "mvn test"

● "perform package", ejecuta "mvn package"

● "perform command", ejecuta cualquier comando Maven

● Se necesita que Maven este configurado en el PATH

Page 43: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Miscelánea

● "security setup", instala Spring Security

● "logging setup", instala la configuración de Log4J

● "script", ejecuta un guión de comandos Roo● Roo incluye en su distribución:

– clinic.roo, wedding.roo, vote.roo y addon.roo● Ruta absoluta o Classpath

Page 44: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Roo en acción #2

Page 45: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Requerimientos

● Java 5

● Maven 2.0.9 o superior● Roo no necesita Maven para funcionar● Maven sólo se usa para los proyectos generados con Roo

● Soporte para Ant/Ivy en futuras versiones

Page 46: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Cooperación con IDE

● SpringSource Tool Suite incluye integración con Roo● Usar la opción de Roo embebido

● Eclipse con la última versión de AspectJ● Usar en paralelo el intérprete de Roo● Roo detecta cambios automáticamente

Page 47: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Actualización de Roo

● Cuando se actualiza Roo a una nueva versión, los archivos .aj pueden cambiar● Es una característica de la generación activa de código● Nuevas versiones incluyen mejoras en los archivos .aj

● Evitar modificar los archivos .aj● Roo asume que le pertenecen y los cambia cuando lo

necesita

● Copia el código generado a los .java si necesitas cambiar algo

Page 48: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Add-ons

● Arquitectura OSGi (Roo 1.1+)

● Add-ons son componentes OSGi

● "osgi ps", listar paquetes instalados● [ 34] [Active ] [ 1] Spring Roo - Addon

● "osgi install", instalar nuevo paquete OSGi

● "felix shell 'start ID'", activar paquete OSGi

● "felix shell 'stop ID'", desactivar paquete OSGi

● "osgi uninstall", desinstalar paquete OSGi

Page 49: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Roo en acción #3

Integración IDE

Page 50: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Agenda

● Introducción

● Spring Roo

● gvNIX● Proyecto gvNIX● Usando gvNIX

● Hoja de ruta

Page 51: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Proyecto gvNIX

● Aumento de la productividad y calidad:● Generación de componentes funcionales● Usa las fortalezas de Roo

● Add-ons de Roo● Instalación de componentes● Personalización de componentes

● Módulos que añaden valor a la aplicación web

Page 52: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Gestión de temas

● Tema: Aspecto de la interfaz de usuario

● Control sobre el aspecto de la aplicación web

● 3 temas instalados por defecto + temas específicos del proyecto

● Cambio aspecto en tiempo ejecución

● Colección de archivos: CSS, imágenes, tags, jsps, ...

Page 53: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Gestión de temas

● "theme manager install", instalar un tema en el proyecto

● "theme manager list", ver lista de temas: disponibles, instalados y actual

● "theme manager set", cambiar tema actual

Page 54: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Gestión de menús

● Organización de la estructura de páginas de la aplicación

● Definición en XML y base de datos

● Roles de acceso

Page 55: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Gestión de menús

● "page setup", instala la gestión de menús en el proyecto

● "page add", añade una nueva página a la aplicación

● "page hide", oculta una página (quita del menú)

● "page move", reubicar una página y sus hijos dentro de otro nodo o entre 2 nodos

● "page update", actualizar la configuración de la página

● "page info", mostrar la información de la página

● "page list", listado de todas las páginas de la aplicación

Page 56: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

gvNIX en acción #1

Cambiar aspecto Gestión de menús (si estable)

Page 57: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Gestión de excepciones

● Excepciones no controladas

● Diccionario [Tipo Excepción : Mensaje al Usuario]

● Diccionario en XML

● Tipos de entradas en diccionario: Aplicación, Organización (0.4+), gvNIX (0.4+)

Page 58: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Gestión de excepciones

● "exception handler list", lista de excepciones manejadas

● "exception handler add", añadir entrada al diccionario [Excepción : Mensaje]

● "exception handler remove", eliminar entrada del diccionario

● "exception handler set language", añade traducción de mensaje

Page 59: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Control de concurrencia

● Evitar actualizaciones perdidas

● Evitar bloqueos de base de datos

● Control por campo versión

● Control por checksum de estado● Única opción para no modificar esquema de base de datos

● "occ checksum set", activa control de concurrencia para una entidad

● "occ checksum all", activa control de concurrencia para todas las entidades

Page 60: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

gvNIX en acción #2

Control de concurrencia

Gestión de excepciones

Page 61: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Soporte para JSP 2.0

● Spring Roo utiliza JSP 2.1

● Tomcat 5.5 requiere JSP 2.0

● Actualizar dependencias

● Garantizar compatibilidad en JSPs y TAGs

● "controller jsp2.0 support", migrar pom.xml y archivos Roo a JSP 2.0

Page 62: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Enlace con parámetros

● "web binding setup", instalar editores por defecto

● "web binding drop", elimina editores por defecto

Page 63: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Servicios Web

● Hacer accesible a otras aplicaciones● Amazon● Google

● Integración con procesos organizativos

● "cxf setup", instala el soporte para servicios web

● "cxf service", crea un nuevo servicio web

● "cxf operation", añade una operación a un servicio existente

Page 64: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

gvNIX en acción #3

Integrar servicios web

Page 65: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Agenda

● Introducción

● Spring Roo

● gvNIX

● Hoja de ruta● gvNIX● Roo

Page 66: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Hoja de ruta de gvNIX

● gvNIX 0.4

● Mejora de add-ons

● Menús: Página no visible, página sin vista (sección), base de datos, ...

● Temas: Crear tema en proyecto, guardar tema, tema por sección

● Excepciones: Soporte envío incidencias por email, diccionario en bbdd, ...

● Enlaces parámetros: añade un editor a los controladores

● Concurrencia: Punto de corte alrededor_de vs Reemplazar métodos actualización, soporte concurrencia relaciones

● Gestión de perfiles de proyecto: desarrollo, preproducción, integración, ...

● Gestión de módulos JAAS

● Servicios Web : Contract-First

● Desarrollo ESB : ServiceMix 4

● Integración con MOSKitt

Page 67: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Hoja de ruta de Roo

● Mejora de add-ons● Realimentación de JSPX● Identificadores JPA

● Google add-ons● Google App Engine● GWT

● Roo add-ons● Ingeniería inversa de BD● Solr

● Comunidad de add-ons● Arquitectura OSGi● Repositorios de paquetes

OSGi (OBR)

Page 68: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Recursos

● Infraestructura gvNIX (plone, svn, etc) en fase de creación

● MOSKitt ( www.moskitt.org )

● Spring Roo ( www.springsource.org/roo )

● Conselleria de Infraestructuras y Transporte ( www.cit.gva.es )

Page 69: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

Conclusiones

● Spring Roo mejora la productividad Java● Tecnologías ampliamente usadas● Fácil de usar y aprender● Usa las fortalezas de Java● Alta productividad

● gvNIX mejora las funcionalidades básicas de Roo● Componentes funcionales● Usa las fortalezas de Roo● Alto valor funcional añadido

Page 70: Introducción a gvNIX y Spring Roo

© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)

¿Preguntas?

Agradecimientos

José Alarcón (CoJefe proyecto gvNIX – CIT)Eugenia Arnedo (CoJefa proyecto gvNIX – CIT)

Equipo gvNIX @ DiSiD

Ben Alex, Spring Roo Project Lead

Page 71: Introducción a gvNIX y Spring Roo

www.disid.com

DiSiD TECHNOLOGIES, S.L.

C/ San Vicente Mártir, 84 – 5A

46002 – Valencia

Tel. + 34 902 013 309

Fax. +34 961 198 112

[email protected]