SlideShare une entreprise Scribd logo
1  sur  25
MatrizMatriz
● Cleórbete Santos
● Michael Schuenck dos Santos
● Michael Schuenck dos Santos
● Michael Schuenck dos Santos
● Michael Schuenck dos Santos
● Michael Schuenck dos Santos
FLISOL DF 2013
27 de abril de 201327 de abril de 2013
GrailsGrails
O Java em alta produtividadeO Java em alta produtividade
Cleórbete SantosCleórbete Santos
cleorbete@gmail.comcleorbete@gmail.com
www.cleorbete.comwww.cleorbete.com
Help! I lost my mojo!Help! I lost my mojo!
● Java = Customização de arquivos de
configuração, XML's, scripts...
● E onde estará o mojo perdido?
● Grails = The search is over!
O que é Grails?O que é Grails?
● Grails é um 'Full Stack Framework' de
desenvolvimento web que oferece as
ferramentas, técnicas e tecnologias
presentes em outros frameworks
Java, combinando-os com o poder e a
inovação de uma linguagem de
desenvolvimento dinâmica (Groovy),
e as vantagens do COC (Convention
Over Configuration);
O que o Grails permite?O que o Grails permite?
● Principalmente que o programador
ocupe-se mais na implementação do
que na configuração;
Grails é da SpringsourceGrails é da Springsource
● Springsource?
● VMWare?
● Groovy?
● Spring Framework -> Java | Grails -> Groovy
O que é Groovy?O que é Groovy?
● É uma linguagem OO para a plataforma Java;
● É dinâmica, como Python, Ruby, Perl, e outras;
● Códigos em Java são sintaticamente aceitos;
● É compilada para bytecodes pela JVM;
● Possui recursos como tipagem dinâmica e
closures;
● É compacta em relação ao Java;
O que é Groovy?O que é Groovy?
[continuação][continuação]
● // Exemplo em Java
public class Aluno {
Integer id;
String nome;
public String getNome() { return this.nome; }
public void setNome(String nome) {this.nome =
nome;}
public Integer getId() { return this.id; }
public void setId(Integer id) { this.id = id; } }
O que é Groovy?O que é Groovy?
[continuação][continuação]
● // Exemplo em Groovy
class Aluno { String nome }
Um pouco de etimologiaUm pouco de etimologia
● Significado de Grails (Groovy on Rails);
● Significado de Groovy;
Tecnologias disponíveis emTecnologias disponíveis em
GrailsGrails
● Model: GORM – Grails Object Relational
Mapping (Hibernate)
● Controller: Spring Framework
● Gant
● Tomcat Embedded
● View: GSP's – Groovy Server Pages
● (entre outras)
Princípios do GrailsPrincípios do Grails
● DRY – Don't Repeat Yourself (DIE – Duplication
Is Evil);
● COC – Convention Over Configuration;
Estrutura de uma aplicação GrailsEstrutura de uma aplicação Grails
● /grails-app
|---/conf
|---/controllers
|---/domain
|---/i18n
|---/services
|---/views
|---/(...)
Comandos do GrailsComandos do Grails
● grails help
● grails create-app
● grails create-controller
● grails create-domain-class
● grails generate-all
● grails generate-controller
● grails generate-views
● grails run-app
● grails war
● (...)
EXEMPLO:EXEMPLO:
Aplicação em GrailsAplicação em Grails
ScaffoldingScaffolding
● Dinâmico: recurso que permite ao compilador
criar o código para o CRUD da aplicação para
uso em runtime;
● Estático = CRUD em tempo de projeto;
● É um termo em inglês de engenharia civil, que
denota a colocação de andaimes e outras
estruturas para suportar temporariamente
trabalhadores de maquinário enquanto a
construção definitiva não está pronta;
EXEMPLO:EXEMPLO:
Scaffold DinâmicoScaffold Dinâmico
Scaffold EstáticoScaffold Estático
● grails generate-all <domain-class>
EXEMPLO:EXEMPLO:
Scaffold EstáticoScaffold Estático
H2 Database EngineH2 Database Engine
● Banco de dados Lightweight, Opensource,
Java puro;
● Suporta nativamente criptografia;
● Instalado como plugin, no Grails;
● Trabalha Embedded, Server e Em memória;
DataSource.groovyDataSource.groovy
● grails-app/conf/DataSource.groovy
● Environments:
● Create: cria o banco se não existir, mas não o
modifica caso já exista. Deleta os dados existentes;
● Update: Cria o banco se não existir, e modifica-o
caso exista;
● grails <env> run-app
● Create-drop: apaga e (re)cria o banco. Deleta os
dados existentes;
E o Tomcat?E o Tomcat?
IDE'sIDE's
● Eclipse e Netbeans dão suporte ao Grails;
● STS – Springsource Tool Suite;
● Notepad, GEdit...;
● Intellij;
Links úteisLinks úteis
● www.grails.org
● www.grailsbrasil.com.br
● www.groovymag.com
● www.grails.org/books
INTERESSADOS EM CURSOS DEINTERESSADOS EM CURSOS DE
GRAILS:GRAILS:
cleorbete@gmail.comcleorbete@gmail.com

