GRAILS
Bruno Gama CatãoPai em tempo integralProfessor da Facisa  Sistemas de Informação  Jogos DigitaisCoordenador do LTITento le...
grails.org
O que é ?• Tecnologia para construção RÁPIDA e  FÁCIL de aplicações para a Internet  (web)
GRAILS = GROOVY + RAILS
GROOVY ?  Groovy   Java
Código Javapublic class AloMundo {	 private String nome;		 public String getNome() {	 	 return nome;	 }		 public void setN...
Código Groovypublic class AloMundo {	 private String nome;		 public String getNome() {	 	 return nome;	 }		 public void se...
É a mesma coisa ?! ... então, qual avantagem disso ?
Código Groovy                 class AloMundo {                 	 private String nome                                      ...
Código Groovy                      class AloMundo {                      	 String nome                      	             ...
Código Groovy                                                     Ao invés                                                ...
Código Groovy                                              Versão fi                     class AloMundo {                  ...
• Resultado: • 21 linhas Java contra 13 linhas Groovy • Limpamos o lixo do código !
Java - Lendo um Arquivoimport   java.io.BufferedReader;import   java.io.FileNotFoundException;import   java.io.FileReader;...
Groovy - Lendo um Arquivo                                                    Tá quase                                     ...
Groovy - Lendo um Arquivo                        e la só tem            Versão fi               asse, sePra quê uma cl     ...
Entendendo Melhor Groovy
Variáveisdef nomeDaVariavel = valorDaVariavelEx:def idade = 28def nome = “Bruno”
Strings 1/2def nome = José da Silvadef cidade = "Campina Grande"def texto = Oi,como vai você ?Tudo bem ?def expr = /Contra...
Strings 2/2     • GStrings (Groovy Strings) podem ser       construídos de duas formas:       • Concatenação: +       • Ex...
Listasdef listaVazia = []def frutas = [Banana, Maçã]frutas << Abacateprint listaVazia.size() // 0print frutas[2] // Maçã//...
Mapsdef mapaVazio = [:]def preco = [cocaCola: 2.00, coxinha: 2.50]print preco[pipoca] // 0.50preco[guarana: 1.50]
Métodosdef saudacao(nome) {    print "Oi ${nome}, como vai você ?"}def soma(a, b) {    a + b // Não precisa do return}
Closures 1/3• É um novo tipo de dado;• Representa um trecho de código;• Pode ser passado como argumento em  métodos e arma...
Closures 2/3def saudacao = {print "Oi, como vai?"}saudacao() // "Oi como vai?"// Parâmetro implícito: itdef saudacao2 = { ...
Closures 3/3def executaOperacao(a, b, operacao) {    operacao(a, b)}def multiplicacao = {a, b -> a * b}def subtracao = {a,...
Novos Operadores• Spread: *.• Elvis: ?:• Safe navigation: ?.• Contém: in• Conversão: as• Identidade: is
E o Grails ?
TODO o Código de uma Aplicação            Web                                               gera as       Contato.groovy  ...
Isso é bom ?
Vantagens• Mais fácil de manter• Mais fácil de testar• Resultados rápidos• Aumenta a diversão
E a infra-estrutura ?
Tudo é Java• Você só está digitando menos !• Tudo vai para um arquivo WAR• Base sólida: • JPA (Hibernate) • Spring • Sitem...
ALGUNS CONCEITOS
• Convenção ao invés de codificação• Scaffolding (andaime)• Templates• Boas ferramentas
MÃO NA MASSA !!!
Upcoming SlideShare
Loading in …5
×

Introdução ao Framework Grails

1,301 views
1,218 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,301
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
54
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Introdução ao Framework Grails

    1. 1. GRAILS
    2. 2. Bruno Gama CatãoPai em tempo integralProfessor da Facisa Sistemas de Informação Jogos DigitaisCoordenador do LTITento levar alguns projetos open source: github.com/brunogamacatao
    3. 3. grails.org
    4. 4. O que é ?• Tecnologia para construção RÁPIDA e FÁCIL de aplicações para a Internet (web)
    5. 5. GRAILS = GROOVY + RAILS
    6. 6. GROOVY ? Groovy Java
    7. 7. Código Javapublic class AloMundo { private String nome; public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String saudacao() { return "Oi " + nome; } public static void main(String[] args) { AloMundo alo = new AloMundo(); alo.setNome("Fulano"); System.out.println(alo.saudacao()); }}
    8. 8. Código Groovypublic class AloMundo { private String nome; public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String saudacao() { return "Oi " + nome; } public static void main(String[] args) { AloMundo alo = new AloMundo(); alo.setNome("Fulano"); System.out.println(alo.saudacao()); }}
    9. 9. É a mesma coisa ?! ... então, qual avantagem disso ?
    10. 10. Código Groovy class AloMundo { private String nome Pra quê ; String getNome() { ? return nome } void setNome(String nome) { this.nome = nome To das as } classes e String saudacao() { omé todos sã return "Oi " + nome é }pú blicos at que prove o static void main(String[] args) { trário ! AloMundo alo = new AloMundo() con alo.setNome("Fulano") System.out.println(alo.saudacao()) } }
    11. 11. Código Groovy class AloMundo { String nome String saudacao() { return "Oi " + nome } static void main(String[] args) { AloMundo alo = new AloMundo() alo.setNome("Fulano")Atribut os já tem System.out.println(alo.saudacao()) et e set } g } au tomático ) (prop riedades
    12. 12. Código Groovy Ao invés System.o de class AloMundo { ut.println def nome apenas p use rintln ;) def saudacao() { return "Oi " + nome } static main(args) { def alo = new AloMundo() alo.setNome("Fulano") Lin guagens println(alo.saudacao()) r temente } fo } tipad as estãofora de moda !
    13. 13. Código Groovy Versão fi class AloMundo { nal ! def nome e formaOlha qu def saudacao() { construir return "Oi ${nome}"legal de } Strings ! static main(args) { def alo = new AloMundo() alo.nome = "Fulano" println alo.saudacao() Não precisa } } chamar get/set
    14. 14. • Resultado: • 21 linhas Java contra 13 linhas Groovy • Limpamos o lixo do código !
    15. 15. Java - Lendo um Arquivoimport java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;public class LeArquivo { public static void main(String[] args) { try { BufferedReader arquivo = new BufferedReader(new FileReader("/etc/passwd")); String line = null; while ((line = arquivo.readLine()) != null) { System.out.println(line); } arquivo.close(); } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } }}
    16. 16. Groovy - Lendo um Arquivo Tá quase bom ... class LeArquivo { static main(args) { new File("/etc/passwd").eachLine({line -> println(line) }) } } p assar um Podemos closure, código,bloco de ! râmetro como pa
    17. 17. Groovy - Lendo um Arquivo e la só tem Versão fi asse, sePra quê uma cl nal ! o main ? u m métodnew File("/etc/passwd").eachLine {line -> println line} Pense bem ... ne m todos os parêntesis são n ecessários !
    18. 18. Entendendo Melhor Groovy
    19. 19. Variáveisdef nomeDaVariavel = valorDaVariavelEx:def idade = 28def nome = “Bruno”
    20. 20. Strings 1/2def nome = José da Silvadef cidade = "Campina Grande"def texto = Oi,como vai você ?Tudo bem ?def expr = /Contra-barras são bem vindas !/
    21. 21. Strings 2/2 • GStrings (Groovy Strings) podem ser construídos de duas formas: • Concatenação: + • Expressões: ${expressão}def primeiroNome = Josédef ultimoNome = Silvadef nomeCompleto = primeiroNome + + ultimoNome//Expressões devem vir em Strings com aspas duplas !def nomeCompleto = "${primeiroNome} ${ultimoNome}"
    22. 22. Listasdef listaVazia = []def frutas = [Banana, Maçã]frutas << Abacateprint listaVazia.size() // 0print frutas[2] // Maçã//O trecho abaixo dá no mesmo ...def nomes = new ArrayList()nomes.add(Bruno)//Porém não é muito Groovy
    23. 23. Mapsdef mapaVazio = [:]def preco = [cocaCola: 2.00, coxinha: 2.50]print preco[pipoca] // 0.50preco[guarana: 1.50]
    24. 24. Métodosdef saudacao(nome) { print "Oi ${nome}, como vai você ?"}def soma(a, b) { a + b // Não precisa do return}
    25. 25. Closures 1/3• É um novo tipo de dado;• Representa um trecho de código;• Pode ser passado como argumento em métodos e armazenado em variáveis.
    26. 26. Closures 2/3def saudacao = {print "Oi, como vai?"}saudacao() // "Oi como vai?"// Parâmetro implícito: itdef saudacao2 = { print "Oi ${it} como vai?"}saudacao("Bruno") // "Oi Bruno como vai?"def soma = { a, b -> a + b // Lembrem-se, não precisa do return}soma(2, 3) // 5
    27. 27. Closures 3/3def executaOperacao(a, b, operacao) { operacao(a, b)}def multiplicacao = {a, b -> a * b}def subtracao = {a, b => a - b}executaOperacao(5, 2, multiplicacao) // 10executaOperacao(5, 2, subtracao) // 3
    28. 28. Novos Operadores• Spread: *.• Elvis: ?:• Safe navigation: ?.• Contém: in• Conversão: as• Identidade: is
    29. 29. E o Grails ?
    30. 30. TODO o Código de uma Aplicação Web gera as Contato.groovy Est e código anco de class Contato { tab elas do b sultas, e String nome da dos, con página s em 13 String telefone idiomas ! } ContatoController.groovy class ContatoController { def scaffold = Contato }
    31. 31. Isso é bom ?
    32. 32. Vantagens• Mais fácil de manter• Mais fácil de testar• Resultados rápidos• Aumenta a diversão
    33. 33. E a infra-estrutura ?
    34. 34. Tudo é Java• Você só está digitando menos !• Tudo vai para um arquivo WAR• Base sólida: • JPA (Hibernate) • Spring • Sitemesh ...
    35. 35. ALGUNS CONCEITOS
    36. 36. • Convenção ao invés de codificação• Scaffolding (andaime)• Templates• Boas ferramentas
    37. 37. MÃO NA MASSA !!!

    ×