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.
A continuación móstrase un listado das tecnoloxías das que os proxectos en Roo poden tomar vantaxe:
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)
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.
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".
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?
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: