BT
x Por favor preencha a pesquisa do InfoQ !

Grails 2.0: melhorias de usabilidade, recarga de classes e DSL para consultas

por Rick Hightower , traduzido por Eder Magalhães em 19 Dez 2011 |

O time de desenvolvimento do Grails anunciou a nova versão do framework para desenvolvimento web em Java e Groovy, o Grails 2.0. A nova versão traz diversas novidades, entre elas: melhor usabilidade na ferramenta de console; um novo mecanismo mais eficaz para recarga de classes Java/Groovy; suporte à versão mais atual do Groovy (1.8); melhorias no mecanismo de persistência, maximizando o suporte a DSL, e mais opções para ferramentas NoSQL.

A equipe do Grails trabalhou durante um ano para implementar as novas funcionalidades da versão 2.0, que são, em mais detalhes:

  1. A ferramenta de console está mais interativa. Agora conta com a funcionalidade de autocompletar com a tecla tab (tab completion) e saída de dados colorida (no console);
  2. Mecanismo de recarga de classes (class reloading) mais confiável, trazendo ao Grails a mesma sensação de dinamismo do PHP quando uma página é atualizada;
  3. Aperfeiçoamento no suporte a depuração, com melhorias em relatórios de erros e no diagnóstico de problemas, tornando a análise mais precisa;
  4. Suporte a bibliotecas atualizadas: Groovy 1.8, Spring 3.1, Hibernate 3.6 e Servlet 3.0;
  5. Um framework para gerenciar a distribuição de conteúdo estático (CSS, JavaScript etc). Com isso, caso uma biblioteca JavaScript seja utilizada por vários plugins diferentes do Grails na mesma página, o framework não inclui esse conteúdo várias vezes.
  6. Novas APIs para geração de links e renderização de páginas;
  7. Novas funcionalidades do GORM: critérios detached, consultas where, múltiplos data sources, mais alternativas para NoSQL e melhorias no suporte a DSLs;
  8. Testes unitários podem ser executados com Spock, JUnit ou TestNG;
  9. Novo plugin para migrar bases de dados;
  10. Melhorias no mecanismo de engenharia reversa para bases de dados.

O InfoQ teve a chance de conversar com Peter Ledbrook, da SpringSource, importante evangelista Grails, atuando com a tecnologia desde o início de 2006, quando o framework ainda era chamado de Groovy on Rails.

InfoQ: Quais são as principais mudanças dessa última versão?

A primeira que se vai notar é a nova ferramenta de console interativa. Já existe um screencast que demonstra como a ferramenta funciona. Basicamente implementamos a funcionalidade de autocompletar, um histórico com as últimas instruções executadas, suporte a realce de sintaxe e mais performance na execução dos comandos. Outro benefício é o mecanismo para recarregar classes, agora feito por um agente da máquina virtual. A recarga de classes se tornou muito mais confiável; os usuários anteriormente precisam reiniciar o container de servlets com frequência; agora isso deve mudar.

Peter ainda mencionou a flexibilidade do Grails em relação ao uso de frameworks para testes unitários como JUnit, Spock, TestNG e outros. Outra novidade é o emulador do GORM para testes unitários, que simula o acesso a base de dados sem efetivamente utilizar uma base.

InfoQ: Qual é o suporte do Grails para cloud, especificamente nos ambientes Cloud Foundry, Amazon EC2 e Google App Engine?

Não existe suporte nativo do Grails para cloud, mas através de plugins é possível adicionar esse suporte. O Cloud Foundry, por exemplo, tem uma ferramenta VMC para implantação, mas temos um plugin que faz quase tudo que essa ferramenta faz, com a vantagem de garantir a replicação dados entre o ambiente de desenvolvimento e o Cloud Foundry.

Quanto ao Amazon Web Services (AWS), Peter mencionou que existem plugins disponíveis para mensageria, storage e outros serviços da Amazon. Sobre o ambiente em cloud do Google, existe um plugin do Grails para deploy no GAE; mas são necessários alguns ajustes na camada de persistência, espeficicamente no GORM, com a implementação JPA utilizada pelo Google. Atualmente o adaptador do GORM suporta JPA 1.0; é necessário um trabalho de atualização para JPA 2.0.

InfoQ: Quais são as mudanças para o GORM?

