BT

A cura, mais Groovy

por Craig Wickesser , traduzido por Felipe Rodrigues em 16 Mar 2009 |

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.

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2014 C4Media Inc.
Política de privacidade
BT