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

Groovy: linguagem dinâmica para a JVM

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.

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