SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013Giovanni Bassi
 
O que move a web atualmente?
O que move a web atualmente?O que move a web atualmente?
O que move a web atualmente?Fabio Janiszevski
 
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
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVinícius Krolow
 
JavaScript - #Aula03 parte 03 - Bichinho Virtual - Respondendo Perguntas
JavaScript - #Aula03 parte 03 - Bichinho Virtual - Respondendo PerguntasJavaScript - #Aula03 parte 03 - Bichinho Virtual - Respondendo Perguntas
JavaScript - #Aula03 parte 03 - Bichinho Virtual - Respondendo PerguntasErick L. F.
 
Fazendo uma manada de elefantes passar por baixo da porta
Fazendo uma manada de elefantes passar por baixo da portaFazendo uma manada de elefantes passar por baixo da porta
Fazendo uma manada de elefantes passar por baixo da portaFabio Telles Rodriguez
 
[Campus code] Boas práticas em Rails
[Campus code] Boas práticas em Rails[Campus code] Boas práticas em Rails
[Campus code] Boas práticas em Railsfabio perrella
 
Testes de integração em microservices
Testes de integração em microservicesTestes de integração em microservices
Testes de integração em microservicesClaudenir Freitas
 
Prazer,Ruby On Rails
Prazer,Ruby On RailsPrazer,Ruby On Rails
Prazer,Ruby On RailsAlberto Leal
 
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
 
PHP de alta performance com RoadRunner
PHP de alta performance com RoadRunnerPHP de alta performance com RoadRunner
PHP de alta performance com RoadRunnerLeonardo Tumadjian
 
Palestra: Introdução à TypeScript & Features Ts 2.x
Palestra: Introdução à TypeScript & Features Ts 2.x Palestra: Introdução à TypeScript & Features Ts 2.x
Palestra: Introdução à TypeScript & Features Ts 2.x Glaucia Lemos
 

Mais procurados (20)

TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013
 
O que move a web atualmente?
O que move a web atualmente?O que move a web atualmente?
O que move a web atualmente?
 
JavaFX 2
JavaFX 2JavaFX 2
JavaFX 2
 
PostgreSQL Rock Star
PostgreSQL Rock StarPostgreSQL Rock Star
PostgreSQL Rock Star
 
Grails, o que isso quer dizer?
Grails, o que isso quer dizer?Grails, o que isso quer dizer?
Grails, o que isso quer dizer?
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizado
 
JavaScript - #Aula03 parte 03 - Bichinho Virtual - Respondendo Perguntas
JavaScript - #Aula03 parte 03 - Bichinho Virtual - Respondendo PerguntasJavaScript - #Aula03 parte 03 - Bichinho Virtual - Respondendo Perguntas
JavaScript - #Aula03 parte 03 - Bichinho Virtual - Respondendo Perguntas
 
Postgres Chainsaw Massacre
Postgres Chainsaw MassacrePostgres Chainsaw Massacre
Postgres Chainsaw Massacre
 
Fazendo uma manada de elefantes passar por baixo da porta
Fazendo uma manada de elefantes passar por baixo da portaFazendo uma manada de elefantes passar por baixo da porta
Fazendo uma manada de elefantes passar por baixo da porta
 
[Campus code] Boas práticas em Rails
[Campus code] Boas práticas em Rails[Campus code] Boas práticas em Rails
[Campus code] Boas práticas em Rails
 
Curso de Groovy
Curso de GroovyCurso de Groovy
Curso de Groovy
 
Testes de integração em microservices
Testes de integração em microservicesTestes de integração em microservices
Testes de integração em microservices
 
Object calisthenics
Object calisthenicsObject calisthenics
Object calisthenics
 
Oracle x PostgreSQL
Oracle x PostgreSQLOracle x PostgreSQL
Oracle x PostgreSQL
 
Prazer,Ruby On Rails
Prazer,Ruby On RailsPrazer,Ruby On Rails
Prazer,Ruby On Rails
 
