dimanche 3 octobre 2010

Les Annotations en (Java SE version 6, alias Mustang)

Motivation
Les annotations s'impose aujourd'hui comme une alternative pour la configuration des fichiers XML.
Nous regarderons d’abord le principe de base des annotations (Java SE version 5, alias Tiger) propose seulement trois annotations, puis les améliorations apportées aux annotations en (Java SE version 6, alias Mustang), puis si possible celles des librairies facilitant la manipulation du XML.
Avec Java SE 6, on en voit arriver d’autres dans les packages javax.annotation ou javax.xml.bind.annotation. Mais ce sont surtout les frameworks et autres Standards qui font la part belle aux annotations : Hibernate, JPA, JDO, Spring, Guice, Java EE6... Le plus souvent il s'agit de remplacer de longs fichiers de description en XML par les annotations .
Bien que mon but reste de traiter les annotations dans JUnit 4.x.  dans les tests unitaires.




Présentation
Dans cette premier partie nous allons nous pencher sur une fonctionnalité qui ont été rajoutée depuis (Java SE version 5, alias Tiger) qui a été l'introduction des annotations ( marqueurs ) donc permet de marquer certain élément du langage Java qui sont ensuite utilisé à la compilation ou à l'exécution afin d'automatiser certains tâches.


Les annotations Java peuvent être ajoutées aux:
 Classes.
 Méthodes.
 Attributs.
 Paramètres.
 Variables locales .
 Paquets(package).


Syntaxe


Déclaration:
la déclaration d'une annotation se fait au moyenne d'une interface, mis à part le symbole @ devant le mot-clef interface qui permet de spécifier qu'il s'agit d'une interface :


public @interface MyAnnotation {




}


Utilisation:
Puisque les annotation sont un type du langage Java ,elles peuvent être utilisée sur plusieurs type d'éléments tel que j'ai mentionné en haut .Plusieurs annotations différentes peuvent être utilisées sur un même élément mais on ne peut pas utiliser deux fois la même annotation. En général l'annotation est placée devant la déclaration de l'élément qu'elle marque :
/*Annotation utilisé sur le type class */
@MyAnnotation


public class MyClass {


/* ... */


}
Les Annotations standards ( (Java SE version 5, alias Tiger) propose seulement trois annotations)
L'annotation @Override (ne peut être utilisée que sur une méthode. )
public class Entreprise {


@Override public String toString() {


return ....
}
...
}
 Cette annotation indique que la méthode est la redéfinition d'une méthode définie dans une super classe.
Elle permet, par exemple, de se prémunir contre les fautes de frappe: si vous définissez la méthode toStrinh à la place de toString par exemple, une erreur de compilation signalera que la méthode marquée par @Override n'est pas définie dans la super classe.
 
L'annotation @Deprecated(remplace le tag javadoc. )
public class Entreprise {




@Deprecated public String vieilleMethode {


return ....


}


...


}
Cette annotation remplace le tag javadoc pour signaler qu'une méthode n'est conservé que pour assurer la compatibilité avec la version précédente, et que cette méthode ne doit plus être utilisée.
L'annotation @SuppressWarnings (contient la liste des warnings à masquer.)
 
public class Entreprise {




@SuppressWarnings({"unchecked"}) public String méthode() {


List list = new ArrayList();


list.add("Warning avec le JDK 1.5.0");


}


...


}
Les nouveauté du JDK 1.5.0 peuvent provoquer l'affichage de warning, alors que le code compilait sans warning dans la version précédente. Pour pouvoir supprimer ces warning, vous pouvez ajouter l'annotation @SuppressWarnings devant la méthode concernée.
Remarquez que si vous ajoutez @SuppressWarnings pour supprimer un warning sur une classe, et que vous en ajoutez un autre pour un autre warnings sur une méthode, les deux warnings seront supprimées de la méthode lors de la compilation.


Attention, les noms des warnings ne sont pas standardisés entre les compilateurs Java.
Créer ces propres annotations
 Les annotation sont compilées par le compilateur Java et les valeurs sont stockées dans le fichier .class. Une annotation est un objet Java qui peut être accédée par la machine virtuelle (l'application Java) ou un autre programme ( la commande apt du JDK 1.5.0 ).
On peut créer une annotation très simple, permettant de marquer les classes Java dont les objets sont persistants, etc ...
Lien utile:
JSR-175 : http://www.jcp.org/en/jsr/detail?id=175





Aucun commentaire:

Enregistrer un commentaire

to criticize, to improve