SlideShare uma empresa Scribd logo
Produtividade em Java
Com Grails
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”
Introdução

 Plataformas?
   Java, .NET, PHP, Ruby, Python...
 Frameworks?
   Hibernate/JPA, Spring, “EJB”...
 Frameworks Web?
   Java: Tapestry 5, Wicket, JSF, Struts...
   Rails, Django, WebForms/MVC...
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
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
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
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
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
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
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.”
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)
Classe Java

public class Usuario {
  private String nome;
  private Date dataNascimento;
  public String getNome() {
      return nome;
 }
 (...não cabe no slide! ☺)
Classe Groovy ☺

class Usuario {
  String nome
  Date dataNascimento
}




          Obs.: Aceita todas a sintaxe da linguagem Java!
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);
}
Coleção em Groovy ☺

def frutas = [‘pera’,’uva’,’maca’]
frutas.each {
  println it
}

//Fui embora mais cedo!
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!
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...
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)
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.
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)
Exemplo: Configuração

environments {
    development {
       dataSource {
            username = "sa"
            password = ""
            dbCreate = "create-drop"
            url = "jdbc:mysql://dbserver"
...
Exemplo: Persistência

def wans = new Usuario()
wans.nome = ‘Wanderson Santos’
wans.dataNascimento =
  Date.parse(‘dd/MM/yyyy’,’01/11/1981’)
wans.dataCadastro = new Date()
wans.save() //fui!
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!
Exemplo: Consultas

def silvas = Usuario.withCriteria {
  def hoje = new Date()
  between(‘dataCadastro’, hoje-7, hoje)
  like(‘nome’, ‘%Silva%')
  maxResults(5)
  order(‘dataAniversario’, ‘desc’)
}
Exemplo: Visão

<body>
  Olá ${params.mundo} !
  <g:each in="${[1,2,3]}" var=“numero">
     <p>Número ${numero}</p>
  </g:each>
</body>
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/
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
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...
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! ☺
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
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”
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!
Perguntas?
Obrigado!

Visite-nos: www.eteg.com.br
Email: wanderson@eteg.com.br
Twitter: @wanswins
Referências

 Site oficial: http://www.grails.org
 Grails Introduction
 http://www.slideshare.net/glaforge/grails-
 introduction-ijtc-2007-presentation
 Grails At LinkedIn
 http://www.slideshare.net/linkedin/grails-at-
 linked

Mais conteúdo relacionado

PPTX
Java virtual machine quantas linguas fala a jvm2
Josenaldo de Oliveira Matos Filho
 
PPTX
Gestão automática de configuração usando puppet
Daniel Sobral
 
ODP
(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...
Samuel Sampaio
 
PPTX
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Alexandre Tarifa
 
PDF
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Paulino Michelazzo
 
PDF
Trabalhando com Módulos no Puppet
Jose Augusto Carvalho
 
KEY
Oficina Puppet - Aprenda a Gerenciar Configurações
Jose Augusto Carvalho
 
PDF
Oficina de infraestrutura como código (apresentando o Puppet)
Jose Augusto Carvalho
 
Java virtual machine quantas linguas fala a jvm2
Josenaldo de Oliveira Matos Filho
 
Gestão automática de configuração usando puppet
Daniel Sobral
 
(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...
Samuel Sampaio
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Alexandre Tarifa
 
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Paulino Michelazzo
 
Trabalhando com Módulos no Puppet
Jose Augusto Carvalho
 
Oficina Puppet - Aprenda a Gerenciar Configurações
Jose Augusto Carvalho
 
Oficina de infraestrutura como código (apresentando o Puppet)
Jose Augusto Carvalho
 

Mais procurados (20)

PPTX
Maven em 10 minutos
Rodrigo Branas
 
PDF
Django - A sua cápsula de soluções web em python
Paula Grangeiro
 
PDF
JavaFX 1.2
Raphael Marques
 
PDF
Joomla! do desktop ao datacenter
Paulino Michelazzo
 
PPTX
Maven 3, Sonar e Hudson
Rodrigo Branas
 
PDF
Infraestrutura como código com Puppet e Mcollective
Jose Augusto Carvalho
 
PDF
Infraestrutura ágil com Puppet - CISL
Jose Augusto Carvalho
 
PPTX
MongoDB + PHP
Ari Stopassola Junior
 
PDF
Como escolher o Framework Java para web?
Anderson Araújo
 
PDF
Tdd em django sem desculpas versao final
Adriano Petrich
 
PPTX
NodeJS - Tutorial de forma simples e pratica.
Filipe Morelli
 
PDF
Python na Web
Igor Sobreira
 
PDF
Treinamento Básico de Django
Leandro Zanuz
 
PDF
Consegi 2011: Puppet
Jose Augusto Carvalho
 
PDF
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Allyson Barros
 
PPT
55 New Things in Java 7 - Brazil
Stephen Chin
 
PPTX
Introdução ao NodeJS
Giovanni Bassi
 
PDF
Esta começando a programar para a web? Então começe com Rails
ismaelstahelin
 
PDF
Boas práticas de django
Filipe Ximenes
 
PDF
Ferramentas para infraestrutura ágil
Jose Augusto Carvalho
 
Maven em 10 minutos
Rodrigo Branas
 
Django - A sua cápsula de soluções web em python
Paula Grangeiro
 
JavaFX 1.2
Raphael Marques
 
Joomla! do desktop ao datacenter
Paulino Michelazzo
 
Maven 3, Sonar e Hudson
Rodrigo Branas
 
Infraestrutura como código com Puppet e Mcollective
Jose Augusto Carvalho
 
Infraestrutura ágil com Puppet - CISL
Jose Augusto Carvalho
 
MongoDB + PHP
Ari Stopassola Junior
 
Como escolher o Framework Java para web?
Anderson Araújo
 
Tdd em django sem desculpas versao final
Adriano Petrich
 
NodeJS - Tutorial de forma simples e pratica.
Filipe Morelli
 
Python na Web
Igor Sobreira
 
Treinamento Básico de Django
Leandro Zanuz
 
Consegi 2011: Puppet
Jose Augusto Carvalho
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Allyson Barros
 
55 New Things in Java 7 - Brazil
Stephen Chin
 
Introdução ao NodeJS
Giovanni Bassi
 
Esta começando a programar para a web? Então começe com Rails
ismaelstahelin
 
Boas práticas de django
Filipe Ximenes
 
Ferramentas para infraestrutura ágil
Jose Augusto Carvalho
 
Anúncio

Destaque (9)

ODP
Groovy grails
Lucas Aquiles
 
PDF
Groovy & grails
Arian Pasquali
 
ODP
Grails: O Java em Alta Produtividade
Cleórbete Santos
 
PDF
JavaEE nos trilhos
Gilliard Cordeiro
 
PPT
Rapida apresentacao sobre o Grails
Diego Cavalcanti
 
PDF
Oficina groovy grails - infoway
Lucas Aquiles
 
PPT
Grails, o que isso quer dizer?
Gilliard Cordeiro
 
PPTX
Desenvolvimento Ágil com Grails.
Alex Guido
 
PDF
Curso de Grails
Bruno Nascimento
 
Groovy grails
Lucas Aquiles
 
Groovy & grails
Arian Pasquali
 
Grails: O Java em Alta Produtividade
Cleórbete Santos
 
JavaEE nos trilhos
Gilliard Cordeiro
 
Rapida apresentacao sobre o Grails
Diego Cavalcanti
 
Oficina groovy grails - infoway
Lucas Aquiles
 
Grails, o que isso quer dizer?
Gilliard Cordeiro
 
Desenvolvimento Ágil com Grails.
Alex Guido
 
Curso de Grails
Bruno Nascimento
 
Anúncio

Semelhante a Produtividade em Java com Grails (20)

PPTX
Inovando na Plataforma Java
Wanderson Oliveira
 
PPTX
Inovando na plataforma Java
Eteg
 
PDF
Cloud Computing - Java no Google App Engine
Frederico Maia Arantes
 
PDF
Compweek
Thiago Gonzaga
 
PDF
Java no Google App Engine - TDC2011
Frederico Maia Arantes
 
ODP
Linguagens Dinamicas na JVM
William Gouvea
 
PDF
Tutorial Java EE
Rodrigo Cândido da Silva
 
PPT
Apostila de Fundamentos Java
Marcio Marinho
 
ODP
Java - Learn Once Use Anywhere
Serge Rehem
 
PPT
Java Seminar
armeniocardoso
 
PDF
Sistema S2DG e Tecnologias Web
Elenilson Vieira
 
PPTX
JSF2 ScrumToys SestInfo 2010
Eder Magalhães
 
PDF
Java Web Fácil com VRaptor
Frederico Maia Arantes
 
PDF
JavaFX: A nova biblioteca gráfica da plataforma Java
jesuinoPower
 
PDF
Java Bahia Desenvolvimento Java Area1
guestc9a1c7
 
ODP
Apresentação java
munosai
 
ODP
Desenvolvimento Java
Serge Rehem
 
PPT
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Éberli Cabistani Riella
 
PDF
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Vinicius Reis
 
PDF
Manual
Jose Moniz
 
Inovando na Plataforma Java
Wanderson Oliveira
 
Inovando na plataforma Java
Eteg
 
Cloud Computing - Java no Google App Engine
Frederico Maia Arantes
 
Compweek
Thiago Gonzaga
 
Java no Google App Engine - TDC2011
Frederico Maia Arantes
 
Linguagens Dinamicas na JVM
William Gouvea
 
Tutorial Java EE
Rodrigo Cândido da Silva
 
Apostila de Fundamentos Java
Marcio Marinho
 
Java - Learn Once Use Anywhere
Serge Rehem
 
Java Seminar
armeniocardoso
 
Sistema S2DG e Tecnologias Web
Elenilson Vieira
 
JSF2 ScrumToys SestInfo 2010
Eder Magalhães
 
Java Web Fácil com VRaptor
Frederico Maia Arantes
 
JavaFX: A nova biblioteca gráfica da plataforma Java
jesuinoPower
 
Java Bahia Desenvolvimento Java Area1
guestc9a1c7
 
Apresentação java
munosai
 
Desenvolvimento Java
Serge Rehem
 
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Éberli Cabistani Riella
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Vinicius Reis
 
Manual
Jose Moniz
 

Último (16)

PPTX
Curso de Java 1 - (Introdução Geral).pptx
Anderson Maciel
 
PPTX
Curso de Java 3 - (Estruturas de Controle, Decisão, Loop, Procedimento).pptx
Anderson Maciel
 
PDF
Explorando o Futuro do Corpo: Implantes Neurais e o Biohacking dos Sentidos
cooperliora
 
PPTX
aplicativopenseira.pptx Aplicativo que organiza Pensamentos - Peça Publicitária
StelaNorie1
 
PPTX
22 - Lógica de Programação com Portugol.pptx
Anderson Maciel
 
PPTX
Gestão de Mudanças - Os maiores desafios da Gestão de Mudanças e Gestão de Pr...
Gateware Group
 
PPTX
Curso de Java 6 - (Números, Data e Hora).pptx
Anderson Maciel
 
PDF
Certificado em Redes Neurais Artificiais em Python
CaioSilva506151
 
PPTX
Desenvolvimento-de-Produtos-Inovadores.pptx
ssuser1d7565
 
PPTX
Curso de Java 4 - (Orientação a Objetos).pptx
Anderson Maciel
 
PPTX
Curso de Java 7 - (ArrayList, Collections,(Set, List, Queue, Map)).pptx
Anderson Maciel
 
PPTX
21 - Lógica de Programação com Portugol.pptx
Anderson Maciel
 
PPTX
Curso de Java 5 - (Strings) Tipo de Dados.pptx
Anderson Maciel
 
PPTX
Gestão de Mudanças - Fases do processo de mudança organizacional
Gateware Group
 
PPTX
Computacao-e-Tecnologias-Digitais-Por-Que-Aprender.pptx
RobertaOliveiradaFon1
 
PPTX
Curso de Java 2 - (PrimeiroPrograma, Variáveis, Tipos e Operadores.pptx
Anderson Maciel
 
Curso de Java 1 - (Introdução Geral).pptx
Anderson Maciel
 
Curso de Java 3 - (Estruturas de Controle, Decisão, Loop, Procedimento).pptx
Anderson Maciel
 
Explorando o Futuro do Corpo: Implantes Neurais e o Biohacking dos Sentidos
cooperliora
 
aplicativopenseira.pptx Aplicativo que organiza Pensamentos - Peça Publicitária
StelaNorie1
 
22 - Lógica de Programação com Portugol.pptx
Anderson Maciel
 
Gestão de Mudanças - Os maiores desafios da Gestão de Mudanças e Gestão de Pr...
Gateware Group
 
Curso de Java 6 - (Números, Data e Hora).pptx
Anderson Maciel
 
Certificado em Redes Neurais Artificiais em Python
CaioSilva506151
 
Desenvolvimento-de-Produtos-Inovadores.pptx
ssuser1d7565
 
Curso de Java 4 - (Orientação a Objetos).pptx
Anderson Maciel
 
Curso de Java 7 - (ArrayList, Collections,(Set, List, Queue, Map)).pptx
Anderson Maciel
 
21 - Lógica de Programação com Portugol.pptx
Anderson Maciel
 
Curso de Java 5 - (Strings) Tipo de Dados.pptx
Anderson Maciel
 
Gestão de Mudanças - Fases do processo de mudança organizacional
Gateware Group
 
Computacao-e-Tecnologias-Digitais-Por-Que-Aprender.pptx
RobertaOliveiradaFon1
 
Curso de Java 2 - (PrimeiroPrograma, Variáveis, Tipos e Operadores.pptx
Anderson Maciel
 

Produtividade em Java com Grails

  • 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”
  • 3. Introdução Plataformas? Java, .NET, PHP, Ruby, Python... Frameworks? Hibernate/JPA, Spring, “EJB”... Frameworks Web? Java: Tapestry 5, Wicket, JSF, Struts... Rails, Django, WebForms/MVC...
  • 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)
  • 21. Exemplo: Configuração environments { development { dataSource { username = "sa" password = "" dbCreate = "create-drop" url = "jdbc:mysql://dbserver" ...
  • 22. Exemplo: Persistência def wans = new Usuario() wans.nome = ‘Wanderson Santos’ wans.dataNascimento = Date.parse(‘dd/MM/yyyy’,’01/11/1981’) wans.dataCadastro = new Date() wans.save() //fui!
  • 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!
  • 24. Exemplo: Consultas def silvas = Usuario.withCriteria { def hoje = new Date() between(‘dataCadastro’, hoje-7, hoje) like(‘nome’, ‘%Silva%') maxResults(5) order(‘dataAniversario’, ‘desc’) }
  • 25. Exemplo: Visão <body> Olá ${params.mundo} ! <g:each in="${[1,2,3]}" var=“numero"> <p>Número ${numero}</p> </g:each> </body>
  • 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!
  • 35. Referências Site oficial: http://www.grails.org Grails Introduction http://www.slideshare.net/glaforge/grails- introduction-ijtc-2007-presentation Grails At LinkedIn http://www.slideshare.net/linkedin/grails-at- linked