Grails – Muito além do CRUD - Artigo Java Magazine 91
O artigo apresenta diversos recursos do Grails através do desenvolvimento de uma aplicação de exemplo, ilustrando assim o potencial do framework.
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.
Closure: Uma closure é uma estrutura de código contendo um bloco de instruções que realiza uma determinada operação. Ela é mais abrangente que um método, pois sua estrutura pode ser atribuída a uma variável e também ser passada como parâmetro na chamada de outras funções. No exemplo abaixo entenderemos melhor esses conceitos. Definimos uma closure que retorna como resultado o parâmetro passado elevado ao quadrado e atribuímos esta closure à variável square. Depois definimos a função aplicaFuncaoMatematica, que recebe como parâmetro uma função e uma lista qualquer. A função aplicaFuncaoMatematica irá aplicar a função passada como parâmetro (em nosso caso, square) em cada elemento da lista.
//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]
Duck typing: É o conceito de linguagens orientadas a objetos que define que: se um objeto de uma classe X se comporta como um objeto de uma classe ou interface Y, então este objeto pode ser tratado como um objeto do tipo Y sem ter que herdar ou implementar Y. No exemplo abaixo, a classe Bicicleta, embora não seja um veículo no mundo real, se comporta como um ao possuir o método mover(). Dessa forma, Bicicleta pode ser vista como um veículo. Então, podemos criar uma lista contendo diferentes instâncias de carros e bicicletas e chamar o método mover(), independente de termos uma superclasse comum ou uma interface definida com este método.
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"
[...] continue lendo...Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo