SlideShare una empresa de Scribd logo
1 de 71
Descargar para leer sin conexión
gvNIX / Spring Roo. Desarrollo
                             rápido de aplicaciones web
           Enrique Ruiz
                                                con Java
DiSiD Technologies, S.L.
Agenda
●   Introducción
●   Spring Roo
●   gvNIX
●   Hoja de ruta




       © 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

          © 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




   © 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




        © 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




  © 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


        © 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




        © 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




        © 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




© 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




        © 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


         © 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


         © 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




         © 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



         © 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




   © 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



         © 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

          © 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




       © 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




         © 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




       © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
¿Cómo funciona 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


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




        © 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



         © 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


         © 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




         © 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

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




© DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
Roo en acción #1




© 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



         © 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)




        © 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

         © 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

         © 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




         © 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


         © 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




         © 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

         © 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

         © 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




         © 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




         © 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




        © 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




         © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
Roo en acción #2




© 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




         © 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




         © 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



         © 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



            © 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




© 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




         © 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




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


        © 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




        © 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




        © 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



        © 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)




© 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+)




        © 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




        © 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


         © 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




© 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




        © 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




        © 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



         © 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




© 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




         © 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                                                     ●   Gestión de perfiles de
●   Mejora de add-ons                                                 proyecto: desarrollo,
    ●   Menús: Página no visible, página sin                          preproducción,
        vista (sección), base de datos, ...
    ●   Temas: Crear tema en proyecto,
                                                                      integración, ...
        guardar tema, tema por sección                            ●   Gestión de módulos JAAS
    ●   Excepciones: Soporte envío
        incidencias por email, diccionario en                     ●   Servicios Web : Contract-
        bbdd, ...
    ●   Enlaces parámetros: añade un editor
                                                                      First
        a los controladores                                       ●   Desarrollo ESB :
        Concurrencia: Punto de corte
                                                                      ServiceMix 4
    ●

        alrededor_de vs Reemplazar métodos
        actualización, soporte concurrencia
        relaciones                                                ●   Integración con MOSKitt

            © 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                                          ●   Roo add-ons
    ●   Realimentación de JSPX                                       ●   Ingeniería inversa de BD
    ●   Identificadores JPA                                          ●   Solr
●   Google add-ons                                             ●   Comunidad de add-ons
    ●   Google App Engine                                            ●   Arquitectura OSGi
    ●   GWT                                                          ●   Repositorios de paquetes
                                                                         OSGi (OBR)




         © 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 )




        © 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


         © 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



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


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


                Tel. + 34 902 013 309
                Fax. +34 961 198 112




                info@disid.com


www.disid.com

Más contenido relacionado

La actualidad más candente (6)

ATICA DevOps
ATICA DevOpsATICA DevOps
ATICA DevOps
 
Presentacion lswc-espacio-comunidad
Presentacion lswc-espacio-comunidadPresentacion lswc-espacio-comunidad
Presentacion lswc-espacio-comunidad
 
Sysmana 2016 - Desarrollo seguro de aplicaciones C/C++ en Android con NDK
Sysmana 2016 - Desarrollo seguro de aplicaciones C/C++ en Android con NDKSysmana 2016 - Desarrollo seguro de aplicaciones C/C++ en Android con NDK
Sysmana 2016 - Desarrollo seguro de aplicaciones C/C++ en Android con NDK
 
Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020
 
Android studio
Android studioAndroid studio
Android studio
 
Sistema de gestión de contenidos Plone CMS en el CISL 2013
Sistema de gestión de contenidos Plone CMS en el CISL 2013Sistema de gestión de contenidos Plone CMS en el CISL 2013
Sistema de gestión de contenidos Plone CMS en el CISL 2013
 

Similar a Introducción a gvNIX y Spring Roo

Rad 120806173033-phpapp01
Rad 120806173033-phpapp01Rad 120806173033-phpapp01
Rad 120806173033-phpapp01Jorge Vinueza
 
Genasys sigte2011 open_geogadget_framework (OGF)
Genasys sigte2011 open_geogadget_framework (OGF)Genasys sigte2011 open_geogadget_framework (OGF)
Genasys sigte2011 open_geogadget_framework (OGF)Javier Sánchez
 
