Está disponível a Early Draft Review 2 da especificação do JSF 2. Nessa versão já podem ser vistas mudanças na FacesContext e como deve ficar a integração com Facelets.
Por exemplo, eu vou criar um Managed Bean, então eu cria a classe e a configuração dele está toda ali, junto. Acho uma vantagem isso. Sem contar que é mais facil criar uma linha com um @ na frente do que várias linhas com código XML.
[quote=marcosalex]Uma desvantagem que eu vejo é o código ficar mais “poluido”.
Outra coisa é que se você quiser alterar alguma configuração,vai ter necessariamente de recompilar sua aplicação e dar um deploy novamente, enquanto no xml seria somente editar o arquivo.[/quote]
A do fonte poluído eu até concordo, mas o deploy não…quem vai alterar alguma XML com a aplicação em produção? Na prática tudo mundo deburra -> atualiza -> levanta.
A única desvantagem que eu vejo é que as configurações ficam espalhadas. Mas nada que uma boa organização de pacotes não resolva. Prefiro assim do que editar XMLs
Olha, essas coisas são bem opiniões pessoais mesmo, mas vamos la.
Uma desvantagem que eu vejo é a dependencia entre as classes, mas isso não chega a ser problema pq dificilmente se voce começou um sistema com JSF + JPA vai do nada jogar tudo fora e mudar. E se for fazer isso, remover as anotações será o menor dos problemas.
Outra coisa que eu acho chato com anotações é que eu não consigo estender uma anotação. Deixa eu exemplificar:
Imagine que eu tenho uma classe anotada com @Entity, mas aí eu também quero anotar ela com @Bla, que é uma anotação minha, que eu fiz no meu sistema. Mas vamos supor que eu sei que vou usar essa anotação nos mesmos casos que a @Entity, mas eu não consigo subistituir a mesma pra quando o Hibernate perguntar pra minha classe se ela é um Entity o @Bla responder que sim. Como seria com um instanceof da vida dando um extends em uma interface.
Então as vezes a gente acaba tendo exemplos com um monte de anotações uma em cima da outra… porque uma define o nome do componente, outra define o escopo, e outra define como vai integrar com sei-lá o que.
Mas as vantagens no meu ponto de vista compensam. Como o marcelomartins falou, fica tudo num lugar só (classe e sua respectiva configuração), fácil de encontrar. Sem contar que além de estar no mesmo lugar aquilo é compilado e tem autocomplete. Porque se fosse ver só por estar no mesmo lugar, com XDoclet a gente já conseguia bastante coisa, mas sem dúvida (minha opinião) com anotações fica mais fácil.
Agora sobre o deploy, eu acho que a grande maioria dos frameworks que suportam anotação, continua suportando xml, e com uma precedencia maior justamente pra esses casos. Então se voce precisa mudar algo que com um xml resolve, põe lá que ele vai sobrescrever as anotações. Aí quando voce realmente precisar mudar algo, vc já atualiza as anotações se for possível.
[quote=marcosalex]Uma desvantagem que eu vejo é o código ficar mais “poluido”.
Outra coisa é que se você quiser alterar alguma configuração,vai ter necessariamente de recompilar sua aplicação e dar um deploy novamente, enquanto no xml seria somente editar o arquivo.[/quote]
Esse lance de ter que recompilar e refazer o deploy é a grande desvantagem de Annotation em relação ao XML.
Em ambientes de grandes empresa, solicitar um redeploy em uma aplicação é o equivalente a três partos normais ao mesmo tempo, de três mulheres histéricas juntas, em uma sala de três metros quadrados.
acho bastante válido. as pessoas ainda estão se acostumando, assim como o faziam com o uso de generics.
acho que aí cabe o bom censo do uso. levando em consideração que o xml sobrepõe qualquer anotação, então as configurações genericas e mais abrangentes podem ficar no xemelê, não necessitando em alguns pontos o uso de anotações.