Contenu connexe

Tendances

A Evolução do Front end
A Evolução do Front endA Evolução do Front end
A Evolução do Front endDouglas Matoso
 
Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Erik Cruz
 
Chega de lendas! JavaFX em Android
Chega de lendas! JavaFX em AndroidChega de lendas! JavaFX em Android
Chega de lendas! JavaFX em AndroidBruno Oliveira
 
Introdução ao java fx e visage
Introdução ao java fx e visageIntrodução ao java fx e visage
Introdução ao java fx e visagejesuinoPower
 
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Rodrigo Branas
 
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JSRodrigo Urubatan
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Daniel Makiyama
 
Introdução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações webIntrodução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações webRodrigo Branas
 
Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Interfaces ricas com Rails e React.JS @ Rubyconf 2015Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Interfaces ricas com Rails e React.JS @ Rubyconf 2015Rodrigo Urubatan
 
Desenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitDesenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitFlávio Lisboa
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScriptCarlos Eduardo Kadu
 
Aula Introdução a VRaptor 4 - Pós Java UTFPR
Aula Introdução a VRaptor 4 - Pós Java UTFPRAula Introdução a VRaptor 4 - Pós Java UTFPR
Aula Introdução a VRaptor 4 - Pós Java UTFPRAndré Luiz Forchesatto
 
GDG ABC Meetup #5 - Tendências 2015
GDG ABC Meetup #5 - Tendências 2015GDG ABC Meetup #5 - Tendências 2015
GDG ABC Meetup #5 - Tendências 2015Daniel Costa Gimenes
 

Tendances (20)

A Evolução do Front end
A Evolução do Front endA Evolução do Front end
A Evolução do Front end
 
Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021
 
Javascript para adultos
Javascript para adultosJavascript para adultos
Javascript para adultos
 
Chega de lendas! JavaFX em Android
Chega de lendas! JavaFX em AndroidChega de lendas! JavaFX em Android
Chega de lendas! JavaFX em Android
 
React Native na globo.com
React Native na globo.comReact Native na globo.com
React Native na globo.com
 
Introdução ao java fx e visage
Introdução ao java fx e visageIntrodução ao java fx e visage
Introdução ao java fx e visage
 
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
 
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
 
Introdução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações webIntrodução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações web
 
Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Interfaces ricas com Rails e React.JS @ Rubyconf 2015Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Interfaces ricas com Rails e React.JS @ Rubyconf 2015
 
Desenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitDesenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo Toolkit
 
Jclouds jug vale
Jclouds jug valeJclouds jug vale
Jclouds jug vale
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScript
 
Mean Stack
Mean StackMean Stack
Mean Stack
 
Angular js
Angular jsAngular js
Angular js
 
Blazor #SnetTalks3
Blazor  #SnetTalks3Blazor  #SnetTalks3
Blazor #SnetTalks3
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Aula Introdução a VRaptor 4 - Pós Java UTFPR
Aula Introdução a VRaptor 4 - Pós Java UTFPRAula Introdução a VRaptor 4 - Pós Java UTFPR
Aula Introdução a VRaptor 4 - Pós Java UTFPR
 
