Dominando o Spring Roo - Java Magazine 79
Neste artigo veremos qual é a nova ferramenta de desenvolvimento criada pela SpringSource, o Spring Roo. Veremos também como ele funciona, quais suas principais características e, por fim, demonstraremos sua utilização com um exemplo prático.
Este Artigo faz parte da Revista Java Magazine 79 Ver Revista
Artigos Java Dominando o Spring Roo - Java Magazine 79
Depois da criação do Ruby on Rails e de diversos frameworks baseados em linguagens dinâmicas, muitos desenvolvedores começaram a se questionar em como pode ser trabalhoso desenvolver aplicações com Java.
O Roo veio com o propósito de tornar o processo de desenvolvimento mais ágil e sem a necessidade de aprender uma nova linguagem de programação.
De acordo com o líder do projeto Ben Alex, a missão do Spring Roo é melhorar a produtividade do desenvolvimento de aplicações Java sem comprometer a integridade do modelo ou a flexibilidade. Além de ser um ótimo gerador de código, o Roo também auxilia o desenvolvedor a criar aplicações de forma padronizada e rápida, poupando tempo e evitando desperdício de esforço.
Conhecendo o Spring Roo:
Neste artigo você vai entender o que é o Spring Roo, sua arquitetura, como ele funciona para proporcionar mais agilidade no desenvolvimento, suas principais características e funcionalidades, e como utilizá-lo para desenvolver aplicativos de forma mais rápida e sem perder qualidade.
O exemplo prático desse artigo, embora simples, utilizará frameworks como Spring IOC/DI e MVC, Hibernate, Tiles e Bean Validation, envolverá também testes de integração baseados em JUnit, internacionalização, rotinas em AspectJ e controle de dependências via Maven. Vale ressaltar que a utilização da maioria destes frameworks/ferramentas acontecerá de forma transparente para o desenvolvedor, e não se espante ao ver que o exemplo será gerado com a execução de aproximadamente 15 linhas.
Todo desenvolvedor Java já deve ter visto diversos frameworks modernos que oferecem grande agilidade no processo de desenvolvimento de software, mas no geral todos eles são baseados em linguagens dinâmicas, o que de certa forma acaba se tornando um ponto negativo, pois é preciso dispor de tempo para aprender uma nova linguagem e entender novos conceitos.
O Spring Roo chegou como uma nova alternativa, mas não como um framework e sim como uma ferramenta de desenvolvimento que gera código Java utilizando frameworks já consagrados no mercado de desenvolvimento de software.
O que é o Spring Roo?
Spring Roo é uma ferramenta open source lançada pela SpringSource para desenvolvimento ágil de aplicativos web que segue um estilo parecido com o do famoso Ruby on Rails. Ele permite a construção de aplicações de forma rápida evitando que o desenvolvedor precise aprender uma nova linguagem de programação, pois é 100% Java.
Embora a utilização do Roo seja feita através de comandos via shell, nada impede que utilizemos uma IDE como Eclipse ou NetBeans, o que é um ponto positivo pois assim a aplicação não fica totalmente dependente do Roo.
A qualquer momento podemos abandonar a utilização do Roo Shell e continuar o desenvolvimento manualmente pela IDE preferida. Além do Roo Shell, para usuários do Eclipse existe a opção de utilizar o SpringSource Tool Suite (STS) na forma de plugin ou baixar uma versão personalizada do Eclipse (all-in-one) com todos os plugins inclusos.
O STS fornece ao desenvolvedor um Roo shell integrado a IDE e muitas ferramentas para ajudar no desenvolvimento de aplicativos baseados no framework Spring. Infelizmente ainda não existe nenhum plugin semelhante para o NetBeans.
Arquitetura do Spring Roo
Para entender um pouco da arquitetura do Roo é importante compreender como funciona o mecanismo de geração de código.
O Roo funciona através da geração de declarações inter-type (inter-type declarations) do AspectJ, também conhecidas como mixins. Este modelo segue o conceito de separation of concerns, que basicamente separa o comportamento de seus objetos em pequenas partes. No caso do Roo, em arquivos do AspectJ.
Inter-type Declarations: Inter-type declarations é uma forma de permitir ao programador adicionar atributos, métodos e interfaces a uma classe utilizando aspectos.
Separation of Concerns: É uma maneira de projetar software separando suas funcionalidades distintas na menor forma possível ou em uma única responsabilidade, onde cada funcionalidade se preocupa exclusivamente com sua responsabilidade e que qualquer alteração feita em determinada funcionalidade não afete a execução das demais.
Por isso, o código mantido pelo Roo está em uma unidade de compilação diferente (arquivos .aj) do código que o desenvolvedor escreve (arquivos .java). Isto significa que o Roo pode modificar de forma incremental os arquivos (*.aj) com seu código, deixando todos os outros arquivos Java intactos.
A arquitetura do Roo possui um núcleo de serviços disponíveis conhecido como Roo Core Modules. Estes serviços fornecem um ambiente de execução integrado que é utilizado através de comandos no Roo shell (terminal de comandos do Spring Roo). Entre os serviços, podemos listar: gerenciador e monitor de arquivos, modelo de metadados, sistema de build e gerenciamento de processos.
Outro ponto interessante na arquitetura do Roo são os add-ons. Eles têm a finalidade de acrescentar novas funcionalidades ao Roo. Atualmente o Roo já traz alguns add-ons inclusos para diversas finalidades, como backup, suporte a e-mail, JPA, MVC, Java Bean, JMS, logging, segurança, testes entre outros. Além destes, existe a possibilidade de novos add-ons serem desenvolvidos por terceiros e incorporados ao Roo. Estes são conhecidos como third-party add-ons.
As aplicações web geradas com o Roo são baseadas nos padrões do Apache Maven e utilizam AspectJ para facilitar a vida do desenvolvedor, por isso não estranhe ao ver arquivos .aj criados dentro do seu projeto. Dificilmente você terá que alterar algo neles (veja a ...