Java Scripting - Linguagens Interpretadas pelo Java
Java Scripting - Linguagens Interpretadas pelo JavaJava Scripting - Linguagens Interpretadas pelo Java
Java Scripting - Linguagens Interpretadas pelo Java
 
PHP de alta performance com RoadRunner
PHP de alta performance com RoadRunnerPHP de alta performance com RoadRunner
PHP de alta performance com RoadRunner
 
Palestra: Introdução à TypeScript & Features Ts 2.x
Palestra: Introdução à TypeScript & Features Ts 2.x Palestra: Introdução à TypeScript & Features Ts 2.x
Palestra: Introdução à TypeScript & Features Ts 2.x
 
Curso javascript básico
Curso javascript básicoCurso javascript básico
Curso javascript básico
 
Curso de Grails
Curso de GrailsCurso de Grails
Curso de Grails
 

Destaque

DevCamp 2016
DevCamp 2016DevCamp 2016
DevCamp 2016Ismael
 
Refactoring Databases - Estrategias
Refactoring Databases - EstrategiasRefactoring Databases - Estrategias
Refactoring Databases - EstrategiasIsmael
 
Quando a tecnologia se torna um problema
Quando a tecnologia se torna um problemaQuando a tecnologia se torna um problema
Quando a tecnologia se torna um problemaIsmael
 
Feedback dos Testes
Feedback dos TestesFeedback dos Testes
Feedback dos TestesIsmael
 
Conceitos por trás do Ágil
Conceitos por trás do ÁgilConceitos por trás do Ágil
Conceitos por trás do ÁgilIsmael
 
Padrões de deploy para DevOps e Entrega Contínua
Padrões de deploy para DevOps e Entrega ContínuaPadrões de deploy para DevOps e Entrega Contínua
Padrões de deploy para DevOps e Entrega ContínuaDanilo Sato
 
Conceitos gerais de etl - Qlikview
Conceitos gerais de etl - QlikviewConceitos gerais de etl - Qlikview
Conceitos gerais de etl - QlikviewRoberto Oliveira
 

Destaque (7)

DevCamp 2016
DevCamp 2016DevCamp 2016
DevCamp 2016
 
Refactoring Databases - Estrategias
Refactoring Databases - EstrategiasRefactoring Databases - Estrategias
Refactoring Databases - Estrategias
 
Quando a tecnologia se torna um problema
Quando a tecnologia se torna um problemaQuando a tecnologia se torna um problema
Quando a tecnologia se torna um problema
 
Feedback dos Testes
Feedback dos TestesFeedback dos Testes
Feedback dos Testes
 
Conceitos por trás do Ágil
Conceitos por trás do ÁgilConceitos por trás do Ágil
Conceitos por trás do Ágil
 
Padrões de deploy para DevOps e Entrega Contínua
Padrões de deploy para DevOps e Entrega ContínuaPadrões de deploy para DevOps e Entrega Contínua
Padrões de deploy para DevOps e Entrega Contínua
 
Conceitos gerais de etl - Qlikview
Conceitos gerais de etl - QlikviewConceitos gerais de etl - Qlikview
Conceitos gerais de etl - Qlikview
 

Semelhante a Novidades Groovy 2.0

Testes, deploy e integração continua com Python e Django
Testes, deploy e integração continua com Python e DjangoTestes, deploy e integração continua com Python e Django
Testes, deploy e integração continua com Python e Djangofabiocerqueira
 
IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
 IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando... IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...Diego Santos
 
.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers
.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers
.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsersGustavo Bellini Bigardi
 
Infraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveInfraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveJose Augusto Carvalho
 
App Web Escalaveis Fisl
App Web Escalaveis FislApp Web Escalaveis Fisl
App Web Escalaveis FislElton Minetto
 
