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

XDoclet

tecnologias: Java EE, Web services, Portlet etc. Foi largamente utilizado com o Java 1.4, porém, quando o Java 5 foi lançado, trouxe nativo os Annotations o que

Hibernate

patternizando.com.br  «Hibernate». no JavaFree Wiki  «Pequeno tutorial». www.javafree.org  «Relatórios com Hibernate Annotations». www.javafree.org  «Entrevista

YouTube

inativa]  «How do I create or edit video annotations?». YouTube. Consultado em 4 de junho de 2008  «Video Annotations Now Display On Embeds». YouTube blog 

Megascolia procer

1103/PhysRevE.78.051902  Betrem, J. G.; Bradley, J. Chester (1964). «Annotations on the genera Triscolia, Megascolia and Scolia (Hymenoptera, Scoliidae)»

Torre de Babel

dezembro de 2012  Levenson, Jon D. (2004). «Genesis: Introduction and Annotations». In: Berlin; Brettler. The Jewish Study Bible (em inglês). [S.l.]: Oxford

Spring Framework

uma anotação que está em conformidade com o JSR 250, ou Common Annotations for the Java Platform, e é usada para autowiring de referências a POJOs por

Arroba (símbolo)

reservadas da linguagem sejam usadas. A partir do Java 5.0 o símbolo é usado para criar Annotations. Em Pascal, é um operador que retorna o endereço de

PDF.js

PDF.js é uma biblioteca JavaScript que renderiza arquivos PDF (Portable Document Format) usando o HTML5 Canvas compatível com os padrões da web. O projeto