BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Oracle ressuscita getCallerClass no Java 7: Groovy, Grails salvos da quebra

Oracle ressuscita getCallerClass no Java 7: Groovy, Grails salvos da quebra

Favoritos

A Oracle anunciou no início de julho que o método sun.reflect.Reflection.getCallerClass() seria descontinuado. Mas recentemente a empresa reverteu a decisão, como indicado no tweet do arquiteto-chefe da plataforma Java na Oracle, Mark Reinhold (com menção a Cedric Champeu e Guillaume Laforge):

Vamos reincluir o getCallerClass(int) no 7u40. O destino desse método no 8 ainda será decidido.

Cédric Champeau retuitou Reinhold com o seguinte comentário:

Boas notícias: o pessoal do JDK decidiu reverter o comportamento do getCallerClass no 1.7u40 e 1.8. O Groovy e sistemas de logging não serão quebrados.

Champeau é o principal committer da linguagem Groovy e Laforge é Líder de Desenvolvimento Groovy na SpringSource (mantenedora do Groovy).

O método sun.reflect.Reflection.getCallerClass() funciona retornando a instância da classe do método certo número de frames acima na pilha de chamadas (call stack), sendo que a própria classe Reflect representa a posição zero.

O método getCallerClass() oferece um mecanismo para determinar a classe do chamador, possibilitando implementar comportamentos "sensíveis ao chamador". Com isso, aplicações podem variar seu comportamento de acordo com a classe chamadora, ou classes acima na pilha de chamadas.

A Oracle alertou que chamadas como o getCallerClass() e muitas outras no pacote sun.* podem se mostrar frágeis e inconsistentes, por razões descritas em seu artigo "Por que desenvolvedores não devem escrever programas que chamam o pacote 'sun'". A notícia da alteração para deprecated estava sendo acompanhada no issue tracker da OTN.

Cédric Champeau alertou antecipadamente para a mudança do método para deprecated pois o Groovy depende deste método. E não é apenas o Groovy que é impactado; o Grails também. A equipe do Grails informou um bug relacionado em seu issue tracker.

O problema ia além. Usando-se ferramentas de pesquisa de código-fonte público, encontram-se dependências para o getCallerClass() em vários projetos, incluindo alguns da própria Oracle como o Jigsaw e o Lambda, e outros projetos de terceiros como o IntelliJ IDEA.

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.

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

Comentários da comunidade

  • Substituto

    by Fernando Xavier,

    Seu comentário está aguardando aprovação dos moderadores. Obrigado por participar da discussão!

    Geralmente se faz algo melhor antes de depreciar alguma coisa, anunciaram um substituto pra esse método?

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

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

BT

Seu cadastro no InfoQ está atualizado? Poderia rever suas informações?

Nota: se você alterar seu email, receberá uma mensagem de confirmação

Nome da empresa:
Cargo/papel na empresa:
Tamanho da empresa:
País:
Estado:
Você vai receber um email para validação do novo endereço. Esta janela pop-up fechará em instantes.