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

Introducción a gvNIX y Spring Roo

  • Upload
    disid

  • View
    2.818

  • Download
    1

Embed Size (px)

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, ...

Citation preview

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]