vifito.eu

Web Development & Open Source

  • Aumentar el tamaño de la letra
  • Tamaño de letra predeterminado
  • Reducir el tamaño de la letra

Spring Roo, desarrollo web ágil y sencillo 100% Java

Ya no sorprende ver cada día un nuevo framework para desarrollo web ágil empleando técnicas de andamiage (scaffolding), modelado Objeto-Relacional, sistema de plugins, integración con la nube, ... todo lo que se viene llamando un Full Stack Web Framework. Desde el "boom" de Ruby on Rails fueron muchos los desarrolladores que implementaron su stack empleando herramientas de consola para automatizar la creación de código (CakePHP, symfony, Zend_Tool, django, Grails, ...)

En el mundo "puramente" Java, con lo cúal elimino de esta afirmación Grails (ya que es lenguaje Groovy), parece que eran más reticentes a esto de las herramientas para automatización de código y los desarrolladores preferían perder tiempo en interminables ficheros de configuración XML, véase la configuración de un proyecto Struts.

No deja de ser cierto que lenguajes como Ruby, Python o PHP, son más flexibles y permiten la implementación de estas funcionalidades de un modo más simple y directo (no necesariamente más eficiente) mediante metaprogramación o por el simple hecho de generar un fichero de texto con el código a interpretar.

roo_logoPERO es aquí cuando la gente de SpringSource decide incrementar la productividad de los desarrolladores java creando Spring Roo. Esta herramienta facilita el acceso a todas las principales y más importantes tecnologías Java del momento, para crear aplicaciones empresariales sin perder en rendimiento. Haciendo uso de la consola que proporciona roo podemos crear la estructura del proyecto, las entidades JPA, los controladores y las vistas en Spring MVC, la interface en GWT, las búsquedas con Solr, flujos con Spring Web Flow, desarrollar nuestros propios «addons», ... y finalmente paquetizar nuestra aplicación en un fichero WAR para posteriormente desplegarlo en un contedor web.

 

Características

A continuación se muestra un listado de las tecnologías de las que los proyectos en Roo pueden aprovecharse:

  • Adobe Flex
  • Apache ActiveMQ
  • Apache Maven
  • Apache OpenJPA
  • Apache Tiles
  • Apache Tomcat
  • AspectJ
  • AspectJ Development Tools
  • Cloud computing
  • Dojo Toolkit
  • Eclipse IDE
  • EclipseLink
  • Google Web Toolkit
  • Google App Engine
  • Hibernate
  • Java Bean Validation
  • Java Database Connectivity
  • Java Message Service
  • Java Persistence API
  • Java Transaction API
  • Java Server Pages
  • Jetty
  • JUnit
  • Log4J
  • Representational State Transfer (REST)
  • Selenium
  • OSGi add-ons
  • Solr
  • SpringSource tc Server con Insight
  • SpringSource Tool Suite
  • Integración con Spring
  • Spring Security
  • Spring Web Flow
  • URL Rewrite Filter

Instalación

El proceso de instalación es muy sencillo. Suponemos que tenemos instalado en el sistema el JDK de Java, Maven y sus correspondientes variables de entorno están bien declaradas. Basta descargar el software de la página de SpringSource y descomprimirlo en una ruta de nuestra elección (ROO_HOME).

Después hay que crear un enlace simbólico a $ROO_HOME/bin/roo.sh (por ejemplo: sudo ln -s ~/spring-roo-1.x.x/bin/roo.sh /usr/bin/roo)

Proyecto de ejemplo

Vamos a crear el proyecto de ejemplo disponible en la documentación de la web. Desde una consola ejecutamos lo siguiente:

mkdir hello
cd hello
roo
roo> hint
roo> project --topLevelPackage com.foo
roo> persistence setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY
roo> entity --class ~.Timer --testAutomatically
roo> field string --fieldName message --notNull
roo> hint controllers
roo> controller all --package ~.web
roo> selenium test --controller ~.web.TimerController
roo> gwt setup
roo> perform tests
roo> quit

 

Una cosa que me gustó mucho fue el comando hint y las ayudas que devuelve la consola de roo al emplear el tabulador. Es posible crear una aplicación con roo sin tener documentación y ejecutando "hint" en cada paso para que nos sugiera el siguiente comando a ejecutar.

La aplicación se puede executar en un tomcat o lanzar el cliente GWT. Si en la consola de Spring Roo hemos ejecutado el comando "gwt setup" entonces podemos lanzar GWT:

mvn gwt:run


En la primera ejecución, Maven gestionará todas las dependencias necesarias para la ejecución, descargará por nosotros todo el software necesario de los repositorios (jars para GWT, Tomcat, Jetty, JUnit), y lanzará la parte servidora de la aplicación. PACIENCIA! Wink

 

spring-roo-02



¡OJO! la primera vez que lancemos Firefox al pulsar el botón de "Launch Default Browser" del GWT Code Server se nos pedirá confirmación para instalar  "Google Web Toolkit Developer plugin for Firefox".

 

spring-roo-01
Captura de pantalla de Firefox al cerrar el Modo desarrollo de GWT



Spring Roo inda non está moi maduro pero se inda tes dúbidas podes consultar o apartado da web: Por qué empregar Spring Roo?

Otras referencias

Quiero finalizar con una alusión a otros framework Java para desarrollo web que me llamaron la atención este último año y que quizás sean lo que estáis buscando:

  • Struts 2, un buen ejemplo de implementación del patrón FrontController. Este framework no impone la utilización de una API para trabajar con el modelo pero cuenta con "interceptors" para trabajar con Spring e Hibernate (entre otros).
  • Vaadin, un framework para la creación de aplicaciones RIA. Empreando código Java es posible crear una interfaz web rica con comunicación con el servidor. Este framework cuenta con integración para trabajar con GWT.
  • Zkoss, un framework que explota la funcionalidad de las taglibs implementando un nuevo lenguaje que permite la creación de interfaces RIA muy potentes y con una sintáxis sencilla.