O Metadata Facility para Java (em português: Recurso de Metadados para Java), popularmente conhecido como Anotações (Annotations), é uma especificação para a linguagem de programação Java que define uma API para anexar metadados estruturados e tipados a campos, métodos, classes e pacotes. Esses metadados indicam atributos particulares que podem ser processados por ferramentas de desenvolvimento em tempo de compilação, por ferramentas de implantação (deployment) ou por bibliotecas em tempo de execução (runtime).[1]

A especificação foi desenvolvida sob o Java Community Process como JSR 175 e foi lançada oficialmente como parte integrante do J2SE 5.0 (codinome Tiger) em 2004.[2]

Contexto Histórico

editar

Antes da introdução da JSR 175, os desenvolvedores Java utilizavam abordagens paliativas para associar metadados ao código-fonte, principalmente para configurar o comportamento de frameworks corporativos (como os antigos EJBs) ou mapeamentos de banco de dados. As duas técnicas mais comuns eram:

  • Arquivos XML externos: Separação completa da configuração em relação ao código, o que frequentemente resultava no chamado "inferno do XML" (XML hell), tornando a manutenção complexa e propensa a erros de digitação não validados pelo compilador.
  • Tags Javadoc (XDoclet): Uso de comentários especiais no código-fonte que eram processados por ferramentas de terceiros antes da compilação. Contudo, por serem apenas comentários textuais, não possuíam checagem de tipos e sumiam completamente após a compilação, impossibilitando sua leitura em tempo de execução.[3]

A JSR 175 resolveu esses problemas ao criar uma sintaxe nativa, limpa e fortemente tipada que faz parte da gramática da linguagem.

Funcionamento e Sintaxe

editar

As anotações em Java são declaradas de forma semelhante a uma interface, precedidas pelo caractere `@`. Uma vez definida, ela pode ser aplicada sobre os elementos do código:

// Declaração de uma anotação customizada
public @interface InformacaoAutor {
    String nome();
    int ano() default 2026;
}

// Aplicação da anotação sobre uma classe
@InformacaoAutor(nome = "João Silva")
public class MinhaClasse {
    // Código da classe
}

Meta-anotações

editar

A especificação introduziu "meta-anotações" (anotações aplicadas sobre outras anotações) para configurar o comportamento dos metadados:[2]

  • `@Retention`: Define até quando a anotação fica disponível. Pode ser retida apenas no código-fonte (`SOURCE`), gravada no arquivo `.class` mas ignorada pela máquina virtual (`CLASS`), ou mantida em tempo de execução (`RUNTIME`), permitindo que seja lida via Reflexão (Reflection).
  • `@Target`: Define quais elementos sintáticos podem receber a anotação (ex: apenas métodos, apenas classes, variáveis locais, etc.).

Impacto no Ecossistema Java

editar

A facilidade de metadados transformou profundamente a arquitetura de softwares em Java. Ela permitiu a transição do modelo de configuração imperativo e centralizado para o modelo declarativo. Frameworks populares como o Spring Framework (a partir da versão 2.5), Hibernate e a especificação JPA (Java Persistence API) abandonaram a dependência massiva de arquivos XML em favor de anotações como `@Entity`, `@Autowired`, `@Table` e `@Test` (utilizada no JUnit), tornando o desenvolvimento mais rápido e legível.[4]

Ver também

editar

Referências

editar

Referências

  1. Bloch, Joshua (2018). Java Eficaz 3ª ed. [S.l.]: Alta Books. ISBN 9788550804613 
  2. a b «JSR 175: A Metadata Facility for the Java Programming Language» (em inglês). Java Community Process. Consultado em 20 de maio de 2026. Cópia arquivada em 25 de abril de 2026 
  3. Deitel, Paul; Deitel, Harvey (2016). Java: Como Programar 10ª ed. [S.l.]: Pearson. ISBN 9788543004792 
  4. Armstrong, Eric (outubro de 2004). «Core Java Technologies Tech Tips: Options for Metadata» (em inglês). Oracle. Consultado em 20 de maio de 2026 

Ligações externas

editar
  • JSR 175A Metadata Facility for the Java Programming Language (em inglês)
  • JSR 250Common Annotations (Anotações comuns para Java SE e Jakarta EE) (em inglês)
  • JSR 269Pluggable Annotation Processing API (Interface para processadores de anotações em tempo de compilação) (em inglês)

📚 Artikel Terkait di Wikipedia

Programação Orientada a Atributo

com o atributo "logging". Com a inclusão do Metadata facility for Java para Linguagem de programação Java (JSR-175) no J2SE 5.0 é possível utilizar a

Annotation (java)

Plataforma Java, introduzido como padrão de linguagem na versão 1.5. (biblioteca java.lang.annotation*;). Fornece a opção do uso de metadata ao longo do

Model Driven Architecture

padrões, entre eles Unified Modeling Language (UML), o Meta-Object Facility (MOF), XML Metadata Interchange (XMI), Enterprise Distributed Object Computing (EDOC)