Atenção: esse artigo tem um vídeo complementar. Clique e assista!
O artigo apresenta diversos recursos do Grails através do desenvolvimento de uma aplicação de exemplo, ilustrando assim o potencial do framework.
Para que serve:
Este artigo serve para demonstrar a implementação de diversas funcionalidades de uma aplicação web, realizada de maneira simples e produtiva utilizando o framework Grails.
Em que situação o tema é útil:
O framework Grails provê um ambiente já pré-configurado e integrado, permitindo ao desenvolvedor não perder tempo com configurações iniciais. Além disso, oferece diversos recursos que são comumente utilizados nas aplicações, de forma ágil e fácil, como a geração de CRUDs, acesso a dados, configuração de logs, filtros de segurança, Ajax etc.
Resumo DevMan:
O Grails é um framework MVC que utiliza a linguagem dinâmica Groovy e que roda sobre a máquina virtual Java (JVM). Sua arquitetura foi construída em cima de frameworks consolidados de mercado, como o Hibernate, Spring, Log4J e Sitemesh.
Além do CRUD, que é gerado facilmente pelo framework, outros recursos habitualmente usados em aplicações web são disponibilizados por este de forma bastante simples e produtiva, tais como criação de filtros de pesquisa, segurança, criação de taglibs, Ajax, gráficos e relatórios. Dessa forma o desenvolvedor pode manter o foco no domínio da aplicação, deixando de gastar tempo com arquiteturas complexas e questões de infraestrutura.
O desenvolvimento de aplicações web utilizando a plataforma Java EE tem crescido demasiadamente nos últimos anos, e para atender a essa demanda são oferecidas diversas opções de frameworks e bibliotecas. Neste contexto, a arquitetura proposta pela plataforma Java para aplicações web é bastante rica, porém muito complexa, dado que foi construída para atender a diferentes situações e propósitos.
Essa complexidade, aliada ao leque enorme de opções de frameworks, trazem alguns problemas à plataforma Java que a tornam pouco produtiva comparada a outras tecnologias web. Seguem alguns dos problemas percebidos pelo mercado na prática:
• Leva-se muito tempo para configurar uma aplicação e deixá-la pronta para iniciar o desenvolvimento. Para isso, é necessário configurar frameworks, bibliotecas externas, arquivos XML, properties, etc.;
• O processo de integrar os diversos frameworks na maioria das vezes não é trivial, pois existem versões que são incompatíveis umas com as outras;
• Algumas funcionalidades, que existem em qualquer aplicação, são implementadas toda vez que uma nova aplicação é criada. Dentre estas podemos citar: desenvolvimento de CRUDs, configuração de logs, internacionalização, acesso a dados, relatórios, etc.;
• Com certa frequência, muitos softwares são construídos com arquiteturas mais complexas do que realmente necessitam.
Para resolver tais problemas, surgiram no mercado frameworks como Ruby on Rails e Grails (Groovy on Rails). Ambos possuem os mesmos princípios, entretanto o diferencial do Grails é ser executado em cima da máquina virtual Java (JVM), aproveitando toda a maturidade e robustez da plataforma. Seguem suas principais características:
• Utiliza os conceitos:
o Convention over Configuration: Convenção ao invés de configuração significa obter mais produtividade através de convenções previamente definidas, aumentando a padronização e evitando configurações trabalhosas de XML, arquivos de propriedades, logs etc.;
o Don't Repeat Yourself: O framework já oferece tarefas padrões do desenvolvimento de aplicações, como a geração de CRUDs, log pré-configurado etc.;
• Utiliza a linguagem dinâmica Groovy, que estende a linguagem Java oferecendo suporte a closures, duck typing, facilidade na manipulação de listas, hashes, tipos primitivos, invocação de métodos dinamicamente etc.;
• Fornece um ambiente de desenvolvimento completo pré-configurado e integrado, permitindo o foco no domínio da aplicação;
• Sua arquitetura foi construída em cima de frameworks consolidados no mercado, tais como Hibernate, Spring, Sitemesh e Log4j.
A proposta desse artigo não é ensinar o básico do framework, e sim mostrar, através de um exemplo prático, a produtividade do Grails para outros aspectos comuns no desenvolvimento de uma aplicação. Filtros de busca, segurança, Ajax, gráficos e relatórios são alguns desses aspectos abordados pelo artigo. Os artigos Grails: do Groovy à Web – Partes 1 a 5 (Edições 75-79 da Java Magazine) são uma excelente opção para iniciar o aprendizado com o framework.
//definindo a closure square
def square = {it*it}
//definindo a função matemática
def aplicaFuncaoMatematica = {funcao, lista ->
def retorno = []
for (obj in lista) {
retorno += funcao(obj)
}
return retorno
}
// imprimindo o resultado na tela
println aplicaFuncaoMatematica(square, [1, 2, 3, 4]) // imprimirá [1, 4, 9, 16]
class Carro {
public void mover() {
println 'O carro se nove'
}
}
class Bicicleta {
public void mover() {
println 'A bicicleta se nove'
}
}
def veiculos = [new Carro(), new Bicicleta()]
for (v in veiculos) {
v.mover()
}
A aplicação locacar – uma locadora de veículos
A aplicação que iremos utilizar como base para todos os nossos exemplos é uma locadora de veículos, que batizamos de “locacar”. Seu objetivo é sistematizar as operações de locação de veículos realizadas por diferentes usuários. A Figura 1 mostra a definição do domínio do problema.
Figura 1. Diagrama de classes de domínio da aplicação locacar.
Configurando o ambiente
Antes de iniciar o desenvolvimento da aplicação propriamente dita com o Grails, vamos explicar como instalar o framework, uma ferramenta de suporte e como configurá-la. Também vamos mostrar como criar a aplicação locacar e fazer alguns ajustes iniciais.
Instalando o Grails
A instalação do framework Grails é bastante simples. Segue uma descrição detalhada de como instalar e configurar o ambiente no sistema operacional Windows:
• Baixe a última versão do Grails em www.grails.org/Download e descompacte-a em um diretório;
• Configure a variável de ambiente JAVA_HOME apontando para o diretório raiz do JDK. Ex: D:\Documents and Settings\CYEW\Meus documentos\samuel\java\jdk1.6.0_14;
• Configure a variável de ambiente GRAILS_HOME apontando para o diretório raiz de instalação do Grails. Ex: D:\Documents and Settings\CYEW\Meus documentos\samuel\java\grails\grails-1.3.4;
• Configure a variável de ambiente PATH para adicionar as variáveis JAVA_HOME e GRAILS_HOME;
• Execute grails help na linha de comando e verifique se é exibida uma lista com os comandos disponíveis pelo Grails.
Instalando a ferramenta
A ferramenta que iremos utilizar é a STS, uma IDE da Spring Source baseada na plataforma Eclipse. Segue um passo-a-passo para a sua instalação:
• Baixe a última versão do STS em www.springsource.com/products/springsource-tool-suite-download e descompacte-a em um diretório;
• Execute o programa [DIR-INSTALACAO]\springsource\sts-2.3.2.RELEASE\STS.exe e ao iniciar:
o Configure o proxy, caso necessário, em Window > Preferences > General > Network Perspectives. Selecione a opção Manual e informe HOST, usuário e senha do seu proxy;
o Configure o JDK em Window > Preferences > Java > Installed JREs para apontar para o JDK e não para um JRE (vem por default);
o Acesse a opção de menu Help > Dashboard e verifique se aparecem os Feeds, pois indica que a configuração de internet está funcionando;
o Ainda na tela de Dashboard, vá na aba Extensions e selecione as opções Grails e Groovy e depois clique em Install;
o Configure o GRAILS_HOME em Window > Preferences > Groovy > Grails apontando para o diretório de instalação do Grails;
o Acesse a opção de menu File > New > Grails Project e verifique se não é exibida alguma mensagem de erro. Caso esteja tudo correto, significa que o ambiente está devidamente configurado para a criação de projetos com o Grails.
Criando a aplicação
Para criar o projeto locacar basta acessar o menu File > New > Grails Project e informar o nome do projeto. A IDE irá executar internamente o comando grails create-app locacar. Feito isso, a ferramenta irá exibir a estrutura de diretórios da Figura 2.
Figura 2. Estrutura de diretórios da aplicação locacar.
A estrutura de diretórios convencionada pelo Grails facilita a padronização de aplicações, pois existe uma pasta específica para cada tipo de recurso, como classes Groovy, classes Java, classes de domínio, controladores etc. Segue uma descrição sucinta destas:
• src/java ...