GDG ABC Meetup #5 - Tendências 2015
GDG ABC Meetup #5 - Tendências 2015GDG ABC Meetup #5 - Tendências 2015
GDG ABC Meetup #5 - Tendências 2015
 

Similaire à Grails: O Java em Alta Produtividade

Overview de Grails: O Java em alta produtividade
Overview de Grails: O Java em alta produtividadeOverview de Grails: O Java em alta produtividade
Overview de Grails: O Java em alta produtividadeCleórbete Santos
 
See project - Segurança em Cloud Computing v2 FISL 11 2010
See project - Segurança em Cloud Computing v2 FISL 11 2010See project - Segurança em Cloud Computing v2 FISL 11 2010
See project - Segurança em Cloud Computing v2 FISL 11 2010Marcelo Fleury
 
Desenvolvimento web com groovy e grails.
Desenvolvimento web com groovy e grails.Desenvolvimento web com groovy e grails.
Desenvolvimento web com groovy e grails.Bryan Ollivie
 
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
 
Decoupled Drupal com GraphQL e React
Decoupled Drupal com GraphQL e ReactDecoupled Drupal com GraphQL e React
Decoupled Drupal com GraphQL e ReactCleber Gasparoto
 
Desenvolvimento Ágil com Play! Framework
Desenvolvimento Ágil com Play! FrameworkDesenvolvimento Ágil com Play! Framework
Desenvolvimento Ágil com Play! FrameworkKeuller Magalhães
 
See Project - Segurança em Cloud Computing FLISOL GO 2010
See Project - Segurança em Cloud Computing FLISOL GO 2010See Project - Segurança em Cloud Computing FLISOL GO 2010
See Project - Segurança em Cloud Computing FLISOL GO 2010Marcelo Fleury
 
Business Rules com Drools
Business Rules com DroolsBusiness Rules com Drools
Business Rules com Droolsrafaelliu
 
Design for change: Fatores que influenciam na longevidade de um Software PHP
Design for change: Fatores que influenciam na longevidade de um Software PHPDesign for change: Fatores que influenciam na longevidade de um Software PHP
Design for change: Fatores que influenciam na longevidade de um Software PHPPablo Dall'Oglio
 
Do Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworks
Do Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworksDo Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworks
Do Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworksPablo Dall'Oglio
 
LPUG #10 agenda e community updates - 2020-09-16
LPUG #10   agenda e community updates - 2020-09-16LPUG #10   agenda e community updates - 2020-09-16
LPUG #10 agenda e community updates - 2020-09-16Fernando Fernández
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...tdc-globalcode
 
graoJS - A full stack MVC NodeJS framework
graoJS - A full stack MVC NodeJS frameworkgraoJS - A full stack MVC NodeJS framework
graoJS - A full stack MVC NodeJS frameworkMarcelo Fleury
 
Mapa de aprendizado Front End
Mapa de aprendizado Front EndMapa de aprendizado Front End
Mapa de aprendizado Front EndCaio Vaccaro
 
Google App Engine e PHP
Google App Engine e PHPGoogle App Engine e PHP
Google App Engine e PHPLuiz Messias
 
O QGIS, caso de sucesso de um projeto aberto da OSGEO
O QGIS, caso de sucesso de um projeto aberto da OSGEOO QGIS, caso de sucesso de um projeto aberto da OSGEO
O QGIS, caso de sucesso de um projeto aberto da OSGEOLucas Cavalcante
 
Da introdução à prática com Drools Expert e Drools Flow
Da introdução à prática com Drools Expert e Drools FlowDa introdução à prática com Drools Expert e Drools Flow
Da introdução à prática com Drools Expert e Drools FlowRicardo Longa
 

Similaire à Grails: O Java em Alta Produtividade (20)

Overview de Grails: O Java em alta produtividade
Overview de Grails: O Java em alta produtividadeOverview de Grails: O Java em alta produtividade
Overview de Grails: O Java em alta produtividade
 
