SlideShare uma empresa Scribd logo
1 de 25
Matriz
●   Cleórbete Santos
●   Michael Schuenck dos Santos
●   Michael Schuenck dos Santos
●   Michael Schuenck dos Santos
●   Michael Schuenck dos Santos
●   Michael Schuenck dos Santos
Tribunal Superior Eleitoral
        04 de março de 2013




   Overview de Grails
O Java em alta produtividade


                                      Cleórbete Santos
                                     cleorbete@gmail.com
                                        www.cleorbete.com
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?
●   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?
●   Principalmente que o programador
    ocupe-se mais na implementação do
    que na configuração;
Grails é da Springsource
●   Springsource?
●   VMWare?
●   Spring Framework -> Java | Grails -> Groovy
●   Groovy?
O que é Groovy?
●   É uma linguagem OO para a plataforma Java;
●   É dinâmica, como Python, Ruby, Perl, e outras;
●   É compilada para bytecodes pela JVM;
●   Códigos em Java são sintaticamente aceitos;
●   Possui recursos como tipagem dinâmica e
    closures;
●   É compacta em relação ao Java;
O que é Groovy?
                   [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?
           [continuação]
● // Exemplo em Groovy


  class Aluno { String nome }
Um pouco de etimologia
●   Significado de Grails (Groovy on Rails);
●   Significado de Groovy;
Tecnologias disponíveis em
                Grails
●   Model: GORM – Grails Object Relational
    Mapping (Hibernate)
●   View: GSP's – Groovy Server Pages
●   Controller: Spring Framework
●   Gant
●   Tomcat Embedded
●   (entre outras)
Princípios do Grails
●   DRY – Don't Repeat Yourself (DIE – Duplication
    Is Evil);
●   COC – Convention Over Configuration;
Estrutura de uma aplicação Grails
●   /grails-app
       |---/conf
       |---/controllers
       |---/domain
       |---/i18n
       |---/services
       |---/views
       |---/(...)
Comandos 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:
Aplicação em Grails
Scaffolding
●   É 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;
●   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;
EXEMPLO:
Scaffold Dinâmico
Scaffold Estático
●   grails generate-all <domain-class>
EXEMPLO:
Scaffold Estático
H2 Database Engine
●   Banco de dados Lightweight, Opensource,
    Java puro;
●   Trabalha Embedded, Server e Em memória;
●   Suporta nativamente criptografia;
●   Instalado como plugin, no Grails;
DataSource.groovy
●   grails-app/conf/DataSource.groovy
●   Environments:
    ●   Create-drop: apaga e (re)cria o banco. Deleta os
        dados existentes;
    ●   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
E o Tomcat?
IDE's
●   Eclipse e Netbeans dão suporte ao Grails;
●   Intellij;
●   STS – Springsource Tool Suite;
●   Notepad, GEdit...;
Links úteis
●   www.grails.org
●   www.grails.org/books
●   www.grailsbrasil.com.br
●   www.groovymag.com
“This is the end...” - Jim Morrison

Mais conteúdo relacionado

Mais procurados

Node.js - Programação assíncrona e de tempo real
Node.js - Programação assíncrona e de tempo realNode.js - Programação assíncrona e de tempo real
Node.js - Programação assíncrona e de tempo realDiogo Cabral da Silva
 
Usando QUnit para testes unitários em JavaScript
Usando QUnit para testes unitários em JavaScriptUsando QUnit para testes unitários em JavaScript
Usando QUnit para testes unitários em JavaScriptZigotto Tecnologia
 
ASP.NET 5 MVC Gerenciando dependencias com Nuget, NPM, Gulp e Bower
ASP.NET 5 MVC Gerenciando dependencias com Nuget, NPM, Gulp e BowerASP.NET 5 MVC Gerenciando dependencias com Nuget, NPM, Gulp e Bower
ASP.NET 5 MVC Gerenciando dependencias com Nuget, NPM, Gulp e Bowertdc-globalcode
 
#1 - Git - Introdução
#1 - Git - Introdução#1 - Git - Introdução
#1 - Git - IntroduçãoRodrigo Branas
 