Várias melhorias foram implementadas, uma das mais perceptíveis é a possibilidade de utilizar o GORM com vários data stores, incluindo data stores para NoSQL. Lançamos versões recentes dos plugins para MongoDB e Redis, e existem outros em desenvolvimento. Os desenvolvedores podem acessá-los através de uma API padrão.

Também implementamos uma nova sintaxe para consultas; ela pode assumir o lugar dos finders (geradores de consultas) dinâmicos e a API de critérios. Chamamos essa funcionalidade de where queries. Ela é útil para os desenvolvedores utilizarem os operadores lógicos do Java/Groovy na elaboração da clausula where.

A funcionalidade where para SQL/Java/Groovy adotada pelo Grails parece uma DSL customizada. O InfoQ questionou como isso foi implementado. Para resumir, esse mecanismo uitiliza o Groovy AST (Abstract Syntax Tree), um mecanismo que provê a capacidade de metaprogramação a uma linguagem compilada. Ele permite que consultas sejam construídas através de uma DSL (linguagem de domínio específico), tirando proveito da checagem de tipos e de validações realizadas pelo compilador.

InfoQ: O GORM é um projeto independente? Pode ser utilizado sem Grails?

Sim e não. Atualmente boa parte do GORM é implementado em um conjunto de projetos para mapeamento de dados em Grails, que são basicamente construídos sobre o Spring Data. Normalmente quando as pessoas falam sobre utilizar o GORM sem Grails, estão se referindo ao GORM com Hibernate. Nesse caso algum trabalho extra será necessário. A integração do GORM com Hibernate é realizada através de código Grails, mas é possível utilizar o GORM integrado ao MongoDB sem utilizar Grails.

InfoQ: Como é feita a atualização de um aplicativo antigo para Grails 2.0?

Para vários projetos é necessário apenas executar o comando update na ferramenta de console. De qualquer forma, todas as alterações e ajustes para lidar com projetos antigos estão sendo documentadas para orientar o desenvolvedor. Para utilizar o novo mecanismo de testes unitários, o trabalho é um pouco maior; o desenvolvedor precisa gerar novos testes.

Foi realizado um trabalho importante para garantir a atualização dos principais plugins para o Grails 2.0. Mas ainda existem vários que precisam ser atualizados; vamos tentar trabalhar em conjunto com os autores desses plugins para promover a atualização para a versão 2.0.

InfoQ: Como está indo a adoção ao Grails; você percebe uma adoção cada vez maior?

Definitivamente. O volume da lista de discussão está crescendo constantemente. As pessoas a cada dia falam mais sobre Grails; é possível acompanhar isso no Twitter por exemplo. Uma coisa interessante que tenho visto são pessoas vindo de PHP para Grails. Isso nos ajudou a mudar nossa perspectiva de que Grails não é apenas para desenvolvedores Java, mas também para os de outras plataformas.

InfoQ: O que você acha de projetos semelhantes à proposta do Grails como Roo, Rails e o framework Play?

O Rails sempre teve uma forte influência sobre o Grails desde o início. Não estou certo se há algo recente, porém. Por exemplo, implementamos o mecanismo para carregar conteúdo estático de forma otimizada; logo depois o pessoal do Rails implementou a funcionalidade parecida.

De qualquer forma não somos avessos a adotar boas ideias. Certamente a console iterativa do Spring Roo nos influenciou, mostrando os benefícios dessas funcionalidades em projetos Java. Tentamos ficar atentos aos outros frameworks, mas isso é difícil. É provável que usuários solicitem mudanças a partir de ideias de outros frameworks, mas nem sempre conhecemos as outras alternativas.

Para os desenvolvedores interessados no Grails 2.0, foi disponibilizado um guia com as principais novidades e a documentação de referência atualizada para a versão 2.0. Já está disponível o download do Grails 2.0.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

Percebemos que você está utilizando um bloqueador de propagandas

Nós entendemos porquê utilizar um bloqueador de propagandas. No entanto, nós precisamos da sua ajuda para manter o InfoQ gratuito. O InfoQ não compartilhará seus dados com nenhum terceiro sem que você autorize. Procuramos trabalhar com anúncios de empresas e produtos que sejam relevantes para nossos leitores. Por favor, considere adicionar o InfoQ como uma exceção no seu bloqueador de propagandas.