XML VS Annotations VS Convenção
É, essa é uma briga dura. No inicio do desenvolvimento de aplicações java a tecnologia de configuração de recursos e meta-dados era com certeza o XML. E com certeza hoje acredito ainda ser, mas existe uma tecnologia ganhando cada vez mais força as Annotations introduzidas no java 5.0 e para complementar esse trio temos as convenções mais velhas que a minha avó mas cada vez crescendo mais. Este conceito de convenções está ganhando muita visibilidade com o RoR que está cada vez mais influenciando o mundo java. As configurações em arquivos XML seriam uma evoluções de configurações em arquivos texto(seqüências) como pro exemplo os .ini do windows e da microsoft. Com a entrada das Annotations se iniciou um guerra literalmente e as coisas ficarm divididas entre XML e Annotations você verá que nesse contexto temos gregos e troianos. As vantagens do XML seriam:
XML: Em casos de configurações globais que afetam toda a aplicação ou em casos de configurações globais de recursos como banco de dados,caminhos temporários, recursos, etc... resumindo em artefatos de alta granularidade. EX: Configurações de transações(Spring por exemplo)
Annotations: Em casos de configurações bem especificas para um classe bem especifico, como por exemplo configurações de mapeamento OR e configurações de baixa granularidade.EX: ORM do hibernate.
Convenções: Em casos de configurações repetidas e sem muita variação como por exemplo mapeamento de paginas WEB, ou em casos de baixa granularidade repetida. Ex mapeamentos Action do Stripes.
Então podemos perfeitamente usar as três tecnologias com harmonia. Sempre é bom utilizar as comparações mostradas por mim neste post para decidir qual tecnologia cabe melhor a cada momento, boa escolha!
Abraços.
- Possibilidade de validação através de DTD ou XSD.
- Flexibilidade
- Independência de plataforma
- Definição de formato e modularização
- Impossibilidade de refactorings usando ferramentas como eclipse
- Tempo de parser e consumo de memória
- Potencialidade de erros
- Checagem em tempo de compilação
- Facilidade para refactorings automáticos com ferramentas como o eclipse
- Solução elegante para configurações de meta-dados
- Facilidade de leitura através da própria API nativa do java.
- Menor custo de leitura do que o XML.
- É possível apenas configurar meta-dados e configurações de baixa granularidade.
- Perdemos parte da portabilidade.
- Para mudanças somos obrigados a parar a execução do server, pois as configurações estão no código.
- Possível acumulação de Annotations no mesmo lugar, perdendo modularização e clareza.
- Ganho de tempo
- Ganho de performance
- Mais produtividade e conseqüentemente menos erros de configurações
- Baixa da curva de aprendizado de tecnologias
- Necessidade de excelente documentação do funcionamento
- Possível perda de portabilidade
- Dificuldade de fazer mudanças bruscas
XML: Em casos de configurações globais que afetam toda a aplicação ou em casos de configurações globais de recursos como banco de dados,caminhos temporários, recursos, etc... resumindo em artefatos de alta granularidade. EX: Configurações de transações(Spring por exemplo)
Annotations: Em casos de configurações bem especificas para um classe bem especifico, como por exemplo configurações de mapeamento OR e configurações de baixa granularidade.EX: ORM do hibernate.
Convenções: Em casos de configurações repetidas e sem muita variação como por exemplo mapeamento de paginas WEB, ou em casos de baixa granularidade repetida. Ex mapeamentos Action do Stripes.
Então podemos perfeitamente usar as três tecnologias com harmonia. Sempre é bom utilizar as comparações mostradas por mim neste post para decidir qual tecnologia cabe melhor a cada momento, boa escolha!
Abraços.