Spring Roo y GWT en Google I/O

Google I/O es uno de los más importantes acontecimientos para desarrolladores que suceden cada año.

En éste foro es dónde Google y otras compañías anuncian sus aportaciones más novedosas. Uno de los protagonistas en este evento ha sido Google Web Tolkit (GWT), centrando la atención de numerosas presentaciones y sobre el que se han conocido numerosas mejoras. Muchas compañías han aprovechado para subirse al carro de GWT, y entre ellas, SpringSource ha anunciado la incorporación de GWT en su producto Spring-Roo.

Roo es la apuesta de SpringSource para crear aplicaciones web de una manera muy rápida en el mundo Java. La primera vez que tuve la oportunidad de experimentar con Roo fué en el Spring2gx de Madrid, y mi primera pregunta fué ¿porqué SpringSource desarrolla Roo si ya tiene Grails?, la respuesta es bastante simple: hay muchas empresas que todavía no están preparadas para (o no quieren) hacer una migración a Grails, unas veces por razones políticas, otras por miedo a introducir nuevas tecnologías, por rendimiento, etc.

Roo aporta en estos casos toda la potencia de las herramientas que acompañan a frameworks ágiles como Rails, Grails, etc., pero sin renunciar a la entrega de aplicaciónes puramente java.

Algunas preguntas:

  • ¿Qué es Roo?. Roo es simplemente una utilidad que se ejecuta en modo comando, y que sirve para crear automáticamente código java.
  • ¿Qué hace?. Roo permite crear no sólo un proyecto nuevo al principio sino todos los componentes del proyecto que te van haciendo falta a lo largo del desarrollo (entidades, controladores, etc), e incluso permite añadir elementos a objetos que ya se han creado (campos, seguridad, etc).
  • Cómo lo hace?.  Roo es capaz de editar y modificar los ficheros de configuración añadiendo y modificando los elementos, y crea las clases java necesarias para nuestra aplicación (que podemos modificar a nuestro antojo para añadir la lógica de negocio).
  • ¿Dónde está la magia? Está en los ficheros AspectJ que crea alrededor de nuestras clases, alguno de los cuales no debemos modificar para permitir a Roo añadir más funcionalidades. Estas clases actúan como decoradores de nuestra clase java en tiempo de compilación.
  • ¿Es reversible? Roo permite fusionar en el momento que queramos todos estos ficheros .aj, en nuestros ficheros .java y entregar una aplicación completamente java.

Un ejemplo WEB:

Vamos a crear una simple lista de contactos que nos permita añadir, modificar y eliminar amigos.

  • Instala maven y roo y pon ambos comandos en tu PATH.
  • Crea el directorio contactos y cambiaté a él
  • Ejecuta roo.sh y escribe estas órdenes:
    project --topLevelPackage com.project.contacts
    
    persistence setup --provider HIBERNATE --database HYPERSONIC_PERSISTENT
    
    database properties set --key database.url --value jdbc:hsqldb:/var/tmp/contacts.db
    
    entity  --class ~.domain.Contact
    
    field string nombre --notNull --sizeMin 1 --sizeMax 30 --class ~.domain.Contact
    
    field string apellido --notNull --sizeMin 1 --sizeMax 30 --class ~.domain.Contact
    
    field string telefono --notNull --sizeMin 1 --sizeMax 15 --class ~.domain.Contact
    
    test integration
    
    controller all --package ~.web
    
    exit
  • Ejecuta la aplicación mvn jetty:run y abre tu navegador http://localhost:8080/contacts

El mismo ejemplo en versión RIA con GWT:

  • Ejecuta roo.sh y escribe éstas órdenes:
    gwt setup
    exit
  • Ejecuta GWT en modo desarrollo: mvn gwt:run y pulsa sobre ‘Lauch Default Browser’
  • Si no tienes instalado en tu navegador el plugin de GWT para desarrollo, te preguntará para instalarlo.

Limitaciones:

  • Las nuevas funcionalidades están disponibles la versión ‘beta’ de Roo 1.1.0-M1.
  • Roo utiliza GWT 2.1.0-M1, que es también versión experimental.
  • Eso implica que hay numerosos fallos, por ejamplo el ‘scaffolding’ con entidades relacionadas falla.

Conclusión:

Aunque no habrá una versión estable de Roo+GWT hasta dentro de algunos meses, la tendencia de SpringSource es facilitar al desarrollador hacer aplicaciones web de una manera rápida.

Justamente ésta es la característica que ha hecho a muchas empresas considerar Rails, Grails u otros frameworks ignorando otros inconvenientes (rendimiento, knowhow, etc). Quién no está harto de ver presentaciones donde se defienden las bondades de estos frameworks haciendo una aplicación en 10 minutos con un par de entidades y un ‘scaffolding’.

GWT proporciona a las aplicaciones RIA numerosas ventajas: usar java en lugar de js, testeabilidad, reutilización, rendimiento, detección de errores, etc, y Spring todo un ecosistema para desarrollar aplicaciones grandes. Ahora Roo añade la facilidad de la puesta en marcha de un proyecto y la velocidad en hacer tareas que son pesadas: crear entidades, beans, tests, controladores, vistas, etc.

Manuel Carrasco Moñino

Recibe más artículos como este

Recibirás un email por cada nuevo artículo.. Acepto los términos legales

Comentarios

  1. Stanley dice:

    Buenas tardes amigo estoy comenzando con Roo y quisiera saber si mas adelante haras una aplicacion mas compleja integrando GWT para la capa UI? muchas gracias…

Escribe un comentario