Novidades doGroovy 2.0
por Ismael Soares@ismaelsoaresz
sábado, 8 de setembro de 12
Referência
Esta é um resumo
escrito porGuillaume Laforge
publicado na
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 melhoriasrelacionadas 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 deerros 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 Grovvy
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