Novidades do
                               Groovy 2.0
                                por Ismael Soares
                                 @ismaelsoaresz




sábado, 8 de setembro de 12
Referência

              Esta                                é um resumo




     escrito por                                  publicado na
                              Guillaume Laforge




sábado, 8 de setembro de 12
Funcionalidades
                                  Estáticas

                              Verificação estática de tipos

                              Compilação estática




sábado, 8 de setembro de 12
Outras melhorias
                    relacionadas a JDK 7

                              Melhorias de sintaxe

                              Suporte a instrução da JVM




sábado, 8 de setembro de 12
=



sábado, 8 de setembro de 12
Por que?

                              Java em linguagem dinâmica

                              Menos código repetitivo

                              Facilmente integrável ao Java




sábado, 8 de setembro de 12
Melhorias




sábado, 8 de setembro de 12
@TypeChecked
                     -> Pode ser utilizado na classe ou em apenas alguns métodos específicos


                     -> Caso opte por utilizar na classe e queira colocar um método como
                     exceção basta passar o parâmetro (SKIP)


                     -> O Groovy utiliza um mecanismos de transformação AST (Árvore de
                     Sintaxe Abstrata)




sábado, 8 de setembro de 12
Identificação de
                          erros de validação




                         http://www.infoq.com/br/articles/new-groovy-20 (Guillaume Laforge)




sábado, 8 de setembro de 12
Checagem de valores
                        retornados




                       http://www.infoq.com/br/articles/new-groovy-20 (Guillaume Laforge)




sábado, 8 de setembro de 12
Conversão comum de tipos




                        Inferência de tipos




sábado, 8 de setembro de 12
Características dinâmica e
                          métodos de tipagem
                                 estática

                                              Markup Builder é um
                                              criador de XML do
                                              Grov vy




sábado, 8 de setembro de 12
Mais um pouco de inferência
                          de tipos...




sábado, 8 de setembro de 12
Lowest Upper Bound
                              (Mínimo Limite superior)




                                              Que loco!




sábado, 8 de setembro de 12
Fluxo de Tipagem




sábado, 8 de setembro de 12
Fluxo de Tipagem




                                         Inteiro não tem
                                          UpperCase Zé!




sábado, 8 de setembro de 12
Um pouco mais de fluxo de
                           Tipagem...




sábado, 8 de setembro de 12
Um pouco mais de fluxo de
                           Tipagem...




                                     Você alterou a
                                   Variável. Agora me
                                         perdi!



sábado, 8 de setembro de 12
@CompileStatic




sábado, 8 de setembro de 12
Compilação estática




                              Melhora na performance

                              Bytecode igual ao gerado no javac




sábado, 8 de setembro de 12
JDK 7




sábado, 8 de setembro de 12
Literais binárias




sábado, 8 de setembro de 12
Uso underline em números




sábado, 8 de setembro de 12
Múltiplos blocos de catch




sábado, 8 de setembro de 12
Suporte a Invoke Dynamic

                              Nova instrução de bytecode

                              Auxiliar desenvolvimento de linguagens dinâmicas
                              sobre JVM

                              Chamadas de métodos dinâmicas podem ser
                              colocadas em cache

                              O Groovy tem implementações próprias otimizadas
                              para acelerar a invocação dinâmica




sábado, 8 de setembro de 12
Groovy Modular




sábado, 8 de setembro de 12
O Groovy não é apenas uma
                        linguagem!
                      Ant: para scripts do Ant, automatizando tarefas administrativas;
                  • BSF: para integração do Groovy em aplicações Java com o velho Apache Bean
                      Scripting Framework;
                  • Console: módulo contendo o console do Groovy Swing;
                  • GroovyDoc: para documentar suas classes Groovy e Java;
                  • Groovysh: módulo correspondente ao terminal de linha de comando Groovysh;
                  • JMX: para expor e consumir beans JMX;
                  • JSON: para produzir e consumir informações no formato JSON;
                  • JSR-223: para integrar o Groovy às aplicações Java através da API javax.scripting
                      do JDK 6 ou superior;
                  • Servlet: para escrever e disponibilizar templates e scripts de servlets do Groovy;
                  • SQL: para consultar bases relacionais;
                  • Swing: para construção de interfaces gráficas usando o Swing;
                  • Templates: para uso do mecanismo de templates;
                  • Test: para suporte a testes, como o GroovyTestCase, mocking e mais;
                  • TestNG: para escrever testes usando o TesteNG no Groovy;
                  • XML: para produzir e consumir documentos em XML.




sábado, 8 de setembro de 12
Módulos de extensão


                      Como o Groovy foi dividido em módulos menores, foi
                      criado um mecanismo para que módulos possam
                      contribuir com métodos de extensão. Dessa forma, esses
                      módulos podem fornecer métodos de instância e
                      métodos estáticos para outras classes, incluindo
                      classes do JDK e de bibliotecas de terceiros.




sábado, 8 de setembro de 12
Que loco!




sábado, 8 de setembro de 12
Decorando com
                              métodos estáticos




sábado, 8 de setembro de 12
Configuração módulo de
                                 extensão



                      -> Criar arquivo no META-INF/services
                      org.codehaus.groovy.runtime.ExtensionModule




