2. Objetivo
“Apresentar a framework Grails, como uma
evolução dentro da plataforma Java, que
eleva a produtividade com o menor risco, e
está pronta para a computação nas nuvens”
4. Apresentação
Eteg Tecnologia Ltda.
Sistemas Java e .Net
Capacitação / treinamento
MPS.BR Nível F
Wanderson Santos
Arquiteto de Sistemas e Instrutor @ Eteg
Ampla experiência com plataformas Java, .NET e PHP
Entusiasta das práticas ágeis para desenvolvimento
5. Plataforma Java
Plataforma = Fundação
Programamos com linguagem Java na plataforma
Java
Linguagem Java (class, for, if, get/set...)
A linguagem exige muita repetição (ex. get/set)
Plataforma Java (JVM, JAR/libs, WAR..)
A plataforma exige muita configuração
6. Software sempre
“Revoluções por minuto”
A todo momento surgem...
Novas linguagens, mais avançadas que as
anteriores
Novas plataformas, mais avançadas que as
anteriores
7. Como lidar com este fato?
Ignorar: não mudar nada
“Vamos manter nossos sistemas em VB 6”
“Eu ainda não tive problemas com JSP/JDBC”
Resultado
Perda de produtividade para o mercado
Escassez de talentos
Qualidade x Produtividade
8. Como lidar com este fato?
Revolução: mudar tudo
“Migrar nossos sistemas em Delphi para .NET”
“Abandonar o Java para trilhar no Ruby On Rails”
Resultado
Perda de ativos de reuso
Reescrita de todas as bibliotecas (arrg!)
Grandes arquiteturas de integração
9. Como lidar com este fato?
Evolução: mudar o que não está bom
“Vamos manter a plataforma Java e migrar para
linguagem Groovy”
Resultado
Mantém ativos de reuso (mesma plataforma)
Migração iterativa
Novo módulo ou sistemas será mais produtivo
10. Veredito
O problema não é aprender....
Desenvolvedores querem sempre melhorar sua
produtividade, aprender coisas novas
Tendência: programador poliglota
Uma linguagem para cada objetivo (DSLs). Ex.: SQL
O problema é perder o que foi feito!
“Todas as bibliotecas em Delphi tiveram que ser
convertidas para Java.”
11. O que é Groovy?
“Linguagem Java 2.0”
Sintaxe reduzida e poder funcional
Linguagem padrão Java (JSR-241)
Inclui recursos encontrados no Python,
Ruby e Smalltalk, mantendo sintaxe Java
Inferência de tipos (def), closures, etc.
JDK padrão turbinada (Groovy JDK)
12. Classe Java
public class Usuario {
private String nome;
private Date dataNascimento;
public String getNome() {
return nome;
}
(...não cabe no slide! ☺)
13. Classe Groovy ☺
class Usuario {
String nome
Date dataNascimento
}
Obs.: Aceita todas a sintaxe da linguagem Java!
14. Coleção em Java
List frutas = new ArrayList();
frutas.add(‘pera’);
frutas.add(‘uva’);
frutas.add(‘maca’);
for (String fruta : frutas) {
System.out.println(fruta);
}
15. Coleção em Groovy ☺
def frutas = [‘pera’,’uva’,’maca’]
frutas.each {
println it
}
//Fui embora mais cedo!
16. I Love Groovy ☺
println "${usuario.nome}, ${usuario.idade}”
> João Ribeiro, 35
def hoje = new Date()
println hoje.format(‘MMM/yy’)
> Set/2009
Tem muito, mas muito mais!
17. Arquitetura Java
Configurar e manter uma boa arquitetura
demanda tempo e muito conhecimento
Muitas bibliotecas e frameworks
Muitas camadas
Escravos de Jó
Muita configuração
XML, XML, XML...
18. Grails – O cálice sagrado
Full-Stack Framework
Groovy + Spring + Hibernate
“Groovy On Rails”
A disruptividade do Rails dentro da conhecida
Plataforma Java
Guiada por princípios
Convenção sob Configuração
“Não se repita” (DRY)
19. Arquitetura Grails
Utiliza camadas convencionais
View
Controller
Service*
Domain
Cada camada tem uma pasta específica
Só utiliza camada Service para controlar
transação de persistência.
20. Disruptividades
Utiliza a sintaxe concisa e clara do Groovy
No XML “hell”
Configuração por convenção
Mesmo a configuração necessária não usa XML
No DAO
Métodos para persistência são injetados nas
entidades (ActiveRecord Pattern)
23. Disruptividades
Abstrai as frameworks padrão de mercado
Meta-plataforma
Contato “zero” com Hibernate e Spring
Se precisar, pode contar com eles!
Curva de aprendizado branda
Consideravelmente menor do que outras
soluções na plataforma Java
Qualidade com produtividade!
26. Grails no mercado
Mantida pela Spring Source
Ávida comunidade (www.grails.org)
Documentação excepcional
Guia do Usuário (passo-a-passo)
Guia de Referência
http://www.grailsbrasil.com/
27. Ferramentas para Grails
Baseado em linha de comando (rails-like)
Muitos programam sem IDE
Estrutura de projeto com 1 comando
grails create-app infocon
Excelente suporte no IntelliJ IDEA 8
Suporte completo na Spring IDE (Eclipse)
em Outubro/09
28. Grails Plugins
Extensibilidade da framework
Similar ao conceito de JARs, porém orientadas as
convenções do Grails
grails install-plugin auditable
Tem plugin pra tudo! ☺
Autenticação, Busca Avançada, Componentes
Visuais, Auditoria e vários outros...
29. Por que Grails?
Mantem investimento na plataforma Java
Bibliotecas JARs, Tomcat, JBoss, JVM, etc.
Traz uma nova forma de pensar uma
aplicação (herança do Rails)
Remove gorduras extras da linguagem Java e
suas respectivas configurações
Muito prático e produtivo
Thanks Groovy! ☺
30. Grails é verde!
Roda nativamente na Cloud Foundry
Basta trocar o “DataSource”
Cloud Foundry
Plataforma aberta baseada no Cloud Tools
Abstrai plataformas existentes (Amazon EC2)
Eteg já escala em máquinas “virtualizadas”
A conhecida robustez da plataforma Java
31. Declarações
LinkedIn (250 funcionários)
“For our usage, Grails is a lot more productive
than current crop of mainstream Java Web-App
Frameworks” [in Grails At LinkedIn]
Eteg Tecnologia
“Grails simplificou nossa curva de aprendizado e
reduziu a complexidade de implementação de
nossos sistemas”
“Tivemos uma considerável melhoria de
produtividade, reduzindo o total de horas
consumidas por projeto”
32. Por onde começar?
Grails User Guide (www.grails.org)
IBM “Mastering Grails”
Diversos livros no mercado
Cadastrar-se em fóruns e listas de
discussão
Muitas referências na Web!