BT

Injeção de Dependência em harmonia para o Java EE 6

por Geoffrey Wiseman , traduzido por Victor Franzonatto em 08 Set 2009 |

No início deste ano, o Google Guice e SpringSource anunciaram que estavam cooperando em um padrão de anotações para serem utilizadas para injeção de dependência, os quais foram propostas através da JSR-330. Estas anotações não se alinhavam com as propostas na JSR-299, o que gerou controvérsia agora já resolvida, com a JSR-299 adotando as anotações da JSR-330 e ambas avançando para fazer parte do Java EE 6.

Algumas das preocupações iniciais e discussões em torno do conflito entre as propostas incluía:

  • Gavin King: Acho que seria um grande erro introduzir uma segunda série de anotações que são semanticamente idênticas as da 299 e abordam exatamente o mesmo problema
  • Bob Lee: Embora a 299 poder ser bem aplicável para pequenas aplicações EE e exemplos bonitinhos, a sua configuração global e da falta de explicitação torna impróprios para as aplicações multi-milhões de linhas como temos no Google. Podemos facilmente suportar o estilo de configuração da 299 no topo do Guice, mas não podemos fazer tudo o que fazemos com Guice utilizando a 299. Não temos nenhuma razão para mudar. Pessoalmente, acho que você inovou demasiadamente na 299 e não compreendeu plenamente as implicações na manutenção dos códigos dos usuários.
  • Alex Miller: "esta proposta está perigosamente próxima do território de JSR 299",
  • Antonio Goncalves: "Eu espero que não iniciemos uma nova batalha como a entre Java Module (JSR 277) e Modularity Support (JSR 294)"
  • Rickard Öberg discordou com a abordagem: em vez de ter algo como uma anotação genérica @Inject, o que pode significar qualquer coisa e, portanto, nada, temos optado por utilizar anotações que especificam o escopo do objeto alvo

JSR-330 foi aprovada em sua JSR review, mas um número de eleitores enfatizou a necessidade de harmonia entre as duas especificações:

  • Sun: Neste sentido, solicitamos que esta JSR e a JSR-299 coordenem os seus esforços para que possam entregar um conjunto único, consistente e compreensível padrão de injeção de dependência para as plataformas SE e EE. Essa coordenação deve ter lugar antes da revisão pública da presente JSR.
  • Red Hat: No entanto, reconhecemos que existe um certo suporte da comunidade para esta proposta e estamos, portanto, nos segurando para formar um parecer final até o Expert Group elaborar um draft público. Se algum nível de alinhamento pode ser alcançado entre esta JSR e a JSR-299, que define um modelo verdadeiramente portável para injeção de dependência, nós estaríamos mais propensos a votar para aprovar a JSR. Red Hat decide assumir o compromisso de fazer a nossa parte para ajudar a alcançar este resultado.
  • Ericsson: Apoiamos o esforço para padronizar a injeção de dependência para o Java SE, mas gostaríamos de salientar a importância da coordenação com a JSR 299 para obter uma solução consistente para ambos Java SE e EE.
  • IBM: A IBM concorda com a necessidade de uma especificação descrevendo Injeção de Dependência para aplicações SE. No entanto, os padrão de injeção propostos são divergentes daqueles definidos ou a serem definidos na plataforma EE.O modelo de programação para injeção SE/EE devem ser alinhadas em um único modelo extensível, que defina um core de funcionalidades para SE e que estenda-se com funcionalidades EE. Portanto, a IBM não irá apoiará nenhuma, seja JSR 299 ou 330, indo a um estado final sem o alinhamento.
  • Oracle: Embora seja solidário com esta JSR, a Oracle está seriamente preocupada com a integralidade das propostas, bem como a oportunidade significativa para a divergência com a JSR 299 que podem levar a uma grave fragmentação das plataformas. Por isso, gostaríamos de ver a articulação entre esta JSR e a JSR 299 antes desta JSR ir para revisão pública. Nós também acreditamos que uma revisão/Manutenção de Lançamento da JSR 250 seria um mecanismo de entrega adequado para anotações relacionadas a ID. Esperamos que tal esforço coordenado resultará na coerência entre as plataformas SE e EE em fornecerem um padrão de injeção dependência que satisfaça todas as necessidades.

O conflito entre estas especificações foi resolvido. JSR-330, "Injeção de Dependência para Java" e JSR-299 "Contextos e Injeção de Dependência para a plataforma Java EE" foram harmonizadas, JSR-299 irá adotar as anotações da JSR-330, e ambos serão parte do Java Enterprise Edition 6. A reação da comunidade parece ser positiva (Matt Corey, Jeremy Norris, Alex Miller, Oliver Gierki, Niklas Gustavsson).

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 menssagens dessa discussão
Comentários da comunidade

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

Receber menssagens dessa discussão

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

Receber menssagens 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