Decoupled Drupal com GraphQL e React
Decoupled Drupal com GraphQL e ReactDecoupled Drupal com GraphQL e React
Decoupled Drupal com GraphQL e ReactCleber Gasparoto
 
Porque eu deveria usar TypeScript?
Porque eu deveria usar TypeScript?Porque eu deveria usar TypeScript?
Porque eu deveria usar TypeScript?Caliel Costa
 
TDC2016POA | Trilha .NET - Trazendo o poder dos containers ao mundo .NET
TDC2016POA | Trilha .NET -  Trazendo o poder dos containers ao mundo .NETTDC2016POA | Trilha .NET -  Trazendo o poder dos containers ao mundo .NET
TDC2016POA | Trilha .NET - Trazendo o poder dos containers ao mundo .NETtdc-globalcode
 
Apresentação Python e Games - Python Brasil 11 - 2015
Apresentação Python e Games - Python Brasil 11 - 2015Apresentação Python e Games - Python Brasil 11 - 2015
Apresentação Python e Games - Python Brasil 11 - 2015Julio Cesar Eiras Melanda
 
Docker: introdução e primeiros passos - Sorocódigos - Agosto-2018
Docker: introdução e primeiros passos - Sorocódigos - Agosto-2018Docker: introdução e primeiros passos - Sorocódigos - Agosto-2018
Docker: introdução e primeiros passos - Sorocódigos - Agosto-2018Renato Groff
 
Lidando com Equipes de Desenvolvimento
Lidando com Equipes de DesenvolvimentoLidando com Equipes de Desenvolvimento
Lidando com Equipes de Desenvolvimento4Soft
 
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
 
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...Renato Groff
 
TDC2016POA | Trilha .NET - O que esperar do C# 7
TDC2016POA | Trilha .NET - O que esperar do C# 7TDC2016POA | Trilha .NET - O que esperar do C# 7
TDC2016POA | Trilha .NET - O que esperar do C# 7tdc-globalcode
 
A nova era do desenvolvimento mobile
A nova era do desenvolvimento mobile A nova era do desenvolvimento mobile
A nova era do desenvolvimento mobile GDGFoz
 
Deploy mágico: o caso de sucesso do PHP'n Rio 11
Deploy mágico: o caso de sucesso do PHP'n Rio 11Deploy mágico: o caso de sucesso do PHP'n Rio 11
Deploy mágico: o caso de sucesso do PHP'n Rio 11Igor Santos
 
Git e contibuição com projetos open source usando GitHub
Git e contibuição com projetos open source usando GitHubGit e contibuição com projetos open source usando GitHub
Git e contibuição com projetos open source usando GitHubBruno Orlandi
 
Arquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineArquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineEder Magalhães
 

Mais procurados (20)

Node.js - Programação assíncrona e de tempo real
Node.js - Programação assíncrona e de tempo realNode.js - Programação assíncrona e de tempo real
Node.js - Programação assíncrona e de tempo real
 
Graalvm
GraalvmGraalvm
Graalvm
 
Usando QUnit para testes unitários em JavaScript
Usando QUnit para testes unitários em JavaScriptUsando QUnit para testes unitários em JavaScript
Usando QUnit para testes unitários em JavaScript
 
ASP.NET 5 MVC Gerenciando dependencias com Nuget, NPM, Gulp e Bower
ASP.NET 5 MVC Gerenciando dependencias com Nuget, NPM, Gulp e BowerASP.NET 5 MVC Gerenciando dependencias com Nuget, NPM, Gulp e Bower
ASP.NET 5 MVC Gerenciando dependencias com Nuget, NPM, Gulp e Bower
 
#1 - Git - Introdução
#1 - Git - Introdução#1 - Git - Introdução
#1 - Git - Introdução
 
Grails com Nexus e Codenarc
Grails com Nexus e CodenarcGrails com Nexus e Codenarc
Grails com Nexus e Codenarc
 
Decoupled Drupal com GraphQL e React
Decoupled Drupal com GraphQL e ReactDecoupled Drupal com GraphQL e React
Decoupled Drupal com GraphQL e React
 
