SlideShare a Scribd company logo
1 of 35
Download to read offline
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

More Related Content

What's hot

Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonPaula Grangeiro
 
Joomla! do desktop ao datacenter
Joomla! do desktop ao datacenterJoomla! do desktop ao datacenter
Joomla! do desktop ao datacenterPaulino Michelazzo
 
Maven 3, Sonar e Hudson
Maven 3, Sonar e HudsonMaven 3, Sonar e Hudson
Maven 3, Sonar e HudsonRodrigo Branas
 
Infraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveInfraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveJose Augusto Carvalho
 
Infraestrutura ágil com Puppet - CISL
Infraestrutura ágil com Puppet - CISLInfraestrutura ágil com Puppet - CISL
Infraestrutura ágil com Puppet - CISLJose Augusto Carvalho
 
Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Anderson Araújo
 
Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalAdriano Petrich
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.Filipe Morelli
 
Treinamento Básico de Django
Treinamento Básico de DjangoTreinamento Básico de Django
Treinamento Básico de DjangoLeandro Zanuz
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorAllyson Barros
 
55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil55 New Things in Java 7 - Brazil
55 New Things in Java 7 - BrazilStephen Chin
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJSGiovanni Bassi
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Railsismaelstahelin
 
Boas práticas de django
Boas práticas de djangoBoas práticas de django
Boas práticas de djangoFilipe Ximenes
 
Ferramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilFerramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilJose Augusto Carvalho
 

What's hot (20)

Maven em 10 minutos
Maven em 10 minutosMaven em 10 minutos
Maven em 10 minutos
 
Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em python
 
JavaFX 1.2
JavaFX 1.2JavaFX 1.2
JavaFX 1.2
 
Joomla! do desktop ao datacenter
Joomla! do desktop ao datacenterJoomla! do desktop ao datacenter
Joomla! do desktop ao datacenter
 
Maven 3, Sonar e Hudson
Maven 3, Sonar e HudsonMaven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
 
Infraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveInfraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e Mcollective
 
Infraestrutura ágil com Puppet - CISL
Infraestrutura ágil com Puppet - CISLInfraestrutura ágil com Puppet - CISL
Infraestrutura ágil com Puppet - CISL
 
MongoDB + PHP
MongoDB + PHPMongoDB + PHP
MongoDB + PHP
 
Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Como escolher o Framework Java para web?
Como escolher o Framework Java para web?
 
Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao final
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.
 
Python na Web
Python na WebPython na Web
Python na Web
 
Treinamento Básico de Django
Treinamento Básico de DjangoTreinamento Básico de Django
Treinamento Básico de Django
 
Consegi 2011: Puppet
Consegi 2011: PuppetConsegi 2011: Puppet
Consegi 2011: Puppet
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJS
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
 
Boas práticas de django
Boas práticas de djangoBoas práticas de django
Boas práticas de django
 
Ferramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilFerramentas para infraestrutura ágil
Ferramentas para infraestrutura ágil
 

Viewers also liked

Grails: O Java em Alta Produtividade
Grails: O Java em Alta ProdutividadeGrails: O Java em Alta Produtividade
Grails: O Java em Alta ProdutividadeCleórbete Santos
 
Rapida apresentacao sobre o Grails
Rapida apresentacao sobre o GrailsRapida apresentacao sobre o Grails
Rapida apresentacao sobre o GrailsDiego Cavalcanti
 
Oficina groovy grails - infoway
Oficina  groovy grails - infowayOficina  groovy grails - infoway
Oficina groovy grails - infowayLucas Aquiles
 
Grails, o que isso quer dizer?
Grails, o que isso quer dizer?Grails, o que isso quer dizer?
Grails, o que isso quer dizer?Gilliard Cordeiro
 
Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.Alex Guido
 

Viewers also liked (9)

Groovy grails
Groovy grailsGroovy grails
Groovy grails
 
Groovy & grails
Groovy & grailsGroovy & grails
Groovy & grails
 
Grails: O Java em Alta Produtividade
Grails: O Java em Alta ProdutividadeGrails: O Java em Alta Produtividade
Grails: O Java em Alta Produtividade
 
JavaEE nos trilhos
JavaEE nos trilhosJavaEE nos trilhos
JavaEE nos trilhos
 
Rapida apresentacao sobre o Grails
Rapida apresentacao sobre o GrailsRapida apresentacao sobre o Grails
Rapida apresentacao sobre o Grails
 
Oficina groovy grails - infoway
Oficina  groovy grails - infowayOficina  groovy grails - infoway
Oficina groovy grails - infoway
 
Grails, o que isso quer dizer?
Grails, o que isso quer dizer?Grails, o que isso quer dizer?
Grails, o que isso quer dizer?
 
Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.
 
Curso de Grails
Curso de GrailsCurso de Grails
Curso de Grails
 

Similar to Produtividade em Java com Grails

Inovando na plataforma Java
Inovando na plataforma JavaInovando na plataforma Java
Inovando na plataforma JavaEteg
 
Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineFrederico Maia Arantes
 
Linguagens Dinamicas na JVM
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVMWilliam Gouvea
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos JavaMarcio Marinho
 
Java - Learn Once Use Anywhere
Java - Learn Once Use AnywhereJava - Learn Once Use Anywhere
Java - Learn Once Use AnywhereSerge Rehem
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebElenilson Vieira
 
JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010Eder Magalhães
 
JavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma JavaJavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma JavajesuinoPower
 
Java Bahia Desenvolvimento Java Area1
Java Bahia Desenvolvimento Java Area1Java Bahia Desenvolvimento Java Area1
Java Bahia Desenvolvimento Java Area1guestc9a1c7
 
Apresentação java
Apresentação javaApresentação java
Apresentação javamunosai
 
Desenvolvimento Java
 Desenvolvimento Java Desenvolvimento Java
Desenvolvimento JavaSerge Rehem
 
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoJava No Setor Público: Produtividade, Flexibilidade e Baixo Custo
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
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsVinicius Reis
 

Similar to Produtividade em Java com Grails (20)

Inovando na plataforma Java
Inovando na plataforma JavaInovando na plataforma Java
Inovando na plataforma Java
 
Inovando na Plataforma Java
Inovando na Plataforma JavaInovando na Plataforma Java
Inovando na Plataforma Java
 
Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App Engine
 
Compweek
CompweekCompweek
Compweek
 
Java no Google App Engine - TDC2011
Java no Google App Engine - TDC2011Java no Google App Engine - TDC2011
Java no Google App Engine - TDC2011
 
Linguagens Dinamicas na JVM
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVM
 
Tutorial Java EE
Tutorial Java EETutorial Java EE
Tutorial Java EE
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos Java
 
Java - Learn Once Use Anywhere
Java - Learn Once Use AnywhereJava - Learn Once Use Anywhere
Java - Learn Once Use Anywhere
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias Web
 
JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010
 
Java Web Fácil com VRaptor
Java Web Fácil com VRaptorJava Web Fácil com VRaptor
Java Web Fácil com VRaptor
 
JavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma JavaJavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma Java
 
Java Bahia Desenvolvimento Java Area1
Java Bahia Desenvolvimento Java Area1Java Bahia Desenvolvimento Java Area1
Java Bahia Desenvolvimento Java Area1
 
Apresentação java
Apresentação javaApresentação java
Apresentação java
 
Desenvolvimento Java
 Desenvolvimento Java Desenvolvimento Java
Desenvolvimento Java
 
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoJava No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
 
Manual
ManualManual
Manual
 

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