SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
Introdução ao Groovy
conceitos básicos da linguagem
        Lucas Aquiles - @lucas_aquiles


               @lucas_aquiles
Lucas Aquiles


lucasaquiles.com.br/blog

lucasaquiles@gmail.com

@Lucas_Aquiles



                    @lucas_aquiles
Roteiro
O que é Groovy?
   Instalação e Configuração
Groovy Shell / Groovy Console
Tudo é um Objeto
Sintaxe Nativa
   Classes, atributos
   Lists, Maps, Ranges
   GStrings


                           @lucas_aquiles
O Que é Groovy
Instalação e Configuração
  Download da última versão do Groovy 1.8
    http://groovy.codehaus.org/Download
  Configure o GROOVY_HOME
  Adicione ao $PATH
    $GROOVY_HOME/bin



O JAVA_HOME precisa está definido
                        @lucas_aquiles
O que é Groovy?
Linguagem Dinâmica para JVM
Um mixe de boas ideias do Ruby, Phyton,
 SmallTalk
Totalmente OO
Alta Curva de Aprendizagem
Encapsula recursos do Java5
  Annotations, Generics, Enums, static import ...

                        @lucas_aquiles
O que é Groovy
Fácil integração com libs Java
Compila diretamente para Bytecode




                     @lucas_aquiles
O que é Groovy?
É a alegria do desenvovedor Java




                    @lucas_aquiles
Quem programa em Groovy?




             @lucas_aquiles
Ok, então você programa em Java?




              @lucas_aquiles
Sim
Todo desenvolvedor Groovy é um
 Desenvolvedor Java
E todo Desenvovedor Java é um desenvolvedor
 Groovy




                   @lucas_aquiles
Um código Java




             @lucas_aquiles
Um código Groovy válido




              @lucas_aquiles
Um Groovier code!




              @lucas_aquiles
Groovy Shell / Groovy Console


                                groovyConsole




groovysh




               @lucas_aquiles
Tudo é um objeto
           Demonstração!




               @lucas_aquiles
Sintaxe
Classe, Atributos
  A tipagem dos atributos é feita dinamicament
  ; é opcional
  getters e setters são injetados automaticamente
  Assinar multiplas variáveis
  return é opcional




                        @lucas_aquiles
Sintaxe
Lists                L


  def lista = [1,2,3,5]


Maps
  def map = [pi:'piauí',ce:'ceará']


Ranges

                          @lucas_aquiles
Sintaxe
GStrings
  São Strings Interpoladas
  Uso do $ entre áspas duplas
    “${nomeDaVariavel}”




                          @lucas_aquiles
Sintaxe
Closure
  Bloco de código executável e reusável
  Ou apénas funções anônimas
    def clousure = {
            println “clousure”
      }
    Ex: clousure()




                           @lucas_aquiles
Sintaxe
Closure
  Pode receber parâmetros
  A variável it
  Pode ser passad como parâmetro




                      @lucas_aquiles
Builders
Possui um construtor de macação
  Fácil para criar arquivos xml e html
     exemplo
  Fácil para ler arquivos xml e html
     exemplo




                        @lucas_aquiles
Metaprogramação
Capacidade da classe se alterar em tempo de
 execução
injetar um comportamento em tempo de
  execução
mudar o comportamento de um tipo em tempo
 de execução



                   @lucas_aquiles
MetaProgramação
MetaClass
  Muda o tempo de um tipo em tempo de execução
Mixin
  Injeta um comportamento à um tipo em tempo de
    execução




                     @lucas_aquiles
Metaprogramação




           exemplos




             @lucas_aquiles
Duvidas?




           @lucas_aquiles

Mais conteúdo relacionado

Mais procurados

Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)Julio Monteiro
 
Slide de JAVA
Slide de JAVASlide de JAVA
Slide de JAVAEd W. Jr
 
Conhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java PlatformConhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java PlatformMilfont Consulting
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAThiago Cifani
 

Mais procurados (7)

Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)
 
A Linguagem Ruby
A Linguagem RubyA Linguagem Ruby
A Linguagem Ruby
 
Slide de JAVA
Slide de JAVASlide de JAVA
Slide de JAVA
 
Conhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java PlatformConhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java Platform
 
Palestra Ruby
Palestra RubyPalestra Ruby
Palestra Ruby
 
Ruby
RubyRuby
Ruby
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 

Semelhante a Groovy

Linguagens Dinamicas na JVM
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVMWilliam Gouvea
 
Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014Zarathon Maia
 
