DevMedia
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Este é um post disponível para assinantes MVP
###
Java Magazine 91 - Índice

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.

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você poderia comentar o que não lhe agradou?

Confirmo meu voto negativo
Grails – Muito além do CRUD
Utilizando Grails no desenvolvimento de aplicações web

Aprenda com um exemplo prático a desenvolver aplicações web com alta produtividade utilizando esse framework que vai muito além do CRUD


De que se trata o artigo:
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.

 
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:
- 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;
- Configure o JDK em Window > Preferences > Java > Installed JREs para apontar para o JDK e não para um JRE (vem por default);
-  Acesse a opção de menu Help > Dashboard e verifique se aparecem os Feeds, pois indica que a configuração de internet está funcionando;
-  Ainda na tela de Dashboard, vá na aba Extensions e selecione as opções Grails e Groovy e depois clique em Install;
- Configure o GRAILS_HOME em Window > Preferences > Groovy > Grails apontando para o diretório de instalação do Grails;
- 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.
"

A exibição deste artigo foi interrompida

Este post está disponível para assinantes MVP.



é Bacharel em Ciência da Computação pela Universidade Federal de Pernambuco. Possui a certificação SCJP. Desenvolve soluções em Java desde 2000 e atualmente trabalha na TI da Petrobras com aplicações voltadas para exploração e pro [...]

O que você achou deste post?
Publicidade
Serviços

Mais posts