Porque eu deveria usar TypeScript?
Porque eu deveria usar TypeScript?Porque eu deveria usar TypeScript?
Porque eu deveria usar TypeScript?
 
TDC2016POA | Trilha .NET - Trazendo o poder dos containers ao mundo .NET
TDC2016POA | Trilha .NET -  Trazendo o poder dos containers ao mundo .NETTDC2016POA | Trilha .NET -  Trazendo o poder dos containers ao mundo .NET
TDC2016POA | Trilha .NET - Trazendo o poder dos containers ao mundo .NET
 
Apresentação Python e Games - Python Brasil 11 - 2015
Apresentação Python e Games - Python Brasil 11 - 2015Apresentação Python e Games - Python Brasil 11 - 2015
Apresentação Python e Games - Python Brasil 11 - 2015
 
Docker: introdução e primeiros passos - Sorocódigos - Agosto-2018
Docker: introdução e primeiros passos - Sorocódigos - Agosto-2018Docker: introdução e primeiros passos - Sorocódigos - Agosto-2018
Docker: introdução e primeiros passos - Sorocódigos - Agosto-2018
 
Lidando com Equipes de Desenvolvimento
Lidando com Equipes de DesenvolvimentoLidando com Equipes de Desenvolvimento
Lidando com Equipes de Desenvolvimento
 
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
 
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
 
TDC2016POA | Trilha .NET - O que esperar do C# 7
TDC2016POA | Trilha .NET - O que esperar do C# 7TDC2016POA | Trilha .NET - O que esperar do C# 7
TDC2016POA | Trilha .NET - O que esperar do C# 7
 
Bricklayer
BricklayerBricklayer
Bricklayer
 
A nova era do desenvolvimento mobile
A nova era do desenvolvimento mobile A nova era do desenvolvimento mobile
A nova era do desenvolvimento mobile
 
Deploy mágico: o caso de sucesso do PHP'n Rio 11
Deploy mágico: o caso de sucesso do PHP'n Rio 11Deploy mágico: o caso de sucesso do PHP'n Rio 11
Deploy mágico: o caso de sucesso do PHP'n Rio 11
 
Git e contibuição com projetos open source usando GitHub
Git e contibuição com projetos open source usando GitHubGit e contibuição com projetos open source usando GitHub
Git e contibuição com projetos open source usando GitHub
 
Arquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineArquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App Engine
 

Destaque

Manual flubaroo
Manual flubarooManual flubaroo
Manual flubarooDeleos
 
Guion literario
Guion literarioGuion literario
Guion literarioGiianii29
 
Producto de la visita
Producto de la visitaProducto de la visita
Producto de la visitalchoque
 
Expresiones típicas del barrio de pescadería
Expresiones típicas del barrio de pescaderíaExpresiones típicas del barrio de pescadería
Expresiones típicas del barrio de pescaderíaArico75
 
Administracionn
Administracionn Administracionn
Administracionn KaTy Coral
 
Alimentación y salud
Alimentación y saludAlimentación y salud
Alimentación y saludVirSanJose
 
Algeris hj
Algeris  hjAlgeris  hj
Algeris hjFaqahat
 
The end part04 slides
The end  part04 slidesThe end  part04 slides
The end part04 slidesPastor Foster
 
الاتحاد الوطني للشغل بالمغرب - النشرة الأسبوعية العددين الخامس والسادس
الاتحاد الوطني للشغل بالمغرب - النشرة الأسبوعية العددين الخامس والسادسالاتحاد الوطني للشغل بالمغرب - النشرة الأسبوعية العددين الخامس والسادس
الاتحاد الوطني للشغل بالمغرب - النشرة الأسبوعية العددين الخامس والسادسKhairoun Nizar
 
Bab 2 kontrol sekuensial PLC
Bab 2 kontrol sekuensial PLCBab 2 kontrol sekuensial PLC
Bab 2 kontrol sekuensial PLCRendy Ardiwinata
 
Rol del docente especialista en dificultad del aprendizaje
Rol del docente especialista en dificultad del aprendizajeRol del docente especialista en dificultad del aprendizaje
Rol del docente especialista en dificultad del aprendizajebelkysbecerra
 