Três anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitorTrês anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitorFelipe Hummel
 
Criando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerCriando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerGiovanni Kenji Shiroma
 
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
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHPPaulo Dayvson
 
Poo slides01
Poo slides01Poo slides01
Poo slides01jmtofoli
 
Java Scripting - Linguagens Interpretadas pelo Java
Java Scripting - Linguagens Interpretadas pelo JavaJava Scripting - Linguagens Interpretadas pelo Java
Java Scripting - Linguagens Interpretadas pelo JavaPaulo César M Jeveaux
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Natanael Fonseca
 
(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012Luís Cobucci
 
Hypescript Typescript!! Uma breve introdução
Hypescript Typescript!!  Uma breve introduçãoHypescript Typescript!!  Uma breve introdução
Hypescript Typescript!! Uma breve introduçãoCristiano Gonçalves
 
Resumo vinculacao aula lp1 10 a
Resumo vinculacao   aula lp1 10 aResumo vinculacao   aula lp1 10 a
Resumo vinculacao aula lp1 10 aPedro Augusto
 
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO ILIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO IOs Fantasmas !
 
Desenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyDesenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyGilson Filho
 

Semelhante a Groovy (20)

Curso de Groovy
Curso de GroovyCurso de Groovy
Curso de Groovy
 
Groovy stack
Groovy stackGroovy stack
Groovy stack
 
Aprendendo ruby
Aprendendo rubyAprendendo ruby
Aprendendo ruby
 
Linguagens Dinamicas na JVM
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVM
 
Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014
 
Três anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitorTrês anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitor
 
Criando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerCriando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & Docker
 
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
 
Groovy
GroovyGroovy
Groovy
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHP
 
Poo slides01
Poo slides01Poo slides01
Poo slides01
 
Java Scripting - Linguagens Interpretadas pelo Java
Java Scripting - Linguagens Interpretadas pelo JavaJava Scripting - Linguagens Interpretadas pelo Java
Java Scripting - Linguagens Interpretadas pelo Java
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
 
Grails
GrailsGrails
Grails
 
(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012
 
Hypescript Typescript!! Uma breve introdução
Hypescript Typescript!!  Uma breve introduçãoHypescript Typescript!!  Uma breve introdução
Hypescript Typescript!! Uma breve introdução
 
Resumo vinculacao aula lp1 10 a
Resumo vinculacao   aula lp1 10 aResumo vinculacao   aula lp1 10 a
Resumo vinculacao aula lp1 10 a
 
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO ILIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
 
Desenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyDesenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2py
 
1.introducao java
1.introducao java1.introducao java
1.introducao java
 

Mais de Lucas Aquiles

Best practices in pair programming
Best practices in pair programmingBest practices in pair programming
Best practices in pair programmingLucas Aquiles
 
Pocket Talk - Onde vivem os vegans?
Pocket Talk - Onde vivem os vegans?Pocket Talk - Onde vivem os vegans?
Pocket Talk - Onde vivem os vegans?Lucas Aquiles
 
Pocket Talk - Mob programming
Pocket Talk - Mob programmingPocket Talk - Mob programming
Pocket Talk - Mob programmingLucas Aquiles
 
google maps api - v1
 google maps api - v1 google maps api - v1
google maps api - v1Lucas Aquiles
 
Criando app mobile com Google Android - Software Freedom Day 2015
Criando app mobile com Google Android - Software Freedom Day 2015 Criando app mobile com Google Android - Software Freedom Day 2015
Criando app mobile com Google Android - Software Freedom Day 2015 Lucas Aquiles
 
Oficina groovy grails - infoway
Oficina  groovy grails - infowayOficina  groovy grails - infoway
Oficina groovy grails - infowayLucas Aquiles
 
Minicurso javascript
Minicurso javascriptMinicurso javascript
Minicurso javascriptLucas Aquiles
 
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
 
Desenvolvimento de aplicações para a plataforma google android
Desenvolvimento de aplicações para a plataforma google androidDesenvolvimento de aplicações para a plataforma google android
Desenvolvimento de aplicações para a plataforma google androidLucas Aquiles
 

Mais de Lucas Aquiles (13)

Open talk micronaut
Open talk   micronautOpen talk   micronaut
Open talk micronaut
 
Best practices in pair programming
Best practices in pair programmingBest practices in pair programming
Best practices in pair programming
 
Pocket Talk - Onde vivem os vegans?
Pocket Talk - Onde vivem os vegans?Pocket Talk - Onde vivem os vegans?
Pocket Talk - Onde vivem os vegans?
 
Pocket Talk - Mob programming
Pocket Talk - Mob programmingPocket Talk - Mob programming
Pocket Talk - Mob programming
 
google maps api - v1
 google maps api - v1 google maps api - v1
google maps api - v1
 
Criando app mobile com Google Android - Software Freedom Day 2015
Criando app mobile com Google Android - Software Freedom Day 2015 Criando app mobile com Google Android - Software Freedom Day 2015
Criando app mobile com Google Android - Software Freedom Day 2015
 
Phonegap
PhonegapPhonegap
Phonegap
 
Oficina groovy grails - infoway
Oficina  groovy grails - infowayOficina  groovy grails - infoway
Oficina groovy grails - infoway
 
Minicurso javascript
Minicurso javascriptMinicurso javascript
Minicurso javascript
 
Groovy grails
Groovy grailsGroovy grails
Groovy grails
 
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
 
Desenvolvimento de aplicações para a plataforma google android
Desenvolvimento de aplicações para a plataforma google androidDesenvolvimento de aplicações para a plataforma google android
Desenvolvimento de aplicações para a plataforma google android
 
Orm android
Orm androidOrm android
Orm android
 

Groovy

  • 1. Introdução ao Groovy conceitos básicos da linguagem Lucas Aquiles - @lucas_aquiles @lucas_aquiles
  • 3. Roteiro O que é Groovy? Instalação e Configuração Groovy Shell / Groovy Console Tudo é um Objeto Sintaxe Nativa Classes, atributos Lists, Maps, Ranges GStrings @lucas_aquiles
  • 4. O Que é Groovy Instalação e Configuração Download da última versão do Groovy 1.8 http://groovy.codehaus.org/Download Configure o GROOVY_HOME Adicione ao $PATH $GROOVY_HOME/bin O JAVA_HOME precisa está definido @lucas_aquiles
  • 5. O que é Groovy? Linguagem Dinâmica para JVM Um mixe de boas ideias do Ruby, Phyton, SmallTalk Totalmente OO Alta Curva de Aprendizagem Encapsula recursos do Java5 Annotations, Generics, Enums, static import ... @lucas_aquiles
  • 6. O que é Groovy Fácil integração com libs Java Compila diretamente para Bytecode @lucas_aquiles
  • 7. O que é Groovy? É a alegria do desenvovedor Java @lucas_aquiles
  • 8. Quem programa em Groovy? @lucas_aquiles
  • 9. Ok, então você programa em Java? @lucas_aquiles
  • 10. Sim Todo desenvolvedor Groovy é um Desenvolvedor Java E todo Desenvovedor Java é um desenvolvedor Groovy @lucas_aquiles
  • 11. Um código Java @lucas_aquiles
  • 12. Um código Groovy válido @lucas_aquiles
  • 13. Um Groovier code! @lucas_aquiles
  • 14. Groovy Shell / Groovy Console groovyConsole groovysh @lucas_aquiles
  • 15. Tudo é um objeto Demonstração! @lucas_aquiles
  • 16. Sintaxe Classe, Atributos A tipagem dos atributos é feita dinamicament ; é opcional getters e setters são injetados automaticamente Assinar multiplas variáveis return é opcional @lucas_aquiles
  • 17. Sintaxe Lists L def lista = [1,2,3,5] Maps def map = [pi:'piauí',ce:'ceará'] Ranges @lucas_aquiles
  • 18. Sintaxe GStrings São Strings Interpoladas Uso do $ entre áspas duplas “${nomeDaVariavel}” @lucas_aquiles
  • 19. Sintaxe Closure Bloco de código executável e reusável Ou apénas funções anônimas def clousure = { println “clousure” } Ex: clousure() @lucas_aquiles
  • 20. Sintaxe Closure Pode receber parâmetros A variável it Pode ser passad como parâmetro @lucas_aquiles
  • 21. Builders Possui um construtor de macação Fácil para criar arquivos xml e html exemplo Fácil para ler arquivos xml e html exemplo @lucas_aquiles
  • 22. Metaprogramação Capacidade da classe se alterar em tempo de execução injetar um comportamento em tempo de execução mudar o comportamento de um tipo em tempo de execução @lucas_aquiles
  • 23. MetaProgramação MetaClass Muda o tempo de um tipo em tempo de execução Mixin Injeta um comportamento à um tipo em tempo de execução @lucas_aquiles
  • 24. Metaprogramação exemplos @lucas_aquiles
  • 25. Duvidas? @lucas_aquiles