See project - Segurança em Cloud Computing v2 FISL 11 2010
See project - Segurança em Cloud Computing v2 FISL 11 2010See project - Segurança em Cloud Computing v2 FISL 11 2010
See project - Segurança em Cloud Computing v2 FISL 11 2010
 
Desenvolvimento web com groovy e grails.
Desenvolvimento web com groovy e grails.Desenvolvimento web com groovy e grails.
Desenvolvimento web com groovy e grails.
 
Grails, o que isso quer dizer?
Grails, o que isso quer dizer?Grails, o que isso quer dizer?
Grails, o que isso quer dizer?
 
Decoupled Drupal com GraphQL e React
Decoupled Drupal com GraphQL e ReactDecoupled Drupal com GraphQL e React
Decoupled Drupal com GraphQL e React
 
Graalvm
GraalvmGraalvm
Graalvm
 
Django - Muito além do básico
Django - Muito além do básicoDjango - Muito além do básico
Django - Muito além do básico
 
Desenvolvimento Ágil com Play! Framework
Desenvolvimento Ágil com Play! FrameworkDesenvolvimento Ágil com Play! Framework
Desenvolvimento Ágil com Play! Framework
 
See Project - Segurança em Cloud Computing FLISOL GO 2010
See Project - Segurança em Cloud Computing FLISOL GO 2010See Project - Segurança em Cloud Computing FLISOL GO 2010
See Project - Segurança em Cloud Computing FLISOL GO 2010
 
Business Rules com Drools
Business Rules com DroolsBusiness Rules com Drools
Business Rules com Drools
 
Design for change: Fatores que influenciam na longevidade de um Software PHP
Design for change: Fatores que influenciam na longevidade de um Software PHPDesign for change: Fatores que influenciam na longevidade de um Software PHP
Design for change: Fatores que influenciam na longevidade de um Software PHP
 
Do Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworks
Do Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworksDo Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworks
Do Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworks
 
Grails com Nexus e Codenarc
Grails com Nexus e CodenarcGrails com Nexus e Codenarc
Grails com Nexus e Codenarc
 
LPUG #10 agenda e community updates - 2020-09-16
LPUG #10   agenda e community updates - 2020-09-16LPUG #10   agenda e community updates - 2020-09-16
LPUG #10 agenda e community updates - 2020-09-16
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
 
graoJS - A full stack MVC NodeJS framework
graoJS - A full stack MVC NodeJS frameworkgraoJS - A full stack MVC NodeJS framework
graoJS - A full stack MVC NodeJS framework
 
Mapa de aprendizado Front End
Mapa de aprendizado Front EndMapa de aprendizado Front End
Mapa de aprendizado Front End
 
Google App Engine e PHP
Google App Engine e PHPGoogle App Engine e PHP
Google App Engine e PHP
 
O QGIS, caso de sucesso de um projeto aberto da OSGEO
O QGIS, caso de sucesso de um projeto aberto da OSGEOO QGIS, caso de sucesso de um projeto aberto da OSGEO
O QGIS, caso de sucesso de um projeto aberto da OSGEO
 
Da introdução à prática com Drools Expert e Drools Flow
Da introdução à prática com Drools Expert e Drools FlowDa introdução à prática com Drools Expert e Drools Flow
Da introdução à prática com Drools Expert e Drools Flow
 