CODENVY PRESENTACION.pptx
CODENVY PRESENTACION.pptxCODENVY PRESENTACION.pptx
CODENVY PRESENTACION.pptxIbsecSykes
 
Catalyst: Framework para el desarrollo de aplicaciones Web
Catalyst: Framework para el desarrollo de aplicaciones WebCatalyst: Framework para el desarrollo de aplicaciones Web
Catalyst: Framework para el desarrollo de aplicaciones WebEsteban Saavedra
 
Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Carlos Camacho
 
Software libre y Sistemas de Información Geográfica
Software libre y Sistemas de Información GeográficaSoftware libre y Sistemas de Información Geográfica
Software libre y Sistemas de Información GeográficaKudos S.A.S
 
Rad sistemas de informacion
Rad sistemas de informacionRad sistemas de informacion
Rad sistemas de informacionDiego Sanchez
 
Gwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoGwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoManuel Carrasco Moñino
 
Modelos De Calidad para proyectos de Software Y Software Libre
Modelos De Calidad para proyectos de Software Y Software LibreModelos De Calidad para proyectos de Software Y Software Libre
Modelos De Calidad para proyectos de Software Y Software LibreEQ SOFT EIRL
 
Grails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasGrails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasCarlos Camacho
 
Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsEsteban Saavedra
 
Cloud native Computing Perú Octubre
Cloud native Computing Perú OctubreCloud native Computing Perú Octubre
Cloud native Computing Perú OctubreMario IC
 

Similar a Introducción a gvNIX y Spring Roo (20)

Rad jorge vinueza
Rad jorge vinuezaRad jorge vinueza
Rad jorge vinueza
 
Rad 120806173033-phpapp01
Rad 120806173033-phpapp01Rad 120806173033-phpapp01
Rad 120806173033-phpapp01
 
Rad
RadRad
Rad
 
Rad
RadRad
Rad
 
PresentacionPFC_ppt
PresentacionPFC_pptPresentacionPFC_ppt
PresentacionPFC_ppt
 
Genasys sigte2011 open_geogadget_framework (OGF)
Genasys sigte2011 open_geogadget_framework (OGF)Genasys sigte2011 open_geogadget_framework (OGF)
Genasys sigte2011 open_geogadget_framework (OGF)
 
CODENVY PRESENTACION.pptx
CODENVY PRESENTACION.pptxCODENVY PRESENTACION.pptx
CODENVY PRESENTACION.pptx
 
Catalyst: Framework para el desarrollo de aplicaciones Web
Catalyst: Framework para el desarrollo de aplicaciones WebCatalyst: Framework para el desarrollo de aplicaciones Web
Catalyst: Framework para el desarrollo de aplicaciones Web
 
Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013
 
Software libre y Sistemas de Información Geográfica
Software libre y Sistemas de Información GeográficaSoftware libre y Sistemas de Información Geográfica
Software libre y Sistemas de Información Geográfica
 
Rad sistemas de informacion
Rad sistemas de informacionRad sistemas de informacion
Rad sistemas de informacion
 
Principios de cloud native
Principios de cloud nativePrincipios de cloud native
Principios de cloud native
 
Trabajo RAD
Trabajo RADTrabajo RAD
Trabajo RAD
 
Gwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoGwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrasco
 
Modelos De Calidad para proyectos de Software Y Software Libre
Modelos De Calidad para proyectos de Software Y Software LibreModelos De Calidad para proyectos de Software Y Software Libre
Modelos De Calidad para proyectos de Software Y Software Libre
 
Grails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasGrails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - Sistemas
 
Gps
GpsGps
Gps
 
Gps
GpsGps
Gps
 
Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web Grails
 
Cloud native Computing Perú Octubre
Cloud native Computing Perú OctubreCloud native Computing Perú Octubre
Cloud native Computing Perú Octubre
 

Último

Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 

Último (20)

Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 

