Annotation (Java)
# Annotation (Java)

En programmation, une annotation Java est une façon d'ajouter des méta-données à un code source Java. Elles peuvent être ajoutées aux classes, méthodes, attributs, paramètres, variables locales et paquets.

## Historique des annotations Java

Les annotations Java ont été introduites en 2002 à travers le JCP (JSR-175) et ont été approuvées en septembre 2004. Les annotations sont disponibles avec le JDK version 1.5.

Elles ont été introduites en tant qu'alternative aux fichiers de configuration XML. Elles trouvent leurs sources dans les libellés ajoutés directement dans la documentation Java (Javadoc) qui sont ensuite traitées par des outils tels que XDoclet pour générer les fichiers de configuration XML. Ceci évite d'écrire ces fichiers à la main car c'est un procédé ennuyeux et sujet à erreur.

Contrairement aux libellés XDoclet, les annotations Java peuvent (si besoin) être accessibles au programmeur lors de l'exécution du programme grâce à la réflexion.

## Comment les annotations Java sont traitées

Lors de la compilation des codes sources, le compilateur Java stocke les méta-données d'annotation dans les fichiers classes. Plus tard, la JVM ou d'autres programmes peuvent accéder à ces méta-données pour déterminer comment interagir avec les composants du programme ou changer leur comportement. Les annotations (que vous pouvez créer) peuvent être elles-mêmes annotées avec une annotation Retention qui indique si cette annotation doit être embarquée dans le fichier classe, accessible dans l'environnement d'exécution ou simplement rester au niveau du code source (TODO).

## Syntaxe de l'annotation

La déclaration des annotations est une variante des libellés ajoutés aux commentaires par le passé. Les annotations prennent la forme d'une déclaration d'interface précédée du caractère @, et facultativement suivies de méta-annotations, comme montré ci-dessous :

Dans cet exemple, Retention et Target sont des exemples d'annotations.

Les annotations ne faisant rien de particulier elles-mêmes, il faut ensuite écrire du code Java spécifique pour tirer parti des annotations définies par le programmeur. Ce code peut être exécuté soit lors de la compilation (ex: project lombok), soit lors de l'exécution comme avec les annotations Hibernate pour la persistance.