Destaque (20)

Cytarabine
CytarabineCytarabine
Cytarabine
 
Manual flubaroo
Manual flubarooManual flubaroo
Manual flubaroo
 
Wooow
WooowWooow
Wooow
 
Guion literario
Guion literarioGuion literario
Guion literario
 
Computo1
Computo1Computo1
Computo1
 
Presentación gasolina
Presentación gasolinaPresentación gasolina
Presentación gasolina
 
El aula
El aulaEl aula
El aula
 
իգոր 1.03.13
իգոր 1.03.13իգոր 1.03.13
իգոր 1.03.13
 
Producto de la visita
Producto de la visitaProducto de la visita
Producto de la visita
 
Soal a
Soal aSoal a
Soal a
 
Expresiones típicas del barrio de pescadería
Expresiones típicas del barrio de pescaderíaExpresiones típicas del barrio de pescadería
Expresiones típicas del barrio de pescadería
 
Administracionn
Administracionn Administracionn
Administracionn
 
Alimentación y salud
Alimentación y saludAlimentación y salud
Alimentación y salud
 
Contexto
ContextoContexto
Contexto
 
Algeris hj
Algeris  hjAlgeris  hj
Algeris hj
 
Somalia
SomaliaSomalia
Somalia
 
The end part04 slides
The end  part04 slidesThe end  part04 slides
The end part04 slides
 
الاتحاد الوطني للشغل بالمغرب - النشرة الأسبوعية العددين الخامس والسادس
الاتحاد الوطني للشغل بالمغرب - النشرة الأسبوعية العددين الخامس والسادسالاتحاد الوطني للشغل بالمغرب - النشرة الأسبوعية العددين الخامس والسادس
الاتحاد الوطني للشغل بالمغرب - النشرة الأسبوعية العددين الخامس والسادس
 
Bab 2 kontrol sekuensial PLC
Bab 2 kontrol sekuensial PLCBab 2 kontrol sekuensial PLC
Bab 2 kontrol sekuensial PLC
 
Rol del docente especialista en dificultad del aprendizaje
Rol del docente especialista en dificultad del aprendizajeRol del docente especialista en dificultad del aprendizaje
Rol del docente especialista en dificultad del aprendizaje
 

Semelhante a Overview de Grails: O Java em alta produtividade

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
 
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
 
Produtividade na web_com_groovy_e_grails_pt2
Produtividade na web_com_groovy_e_grails_pt2Produtividade na web_com_groovy_e_grails_pt2
Produtividade na web_com_groovy_e_grails_pt2Lucas 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
 
Google App Engine e PHP
Google App Engine e PHPGoogle App Engine e PHP
Google App Engine e PHPLuiz Messias
 
Visao geralti netshoes03
Visao geralti netshoes03Visao geralti netshoes03
Visao geralti netshoes03Ale Uehara
 
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
 
Oficina groovy grails - infoway
Oficina  groovy grails - infowayOficina  groovy grails - infoway
Oficina groovy grails - infowayLucas Aquiles
 
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
 
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
 
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
 
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
 
JavaScript Firme: Módulos com RequireJS e BDD com Jasmine
JavaScript Firme: Módulos com RequireJS e BDD com JasmineJavaScript Firme: Módulos com RequireJS e BDD com Jasmine
JavaScript Firme: Módulos com RequireJS e BDD com JasmineAndré Willik Valenti
 
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
 

Semelhante a Overview de Grails: O Java em alta produtividade (20)

Grails: O Java em Alta Produtividade
Grails: O Java em Alta ProdutividadeGrails: O Java em Alta Produtividade
Grails: O Java em Alta Produtividade
 
Curso de Grails
Curso de GrailsCurso de Grails
Curso de Grails
 
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
 
Produtividade na web_com_groovy_e_grails_pt2
Produtividade na web_com_groovy_e_grails_pt2Produtividade na web_com_groovy_e_grails_pt2
Produtividade na web_com_groovy_e_grails_pt2
 
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
 
