A cura, mais Groovy
O ator Christopher Walken uma vez contou uma piada no Saturday Night Live, na qual ele declarou que precisava de mais "chocalho" para matar sua "febre". Na mesma linha, o time do Groovy certamente ouviu o pedidos por mais Grooby e recentemente liberou a versão 1.6 de sua premiada linguagem. Há um conjunto de novas funcionalidades mencionadas no release incluindo,
- grandes melhorias na performance de runtime
- multipla atribuições - return opcional em blocos if/else e try/catch
- transformações AST e todas as annotations de transformação como @Singleton, @Lazy, @Immutable, @Delegate e cia
- o módulo e sistema de dependências Grape e sua transformação @Grab
- várias melhorias no Swing builder, graças ao time do Swing/Griffon (http://griffon.codehaus.org)
- assim como várias melhorias no console Swing
- a integração do JMX builder
- engine de scripting JSR-223 embutida
- várias melhorias de metaprogramação, como a DSL EMC, metaclasses por instâncias mesmo para POJOs e mixns de runtime
Um dos focos primários neste release foi sobre performance e o time do Groovy alega ter alcançado melhorias significantes variando de 150% a 460%. Outra funcionalidade incluida neste release foi a integração oficial do JMX builder, que é apenas mais um exemplo dos esforços da comunidade para ajudar a melhorar o Groovy.
Abaixo estão alguns exemplos de várias das novas funcionalidades, incluindo atribuições múltiplas e transformações AST.
// as properties desta classe são imutáveis uma vez que o objeto seja construído
@Immutable final class ServerConfig {
String url
int port
}
def getServerInfo() {
['http://home.net', 8080]
}
// tentativa de definir uma propriedade em um objeto Immutable
def setUrl(config, newUrl) {
try {
config.url = newUrl
}
catch (ReadOnlyPropertyException ex) {
ex
}
}
// atribuiçào múltipla
def (url, port) = getServerInfo()
assert url == 'http://home.net'
assert port == 8080
def config = new ServerConfig(url, port)
assert config.url == url
assert config.port == port
// tentativa de mudaar uma property de um objeto Immutable
def result = setUrl(config, 'www.google.com')
// verifica se a alteração falhou
assert result instanceof ReadOnlyPropertyException
O exemplo acima mostra como a transformação @Immutable oferece uma forma simples de criar um objeto read-only. O exemplo também pode demonstrar o uso da nova "atribuição múltipla". Para mais informações sobre as transformações AST você pode visitar o guia do usuário do Groovy. Atualmente a sessão só cobre a transformação @Immutable.
Agora que você deu uma rápida olhada no que o Groovy 1.6 tem pra oferecer, confira O que há de novo no Groovy 1.6, um artigo mais profundo sobre o Groovy 1.6 escrito para a InfoQ pelo Gerente de Projetos do Groovy, Guillaume LaForge. Guillaume cobre cada uma das novas funcionalidades e oferece vários exemplos de código que ajudam a esclarecer todas as novas capacidades.
Conteúdo educacional
Lean na Globo.com
Bernardo Heynemann 24 Mai, 2013
Mobilidade: Frameworks, SOs e o Mercado
Ricardo Ogliari 23 Mai, 2013
Caminhos de uma estratégia mobile
Sérgio Lopes 23 Mai, 2013
Complexidade organizacional no Século 21
Alexandre Magno 16 Mai, 2013

Olá visitante
Você precisa cadastrar-se no InfoQ Brasil ou Login para enviar comentários. Há muitas vantagens em se cadastrar.Obtenha o máximo da experiência do InfoQ Brasil.
Dê sua opinião