Tutorial java script orientado à objeto e jquery
Tutorial java script orientado à objeto e jqueryTutorial java script orientado à objeto e jquery
Tutorial java script orientado à objeto e jqueryLuan Campos
 
JAVA: Muito mais que uma linguagem
JAVA: Muito mais que uma linguagemJAVA: Muito mais que uma linguagem
JAVA: Muito mais que uma linguagemliverig
 
Tendências do Mercado de Internet
Tendências do Mercado de InternetTendências do Mercado de Internet
Tendências do Mercado de InternetVanessa Oliveira
 
Demoiselle 3 Está chegando a hora
Demoiselle 3 Está chegando a horaDemoiselle 3 Está chegando a hora
Demoiselle 3 Está chegando a horaVanderson Silva
 
Linguagens Dinamicas na JVM
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVMWilliam Gouvea
 
Produtividade em Java com Grails
Produtividade em Java com GrailsProdutividade em Java com Grails
Produtividade em Java com GrailsWanderson Oliveira
 
XML Free Programming - Brazil
XML Free Programming - BrazilXML Free Programming - Brazil
XML Free Programming - BrazilStephen Chin
 
Canal Coding Night - Sua primeira aplicação com Blazor
Canal Coding Night - Sua primeira aplicação com BlazorCanal Coding Night - Sua primeira aplicação com Blazor
Canal Coding Night - Sua primeira aplicação com BlazorGustavo Bellini Bigardi
 
Resolvendo problemas de dependências com o Bundler
Resolvendo problemas de dependências com o BundlerResolvendo problemas de dependências com o Bundler
Resolvendo problemas de dependências com o BundlerFrevo on Rails
 
Resolvendo problemas com o Bbundler
Resolvendo problemas com o BbundlerResolvendo problemas com o Bbundler
Resolvendo problemas com o BbundlerRodrigo Alves Vieira
 
JDK8: Lambda, Jigsaw e novidades
JDK8: Lambda, Jigsaw e novidadesJDK8: Lambda, Jigsaw e novidades
JDK8: Lambda, Jigsaw e novidadesEder Magalhães
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsVinicius Reis
 

Semelhante a Novidades Groovy 2.0 (20)

Testes, deploy e integração continua com Python e Django
Testes, deploy e integração continua com Python e DjangoTestes, deploy e integração continua com Python e Django
Testes, deploy e integração continua com Python e Django
 
IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
 IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando... IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
 
.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers
.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers
.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers
 
Infraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveInfraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e Mcollective
 
App Web Escalaveis Fisl
App Web Escalaveis FislApp Web Escalaveis Fisl
App Web Escalaveis Fisl
 
Tutorial java script orientado à objeto e jquery
Tutorial java script orientado à objeto e jqueryTutorial java script orientado à objeto e jquery
Tutorial java script orientado à objeto e jquery
 
JAVA: Muito mais que uma linguagem
JAVA: Muito mais que uma linguagemJAVA: Muito mais que uma linguagem
JAVA: Muito mais que uma linguagem
 
Tendências do Mercado de Internet
Tendências do Mercado de InternetTendências do Mercado de Internet
Tendências do Mercado de Internet
 
Demoiselle 3 Está chegando a hora
Demoiselle 3 Está chegando a horaDemoiselle 3 Está chegando a hora
Demoiselle 3 Está chegando a hora
 
Linguagens Dinamicas na JVM
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVM
 
Produtividade em Java com Grails
Produtividade em Java com GrailsProdutividade em Java com Grails
Produtividade em Java com Grails
 
XML Free Programming - Brazil
XML Free Programming - BrazilXML Free Programming - Brazil
XML Free Programming - Brazil
 
Canal Coding Night - Sua primeira aplicação com Blazor
Canal Coding Night - Sua primeira aplicação com BlazorCanal Coding Night - Sua primeira aplicação com Blazor
Canal Coding Night - Sua primeira aplicação com Blazor
 
