Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Groovy: linguagem dinâmica para a JVM

Avatar for ar ar
June 07, 2012

Groovy: linguagem dinâmica para a JVM

Introduz a linguagem de programação Groovy, fornecendo uma visão geral de seus fundamentos. Para complementar, será demonstrado o desenvolvimento de uma aplicação web usando o framework Grails, uma adaptação do Ruby on Rails usando Groovy como linguagem de programação.

Avatar for ar

ar

June 07, 2012
Tweet

More Decks by ar

Other Decks in Programming

Transcript

  1. Groovy: linguagem dinâmica para a JVM Flisol 2012 Arthur Ronald

    F D Garcia Consultor Java EE, Spring, JBoss Seam, Google Guice Autor Java Persistence API: object-relational mapping from scratch to legacy systems (outubro/2012) ISBN-13: 978-1468104608 ISBN-10: 1468104608 Analista desenvolvedor Java, Scala, Groovy, Python, Clojure Stackoverflow user http://www.stackoverflow.com/users/127359
  2. Groovy: linguagem dinâmica para a JVM Flisol 2012 Groovy Groovy

    é uma linguagem dinâmica para a Java Virtual Machine com o melhor das funcionalidades das linguagens Smalltalk, Python e Ruby.
  3. Groovy: linguagem dinâmica para a JVM Flisol 2012 Características ∙

    Tipagem dinâmica ou estática ∙ Suporte nativo XML ∙ Meta-programação ∙ Closures ∙ GStrings
  4. Groovy: linguagem dinâmica para a JVM Flisol 2012 Por que

    a Java Virtual Machine ? ∙ Padrão aberto ∙ Compatibilidade ∙ Solidez ∙ Ampla concorrência (IBM, Oracle, Apache)
  5. Groovy: linguagem dinâmica para a JVM Flisol 2012 Java Virtual

    Machine Scala Java Groovy Linux Windows Mac .class Java runtime
  6. Groovy: linguagem dinâmica para a JVM Flisol 2012 Groovy estático

    class Pessoa { String nome Integer idade } >> def pessoa = new Pessoa(); >> pessoa.nome = "Arthur Ronald F D Garcia"; >> pessoa.idade = 32; >> def pessoa = new Pessoa(nome:"Arthur Ronald F D Garcia", idade:32);
  7. Groovy: linguagem dinâmica para a JVM Flisol 2012 Groovy estático

    compilado public class Pessoa { private String nome; private Integer idade; public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public Intgere getIdade() { return idade; } public void setIdade(Integer idade) { this.idade = idade; } }
  8. Groovy: linguagem dinâmica para a JVM Flisol 2012 Groovy dinâmico

    class Pessoa { def nome def idade } >> def pessoa = new Pessoa(); >> pessoa.nome = "Arthur Ronald F D Garcia"; >> pessoa.idade = 32; >> def pessoa = new Pessoa(nome:"Arthur Ronald F D Garcia", idade:32);
  9. Groovy: linguagem dinâmica para a JVM Flisol 2012 Groovy dinâmico

    compilado public class Pessoa { private Object nome; private Object idade; public Object getNome() { return nome; } public void setNome(Object nome) { this.nome = nome; } public Object getIdade() { return idade; } public void setIdade(Object idade) { this.idade = idade; } } >> Object pessoa = new Pessoa(); >> ((Pessoa) pessoa).setNome("Arthur Ronald F D Garcia"); >> ((Pessoa) pessoa).setIdade(32);
  10. Groovy: linguagem dinâmica para a JVM Flisol 2012 Customizando propriedades

    class Pessoa { String nome Integer idade public void setIdade(Integer idade) { if(idade < 0) throw new IllegalStateException("Idade inválida"); this.idade = idade; } } >> def pessoa = new Pessoa(); >> pessoa.nome = "Arthur Ronald F D Garcia"; >> pessoa.idade = -1; >> def pessoa = new Pessoa(nome:"Arthur Ronald F D Garcia", idade:-1); IllegalStateException("Idade inválida");
  11. Groovy: linguagem dinâmica para a JVM Flisol 2012 GString ou

    Groovy Strings class Pessoa { String nome Integer idade def String toString() { "[nome]=${nome} [idade]=${idade}"; } } class Pessoa { def nome def idade def String toString() { "[nome]=${nome} [idade]=${idade}"; } } >> def pessoa = new Pessoa(nome:"Arthur Ronald F D Garcia", idade:32); >> println(pessoa); [nome]=Arthur Ronald F D Garcia [idade]=32
  12. Groovy: linguagem dinâmica para a JVM Flisol 2012 Closures Closures

    podem ser vistos como blocos de código executável. Na linguagem Groovy, Closures são instâncias da classe groovy.lang.Closure
  13. Groovy: linguagem dinâmica para a JVM Flisol 2012 Criando Closures

    Opção 1 Closure closure = { println("Closure é um bloco de código executável"); } Opção 2 def closure = { println("Closure é um bloco de código executável"); }
  14. Groovy: linguagem dinâmica para a JVM Flisol 2012 Closures e

    parâmetros Closures podem receber parâmetros >> def evento = { String nome -> println("Olá ${nome}"); } >> evento("Flisol 2012"); Olá Flisol 2012 Caso a Closure possua mais de um parâmetro, use vírgula para separá-los >> def evento = { String nome, Integer ano -> println("Olá ${nome} ${ano}"); } >> evento("Flisol", 2012); Olá Flisol 2012
  15. Groovy: linguagem dinâmica para a JVM Flisol 2012 Grails "Grails

    é um framework web de alta produtividade baseado na linguagem Groovy que valoriza o paradigma convenção sobre configuração, porém projetada preferencialmente para a plataforma Java" fonte: http://grails.org/ Grails abstrai • Spring framework • Hibernate Grails inclui • Servidor Jetty • Servidor de banco de dados HSQLDB
  16. Groovy: linguagem dinâmica para a JVM Flisol 2012 Instalando Grails

    http://grails.org/download 1º passo: descompacte o arquivo 2º passo: crie uma variável de ambiente GRAILS_HOME a partir da linha de comando >> sudo gedit /etc/environment 3º passo: inclua o caminho para o diretório bin na variável de ambiente PATH a partir da linha de comando >> sudo gedit /etc/environment >> GRAILS_HOME/bin
  17. Groovy: linguagem dinâmica para a JVM Flisol 2012 Criando a

    aplicação A partir da linha de comando, digite >> grails create-app funcionario funcionario grails-app conf controllers domain i18n services taglib utils views lib scripts src test web-app
  18. Groovy: linguagem dinâmica para a JVM Flisol 2012 Criando uma

    classe do domínio A partir da linha de comando, navegue para o diretório funcionario, criado previamente >> grails create-domain-class Pessoa funcionario grails-app domain funcionario Pessoa.groovy test unit funcionario PessoaTests.groovy
  19. Groovy: linguagem dinâmica para a JVM Flisol 2012 Adicionando propriedades

    à classe do domínio class Pessoa { String nome; Integer idade; static constraints = { nome(nullable:false, blank:false, maxSize:255) idade(nullable:false, blank:false, range:1..100) } } Nota: a ordem especificada na closure constraints indica o ordem na qual os atributos serão visualizados
  20. Groovy: linguagem dinâmica para a JVM Flisol 2012 Classes do

    domínio e o padrão ActiveRecord Grails insere dinamicamente diversas operações • Pessoa.count • Pessoa.delete • Pessoa.find • Pessoa.hasErrors • Pessoa.save Para maiores informações, acesse: http://grails.org/doc/latest/guide/index.html
  21. Groovy: linguagem dinâmica para a JVM Flisol 2012 Gerando o

    controlador A partir da linha de comando, navegue para o diretório funcionario >> grails create-controller Pessoa funcionario grails-app controllers funcionario PessoaController.groovy views pessoa test unit funcionario PessoaControllerTests.groovy
  22. Groovy: linguagem dinâmica para a JVM Flisol 2012 Action default

    class PessoaController { def index = {} } http://localhost:8080/funcionario/pessoa
  23. Groovy: linguagem dinâmica para a JVM Flisol 2012 Scaffolding dinâmico

    class PessoaController { static scaffold = Pessoa } Nota: static scaffold gera actions dinamicamente seguindo o padrão CRUD
  24. Groovy: linguagem dinâmica para a JVM Flisol 2012 Executando a

    aplicação A partir da linha de comando, navegue para o diretório funcionario >> grails run-app A fim de parar o servidor, use Ctrl + C
  25. Groovy: linguagem dinâmica para a JVM Flisol 2012 Scaffolding estático

    A partir da linha de comando, navegue para o diretório funcionario >> grails generate-views funcionario.Pessoa Onde funcionario.Pessoa = caminho para a classe Pessoa a partir do diretório /grails-app/domain, conforme a seguir grails-app domain funcionario Pessoa.groovy
  26. Groovy: linguagem dinâmica para a JVM Flisol 2012 Customizando as

    views A partir da linha de comando, navegue para o diretório funcionario >> grails install-templates funcionario src templates artifacts scaffolding testing war Nota: o diretório scaffolding contém os templates que poderão ser customizados
  27. Groovy: linguagem dinâmica para a JVM Flisol 2012 Customizando o

    dataSource e a URL funcionario grails-app conf DataSource.groovy UrlMappings.groovy
  28. Groovy: linguagem dinâmica para a JVM Flisol 2012 Groovy +

    Eclipse Plug-in disponível a partir da versão 3.5 Para maiores informações, acesse: http://groovy.codehaus.org/Eclipse+Plugin
  29. Groovy: linguagem dinâmica para a JVM Flisol 2012 Groovy +

    NetBeans Suporte nativo a partir da versão 6.7