sábado, 8 de setembro de 12
?
sábado, 8 de setembro de 12
Obrigado




sábado, 8 de setembro de 12

Novidades Groovy 2.0

  • 1.
    Novidades do Groovy 2.0 por Ismael Soares @ismaelsoaresz sábado, 8 de setembro de 12
  • 2.
    Referência Esta é um resumo escrito por publicado na Guillaume Laforge sábado, 8 de setembro de 12
  • 3.
    Funcionalidades Estáticas Verificação estática de tipos Compilação estática sábado, 8 de setembro de 12
  • 4.
    Outras melhorias relacionadas a JDK 7 Melhorias de sintaxe Suporte a instrução da JVM sábado, 8 de setembro de 12
  • 5.
    = sábado, 8 desetembro de 12
  • 6.
    Por que? Java em linguagem dinâmica Menos código repetitivo Facilmente integrável ao Java sábado, 8 de setembro de 12
  • 7.
  • 8.
    @TypeChecked -> Pode ser utilizado na classe ou em apenas alguns métodos específicos -> Caso opte por utilizar na classe e queira colocar um método como exceção basta passar o parâmetro (SKIP) -> O Groovy utiliza um mecanismos de transformação AST (Árvore de Sintaxe Abstrata) sábado, 8 de setembro de 12
  • 9.
    Identificação de erros de validação http://www.infoq.com/br/articles/new-groovy-20 (Guillaume Laforge) sábado, 8 de setembro de 12
  • 10.
    Checagem de valores retornados http://www.infoq.com/br/articles/new-groovy-20 (Guillaume Laforge) sábado, 8 de setembro de 12
  • 11.
    Conversão comum detipos Inferência de tipos sábado, 8 de setembro de 12
  • 12.
    Características dinâmica e métodos de tipagem estática Markup Builder é um criador de XML do Grov vy sábado, 8 de setembro de 12
  • 13.
    Mais um poucode inferência de tipos... sábado, 8 de setembro de 12
  • 14.
    Lowest Upper Bound (Mínimo Limite superior) Que loco! sábado, 8 de setembro de 12
  • 15.
    Fluxo de Tipagem sábado,8 de setembro de 12
  • 16.
    Fluxo de Tipagem Inteiro não tem UpperCase Zé! sábado, 8 de setembro de 12
  • 17.
    Um pouco maisde fluxo de Tipagem... sábado, 8 de setembro de 12
  • 18.
    Um pouco maisde fluxo de Tipagem... Você alterou a Variável. Agora me perdi! sábado, 8 de setembro de 12
  • 19.
  • 20.
    Compilação estática Melhora na performance Bytecode igual ao gerado no javac sábado, 8 de setembro de 12
  • 21.
    JDK 7 sábado, 8de setembro de 12
  • 22.
  • 23.
    Uso underline emnúmeros sábado, 8 de setembro de 12
  • 24.
    Múltiplos blocos decatch sábado, 8 de setembro de 12
  • 25.
    Suporte a InvokeDynamic Nova instrução de bytecode Auxiliar desenvolvimento de linguagens dinâmicas sobre JVM Chamadas de métodos dinâmicas podem ser colocadas em cache O Groovy tem implementações próprias otimizadas para acelerar a invocação dinâmica sábado, 8 de setembro de 12
  • 26.
    Groovy Modular sábado, 8de setembro de 12
  • 27.
    O Groovy nãoé apenas uma linguagem! Ant: para scripts do Ant, automatizando tarefas administrativas; • BSF: para integração do Groovy em aplicações Java com o velho Apache Bean Scripting Framework; • Console: módulo contendo o console do Groovy Swing; • GroovyDoc: para documentar suas classes Groovy e Java; • Groovysh: módulo correspondente ao terminal de linha de comando Groovysh; • JMX: para expor e consumir beans JMX; • JSON: para produzir e consumir informações no formato JSON; • JSR-223: para integrar o Groovy às aplicações Java através da API javax.scripting do JDK 6 ou superior; • Servlet: para escrever e disponibilizar templates e scripts de servlets do Groovy; • SQL: para consultar bases relacionais; • Swing: para construção de interfaces gráficas usando o Swing; • Templates: para uso do mecanismo de templates; • Test: para suporte a testes, como o GroovyTestCase, mocking e mais; • TestNG: para escrever testes usando o TesteNG no Groovy; • XML: para produzir e consumir documentos em XML. sábado, 8 de setembro de 12
  • 28.
    Módulos de extensão Como o Groovy foi dividido em módulos menores, foi criado um mecanismo para que módulos possam contribuir com métodos de extensão. Dessa forma, esses módulos podem fornecer métodos de instância e métodos estáticos para outras classes, incluindo classes do JDK e de bibliotecas de terceiros. sábado, 8 de setembro de 12
  • 29.
    Que loco! sábado, 8de setembro de 12
  • 30.
    Decorando com métodos estáticos sábado, 8 de setembro de 12
  • 31.
    Configuração módulo de extensão -> Criar arquivo no META-INF/services org.codehaus.groovy.runtime.ExtensionModule sábado, 8 de setembro de 12
  • 32.
    ? sábado, 8 desetembro de 12
  • 33.
    Obrigado sábado, 8 desetembro de 12