Resolvendo problemas de dependências com o Bundler
Resolvendo problemas de dependências com o BundlerResolvendo problemas de dependências com o Bundler
Resolvendo problemas de dependências com o Bundler
 
Resolvendo problemas com o Bbundler
Resolvendo problemas com o BbundlerResolvendo problemas com o Bbundler
Resolvendo problemas com o Bbundler
 
JDK8: Lambda, Jigsaw e novidades
JDK8: Lambda, Jigsaw e novidadesJDK8: Lambda, Jigsaw e novidades
JDK8: Lambda, Jigsaw e novidades
 
Seu site voando
Seu site voandoSeu site voando
Seu site voando
 
Groovy Power
Groovy PowerGroovy Power
Groovy Power
 
Puppet Cloud IaaS
Puppet Cloud IaaSPuppet Cloud IaaS
Puppet Cloud IaaS
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
 

Mais de Ismael

TDC 2020 - Trilha de Management 3.0 e Gestão Ágil
TDC 2020 - Trilha de Management 3.0 e Gestão ÁgilTDC 2020 - Trilha de Management 3.0 e Gestão Ágil
TDC 2020 - Trilha de Management 3.0 e Gestão ÁgilIsmael
 
Introducao ao Pensamento Sistemico
Introducao ao Pensamento SistemicoIntroducao ao Pensamento Sistemico
Introducao ao Pensamento SistemicoIsmael
 
Testes de unidade alem do basico
Testes de unidade alem do basicoTestes de unidade alem do basico
Testes de unidade alem do basicoIsmael
 
Bluesoft Culture
Bluesoft CultureBluesoft Culture
Bluesoft CultureIsmael
 
Como dar e receber feedbacks
Como dar e receber feedbacksComo dar e receber feedbacks
Como dar e receber feedbacksIsmael
 
Eficiencia de fluxo
Eficiencia de fluxoEficiencia de fluxo
Eficiencia de fluxoIsmael
 
Como você testa seu software TDC 2017
Como você testa seu software  TDC 2017Como você testa seu software  TDC 2017
Como você testa seu software TDC 2017Ismael
 
Como ter Entregas Frequentes
Como ter Entregas FrequentesComo ter Entregas Frequentes
Como ter Entregas FrequentesIsmael
 
JUnit 5 vs JUnit 4
JUnit 5 vs JUnit 4JUnit 5 vs JUnit 4
JUnit 5 vs JUnit 4Ismael
 
Boas Praticas de Testes, Bad Smell e Outros Macetes
Boas Praticas de Testes, Bad Smell e Outros MacetesBoas Praticas de Testes, Bad Smell e Outros Macetes
Boas Praticas de Testes, Bad Smell e Outros MacetesIsmael
 
8 passos para mudança de John Kotter
8 passos para mudança de John Kotter8 passos para mudança de John Kotter
8 passos para mudança de John KotterIsmael
 
Curva da Mudança Kubler-Ross
Curva da Mudança Kubler-RossCurva da Mudança Kubler-Ross
Curva da Mudança Kubler-RossIsmael
 
7 Caracteristicas de um bom Lider Agil
7 Caracteristicas de um bom Lider Agil7 Caracteristicas de um bom Lider Agil
7 Caracteristicas de um bom Lider AgilIsmael
 
Law of demeter
Law of demeterLaw of demeter
Law of demeterIsmael
 
Junit Lambda
Junit LambdaJunit Lambda
Junit LambdaIsmael
 
Refactoring Databases - parte 1
Refactoring Databases - parte 1Refactoring Databases - parte 1
Refactoring Databases - parte 1Ismael
 
Como você testa seu software
Como você testa seu softwareComo você testa seu software
Como você testa seu softwareIsmael
 
Conceitos Historias do Usuario
Conceitos Historias do UsuarioConceitos Historias do Usuario
Conceitos Historias do UsuarioIsmael
 
Inove suas retrospectivas
Inove suas retrospectivasInove suas retrospectivas
Inove suas retrospectivasIsmael
 
