Spring Roo, desenvolvemento web áxil e sinxelo 100% Java

Xa non sorprende ver cada día un novo framework para desenvolvemento web áxil empregando técnicas de andamiaxe (scaffolding), modelado Obxecto-Relacional, sistema de plugins, integración coa nube, ... todo o que vén sendo un Full Stack Web Framework. Dende o "boom" Ruby on Rails foron moitos os desenvolvedores que implementaron o seu stack empregando ferramentas de consola para automatizar a creación de código (CakePHP, symfony, Zend_Tool, django, Grails, ...)

No mundo "puramente" Java, co cal quito desta afirmación Grails (xa que é linguaxe Groovy), parece que son máis reticentes a isto das ferramentas para automatización de código e os desenvolvedores prefiren perder tempo en interminables ficheiros de configuración XML, véxase a configuración dun proxecto Struts.

Non deixa de ser certo que linguaxes como Ruby, Python ou PHP, son máis flexibles e permiten a implementación destas funcionalidades dun xeito máis simple e directo mediante metaprogramación ou polo simple feito de xerar un ficheiro de texto co código a interpretar.

PERO é aquí cando a xente de SpringSource decidiu incrementar a productividade dos desenvolvedores creando Spring Roo. Esta ferramenta facilita o acceso a todas as principais e máis importantes tecnoloxías Java do momento, para crear aplicacións empresarias sen perder en rendemento. Facendo uso da consola que proporciona roo podemos crear a estructura do proxecto, as entidades JPA, os controladores e as vistas en Spring MVC, a interface en GWT, as buscas con Solr, fluxos con Spring Web Flow, desenvolver os nosos propios «addons», ... e finalmente paquetizar a nosa aplicación nun ficheiro WAR para posteriormente despregalo nun contedor web.

Características

A continuación móstrase un listado das tecnoloxías das que os proxectos en Roo poden tomar vantaxe:

  • 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

O proceso de instalación é moi sinxelo. Supoñemos que temos instalado no sistema o JDK de Java, Maven e as variables de contorno están ben declaradas. Basta descargar o software da páxina de SpringSource e descomprimilo nunha ruta a nosa eleción (ROO_HOME).

Logo hai que crear unha ligazón simbólica a $ROO_HOME/bin/roo.sh (por exemplo: sudo ln -s ~/spring-roo-1.x.x/bin/roo.sh /usr/bin/roo)

Proxecto de exemplo

Imos crear o proxecto de exemplo dispoñible na documentación da web. Dende unha consola executamos o seguinte:

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

 

Unha cousa que me gustou moito foi o comando hint e as axudas que devolve a consola de roo ao empregar o tabulador. É posible crear unha aplicación con roo sen ter documentación e executando "hint" a cada paso para que nos suxira o seguinte comando a executar.

Para lanzar o aplicativo é posible executalo por un tomcat ou lanzar o cliente GWT. Neste caso ao executar na consola de Spring Roo o comando "gwt setup" executaremos:

mvn gwt:run


Na primeira execución, Maven xestionará todas as dependencias necesarias para a execución, descargará por nós todo o software necesario dos repositorios (jars para GWT, Tomcat, Jetty, JUnit), e executará a parte servidora da aplicación.

spring-roo-02

OLLO! a primeira vez que lancemos o Firefox ao premer no botón do "Launch Default Browser" do GWT Code Server instalarase o "Google Web Toolkit Developer plugin for Firefox".

spring-roo-01
Pantallazo de Firefox ao pechar o Modo desenvolvemento 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?

Outras referencias

Quero rematar cunha alusión a outros framework Java para desenvolvemento web que me chamaron a atención neste último ano e que quizais sexan o que estás buscando:

  • Struts 2, un moi bo exemplo de implementación do patrón FrontController. Este framework non impón a utilización dunha API para traballar co modelo pero conta con "interceptors" para traballar con Spring e Hibernate (entre outros).
  • Vaadin, un framework para a creación de aplicacións RIA. Empregando código Java é posible crear unha interface web rica con comunicación co servidor. Este framework conta con integración para traballar con GWT.
  • Zkoss, un framework que explota a funcionalidade das taglibs implementando unha nova linguaxe que permite a creación de interfaces RIA moi potentes e cunha sintáxis sinxela.
Última actualización 2012-08-16
12:57 AM (Europe/Madrid)
Data de creación 2010-12-14
8:09 AM (Europe/Madrid)
Spring Roo desenvolvemento áxil con Java de aplicacións web empregando Spring, spring mvc, jpa
java spring

Relacionados