Introducción a gvNIX y Spring Roo

  • 1. gvNIX / Spring Roo. Desarrollo rápido de aplicaciones web Enrique Ruiz con Java DiSiD Technologies, S.L.
  • 2. Agenda ● Introducción ● Spring Roo ● gvNIX ● Hoja de ruta © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 3. Agenda ● Introducción ● Historia ● Motivación ● Premisas ● Tecnología ● Desarrollo de gvNIX ● Núcleo ● AppFuse 2 ● Spring Roo ● gvNIX ● Hoja de ruta © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 4. Introducción Entorno de trabajo Java para la CIT productivo y flexible, sin comprometer la calidad © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 5. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 6. Motivación Integración de procesos en un entorno tecnológico heterogéneo © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 7. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 8. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 9. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 10. Desarrollo de gvNIX Opción 1. Reinventar la rueda Opción 2. Delegar: Núcleo de gvNIX © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 11. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 12. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 13. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 14. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 15. Agenda ● Introducción ● Spring Roo ● ¿Qué es Roo? ● Filosofía ● Generación de código ● Usando Roo ● gvNIX ● Hoja de ruta © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 16. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 17. ¿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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 18. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 19. ¿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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 20. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 21. El intérprete de comandos ● Herramienta RAD para Java, extensible y tipo consola ● Herramienta sólo para desarrollo © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 22. ¿Cómo funciona Roo? © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 23. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 24. Proyecto Spring ● Spring 3.0, Spring Security 3.0, Spring MVC 3.0 ● JPA 2.0 (Hibernate), JSP 2.1 ● AspectJ, JUnit, Maven, Eclipse ... © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 25. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 26. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 27. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 28. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 29. Generación activa © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 30. Roo en acción #1 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 31. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 32. 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) © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 33. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 34. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 35. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 36. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 37. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 38. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 39. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 40. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 41. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 42. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 43. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 44. Roo en acción #2 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 45. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 46. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 47. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 48. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 49. Roo en acción #3 Integración IDE © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 50. Agenda ● Introducción ● Spring Roo ● gvNIX ● Proyecto gvNIX ● Usando gvNIX ● Hoja de ruta © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 51. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 52. 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, ... © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 53. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 54. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 55. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 56. gvNIX en acción #1 Cambiar aspecto Gestión de menús (si estable) © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 57. 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+) © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 58. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 59. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 60. gvNIX en acción #2 Control de concurrencia Gestión de excepciones © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 61. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 62. Enlace con parámetros ● "web binding setup", instalar editores por defecto ● "web binding drop", elimina editores por defecto © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 63. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 64. gvNIX en acción #3 Integrar servicios web © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 65. Agenda ● Introducción ● Spring Roo ● gvNIX ● Hoja de ruta ● gvNIX ● Roo © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 66. Hoja de ruta de gvNIX ● gvNIX 0.4 ● Gestión de perfiles de ● Mejora de add-ons proyecto: desarrollo, ● Menús: Página no visible, página sin preproducción, vista (sección), base de datos, ... ● Temas: Crear tema en proyecto, integración, ... guardar tema, tema por sección ● Gestión de módulos JAAS ● Excepciones: Soporte envío incidencias por email, diccionario en ● Servicios Web : Contract- bbdd, ... ● Enlaces parámetros: añade un editor First a los controladores ● Desarrollo ESB : Concurrencia: Punto de corte ServiceMix 4 ● alrededor_de vs Reemplazar métodos actualización, soporte concurrencia relaciones ● Integración con MOSKitt © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 67. Hoja de ruta de Roo ● Mejora de add-ons ● Roo add-ons ● Realimentación de JSPX ● Ingeniería inversa de BD ● Identificadores JPA ● Solr ● Google add-ons ● Comunidad de add-ons ● Google App Engine ● Arquitectura OSGi ● GWT ● Repositorios de paquetes OSGi (OBR) © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 68. 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 ) © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 69. 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 © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 70. ¿Preguntas? Agradecimientos José Alarcón (CoJefe proyecto gvNIX – CIT) Eugenia Arnedo (CoJefa proyecto gvNIX – CIT) Equipo gvNIX @ DiSiD Ben Alex, Spring Roo Project Lead © DiSiD TECHNOLOGIES. CCPL Attribution-Share Alike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/es/)
  • 71. DiSiD TECHNOLOGIES, S.L. C/ San Vicente Mártir, 84 – 5A 46002 – Valencia Tel. + 34 902 013 309 Fax. +34 961 198 112 info@disid.com www.disid.com