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.

Avalie esse artigo

Relevância
Estilo/Redação

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
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.