Truques da mente
Truques da menteTruques da mente
Truques da menteIsmael
 

Mais de Ismael (20)

TDC 2020 - Trilha de Management 3.0 e Gestão Ágil
TDC 2020 - Trilha de Management 3.0 e Gestão ÁgilTDC 2020 - Trilha de Management 3.0 e Gestão Ágil
TDC 2020 - Trilha de Management 3.0 e Gestão Ágil
 
Introducao ao Pensamento Sistemico
Introducao ao Pensamento SistemicoIntroducao ao Pensamento Sistemico
Introducao ao Pensamento Sistemico
 
Testes de unidade alem do basico
Testes de unidade alem do basicoTestes de unidade alem do basico
Testes de unidade alem do basico
 
Bluesoft Culture
Bluesoft CultureBluesoft Culture
Bluesoft Culture
 
Como dar e receber feedbacks
Como dar e receber feedbacksComo dar e receber feedbacks
Como dar e receber feedbacks
 
Eficiencia de fluxo
Eficiencia de fluxoEficiencia de fluxo
Eficiencia de fluxo
 
Como você testa seu software TDC 2017
Como você testa seu software  TDC 2017Como você testa seu software  TDC 2017
Como você testa seu software TDC 2017
 
Como ter Entregas Frequentes
Como ter Entregas FrequentesComo ter Entregas Frequentes
Como ter Entregas Frequentes
 
JUnit 5 vs JUnit 4
JUnit 5 vs JUnit 4JUnit 5 vs JUnit 4
JUnit 5 vs JUnit 4
 
Boas Praticas de Testes, Bad Smell e Outros Macetes
Boas Praticas de Testes, Bad Smell e Outros MacetesBoas Praticas de Testes, Bad Smell e Outros Macetes
Boas Praticas de Testes, Bad Smell e Outros Macetes
 
8 passos para mudança de John Kotter
8 passos para mudança de John Kotter8 passos para mudança de John Kotter
8 passos para mudança de John Kotter
 
Curva da Mudança Kubler-Ross
Curva da Mudança Kubler-RossCurva da Mudança Kubler-Ross
Curva da Mudança Kubler-Ross
 
7 Caracteristicas de um bom Lider Agil
7 Caracteristicas de um bom Lider Agil7 Caracteristicas de um bom Lider Agil
7 Caracteristicas de um bom Lider Agil
 
Law of demeter
Law of demeterLaw of demeter
Law of demeter
 
Junit Lambda
Junit LambdaJunit Lambda
Junit Lambda
 
Refactoring Databases - parte 1
Refactoring Databases - parte 1Refactoring Databases - parte 1
Refactoring Databases - parte 1
 
Como você testa seu software
Como você testa seu softwareComo você testa seu software
Como você testa seu software
 
Conceitos Historias do Usuario
Conceitos Historias do UsuarioConceitos Historias do Usuario
Conceitos Historias do Usuario
 
Inove suas retrospectivas
Inove suas retrospectivasInove suas retrospectivas
Inove suas retrospectivas
 
Truques da mente
Truques da menteTruques da mente
Truques da mente
 

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 de setembro 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. Melhorias sábado, 8 de setembro de 12
  • 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 de tipos 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 pouco de 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 mais de fluxo de Tipagem... sábado, 8 de setembro de 12
  • 18. Um pouco mais de fluxo de Tipagem... Você alterou a Variável. Agora me perdi! sábado, 8 de setembro de 12
  • 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, 8 de setembro de 12
  • 22. Literais binárias sábado, 8 de setembro de 12
  • 23. Uso underline em números sábado, 8 de setembro de 12
  • 24. Múltiplos blocos de catch sábado, 8 de setembro de 12
  • 25. 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
  • 26. Groovy Modular sábado, 8 de 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, 8 de 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 de setembro de 12
  • 33. Obrigado sábado, 8 de setembro de 12