Grails, o que isso quer dizer?
Grails, o que isso quer dizer?Grails, o que isso quer dizer?
Grails, o que isso quer dizer?
 
Google App Engine e PHP
Google App Engine e PHPGoogle App Engine e PHP
Google App Engine e PHP
 
Visao geralti netshoes03
Visao geralti netshoes03Visao geralti netshoes03
Visao geralti netshoes03
 
Visao geralti netshoes03
Visao geralti netshoes03Visao geralti netshoes03
Visao geralti netshoes03
 
Curso de Groovy
Curso de GroovyCurso de Groovy
Curso de Groovy
 
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
 
Oficina groovy grails - infoway
Oficina  groovy grails - infowayOficina  groovy grails - infoway
Oficina groovy grails - infoway
 
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
 
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
 
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 ...
 
Spring boot
Spring bootSpring boot
Spring boot
 
Meetup-Churrops
Meetup-ChurropsMeetup-Churrops
Meetup-Churrops
 
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
 
JavaScript Firme: Módulos com RequireJS e BDD com Jasmine
JavaScript Firme: Módulos com RequireJS e BDD com JasmineJavaScript Firme: Módulos com RequireJS e BDD com Jasmine
JavaScript Firme: Módulos com RequireJS e BDD com Jasmine
 
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
 

Overview de Grails: O Java em alta produtividade

  • 1. Matriz ● Cleórbete Santos ● Michael Schuenck dos Santos ● Michael Schuenck dos Santos ● Michael Schuenck dos Santos ● Michael Schuenck dos Santos ● Michael Schuenck dos Santos
  • 2. Tribunal Superior Eleitoral 04 de março de 2013 Overview de Grails O Java em alta produtividade Cleórbete Santos cleorbete@gmail.com www.cleorbete.com
  • 3. 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? ● 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? ● Principalmente que o programador ocupe-se mais na implementação do que na configuração;
  • 6. Grails é da Springsource ● Springsource? ● VMWare? ● Spring Framework -> Java | Grails -> Groovy ● Groovy?
  • 7. O que é Groovy? ● É uma linguagem OO para a plataforma Java; ● É dinâmica, como Python, Ruby, Perl, e outras; ● É compilada para bytecodes pela JVM; ● Códigos em Java são sintaticamente aceitos; ● Possui recursos como tipagem dinâmica e closures; ● É compacta em relação ao Java;
  • 8. O que é Groovy? [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? [continuação] ● // Exemplo em Groovy class Aluno { String nome }
  • 10. Um pouco de etimologia ● Significado de Grails (Groovy on Rails); ● Significado de Groovy;
  • 11. Tecnologias disponíveis em Grails ● Model: GORM – Grails Object Relational Mapping (Hibernate) ● View: GSP's – Groovy Server Pages ● Controller: Spring Framework ● Gant ● Tomcat Embedded ● (entre outras)
  • 12. Princípios do Grails ● DRY – Don't Repeat Yourself (DIE – Duplication Is Evil); ● COC – Convention Over Configuration;
  • 13. Estrutura de uma aplicação Grails ● /grails-app |---/conf |---/controllers |---/domain |---/i18n |---/services |---/views |---/(...)
  • 14. Comandos 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. Scaffolding ● É 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; ● 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;
  • 18. Scaffold Estático ● grails generate-all <domain-class>
  • 20. H2 Database Engine ● Banco de dados Lightweight, Opensource, Java puro; ● Trabalha Embedded, Server e Em memória; ● Suporta nativamente criptografia; ● Instalado como plugin, no Grails;
  • 21. DataSource.groovy ● grails-app/conf/DataSource.groovy ● Environments: ● Create-drop: apaga e (re)cria o banco. Deleta os dados existentes; ● 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
  • 23. IDE's ● Eclipse e Netbeans dão suporte ao Grails; ● Intellij; ● STS – Springsource Tool Suite; ● Notepad, GEdit...;
  • 24. Links úteis ● www.grails.org ● www.grails.org/books ● www.grailsbrasil.com.br ● www.groovymag.com
  • 25. “This is the end...” - Jim Morrison