Grails: O Java em Alta Produtividade

  • 1. MatrizMatriz ● Cleórbete Santos ● Michael Schuenck dos Santos ● Michael Schuenck dos Santos ● Michael Schuenck dos Santos ● Michael Schuenck dos Santos ● Michael Schuenck dos Santos
  • 2. FLISOL DF 2013 27 de abril de 201327 de abril de 2013 GrailsGrails O Java em alta produtividadeO Java em alta produtividade Cleórbete SantosCleórbete Santos cleorbete@gmail.comcleorbete@gmail.com www.cleorbete.comwww.cleorbete.com
  • 3. Help! I lost my mojo!Help! I lost my mojo! ● Java = Customização de arquivos de configuração, XML's, scripts... ● E onde estará o mojo perdido? ● Grails = The search is over!
  • 4. O que é Grails?O que é Grails? ● Grails é um 'Full Stack Framework' de desenvolvimento web que oferece as ferramentas, técnicas e tecnologias presentes em outros frameworks Java, combinando-os com o poder e a inovação de uma linguagem de desenvolvimento dinâmica (Groovy), e as vantagens do COC (Convention Over Configuration);
  • 5. O que o Grails permite?O que o Grails permite? ● Principalmente que o programador ocupe-se mais na implementação do que na configuração;
  • 6. Grails é da SpringsourceGrails é da Springsource ● Springsource? ● VMWare? ● Groovy? ● Spring Framework -> Java | Grails -> Groovy
  • 7. O que é Groovy?O que é Groovy? ● É uma linguagem OO para a plataforma Java; ● É dinâmica, como Python, Ruby, Perl, e outras; ● Códigos em Java são sintaticamente aceitos; ● É compilada para bytecodes pela JVM; ● Possui recursos como tipagem dinâmica e closures; ● É compacta em relação ao Java;
  • 8. O que é Groovy?O que é Groovy? [continuação][continuação] ● // Exemplo em Java public class Aluno { Integer id; String nome; public String getNome() { return this.nome; } public void setNome(String nome) {this.nome = nome;} public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } }
  • 9. O que é Groovy?O que é Groovy? [continuação][continuação] ● // Exemplo em Groovy class Aluno { String nome }
  • 10. Um pouco de etimologiaUm pouco de etimologia ● Significado de Grails (Groovy on Rails); ● Significado de Groovy;
  • 11. Tecnologias disponíveis emTecnologias disponíveis em GrailsGrails ● Model: GORM – Grails Object Relational Mapping (Hibernate) ● Controller: Spring Framework ● Gant ● Tomcat Embedded ● View: GSP's – Groovy Server Pages ● (entre outras)
  • 12. Princípios do GrailsPrincípios do Grails ● DRY – Don't Repeat Yourself (DIE – Duplication Is Evil); ● COC – Convention Over Configuration;
  • 13. Estrutura de uma aplicação GrailsEstrutura de uma aplicação Grails ● /grails-app |---/conf |---/controllers |---/domain |---/i18n |---/services |---/views |---/(...)
  • 14. Comandos do GrailsComandos do Grails ● grails help ● grails create-app ● grails create-controller ● grails create-domain-class ● grails generate-all ● grails generate-controller ● grails generate-views ● grails run-app ● grails war ● (...)
  • 16. ScaffoldingScaffolding ● Dinâmico: recurso que permite ao compilador criar o código para o CRUD da aplicação para uso em runtime; ● Estático = CRUD em tempo de projeto; ● É um termo em inglês de engenharia civil, que denota a colocação de andaimes e outras estruturas para suportar temporariamente trabalhadores de maquinário enquanto a construção definitiva não está pronta;
  • 18. Scaffold EstáticoScaffold Estático ● grails generate-all <domain-class>
  • 20. H2 Database EngineH2 Database Engine ● Banco de dados Lightweight, Opensource, Java puro; ● Suporta nativamente criptografia; ● Instalado como plugin, no Grails; ● Trabalha Embedded, Server e Em memória;
  • 21. DataSource.groovyDataSource.groovy ● grails-app/conf/DataSource.groovy ● Environments: ● Create: cria o banco se não existir, mas não o modifica caso já exista. Deleta os dados existentes; ● Update: Cria o banco se não existir, e modifica-o caso exista; ● grails <env> run-app ● Create-drop: apaga e (re)cria o banco. Deleta os dados existentes;
  • 22. E o Tomcat?E o Tomcat?
  • 23. IDE'sIDE's ● Eclipse e Netbeans dão suporte ao Grails; ● STS – Springsource Tool Suite; ● Notepad, GEdit...; ● Intellij;
  • 24. Links úteisLinks úteis ● www.grails.org ● www.grailsbrasil.com.br ● www.groovymag.com ● www.grails.org/books
  • 25. INTERESSADOS EM CURSOS DEINTERESSADOS EM CURSOS DE GRAILS:GRAILS: cleorbete@gmail.comcleorbete@gmail.com