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).

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.