Les annotations Java. Jonathan Lejeune. SRCS Master 1 SAR 2016/2017 UPMC/LIP6-INRIA. sources : Développons en Java, Jean-Michel Doudoux

Documents pareils
Java et les annotations

TP1 : Initiation à Java et Eclipse

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Java Licence Professionnelle CISII,

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Plan du cours. Historique du langage Nouveautés de Java 7

Cours 1: Java et les objets

Programmer en JAVA. par Tama

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Bases Java - Eclipse / Netbeans

Initiation à JAVA et à la programmation objet.

as Architecture des Systèmes d Information

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

TP1. Outils Java Eléments de correction

Java Licence Professionnelle CISII,

Environnements de développement (intégrés)

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Généralités sur le Langage Java et éléments syntaxiques.

INITIATION AU LANGAGE JAVA

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Remote Method Invocation (RMI)

Auto-évaluation Programmation en Java

Classe Interne, Anonyme & Enumération

TP, première séquence d exercices.

Présentation de Java. Olivier de Pertat IT GROUP

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

Tp 1 correction. Structures de données (IF2)

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Programmation Objet Java Correction

Programmation par les Objets en Java

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Une introduction à Java

Eclipse atelier Java

TD/TP PAC - Programmation n 3

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Java Naming and Directory Interface

Composants Logiciels. Le modèle de composant de CORBA. Plan

Introduction à Java. Philippe Genoud.

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

PROGRAMMATION PAR OBJETS

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

F. Barthélemy. 17 mai 2005

Machines Virtuelles. et bazard autour. Rémi Forax

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Utiliser Java sans BlueJ

Java c est quoi? Java pourquoi?

Corrigé des exercices sur les références

Chapitre I Notions de base et outils de travail

Héritage presque multiple en Java (1/2)

RMI le langage Java XII-1 JMF

Java Licence professionnelle CISII,

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Programme Compte bancaire (code)

Programmation Par Objets

Projet de programmation (IK3) : TP n 1 Correction

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Java 1.5 : principales nouveautés

Traitement de données

Java au cœur de la base de données Oracle

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Programmation par composants (1/3) Programmation par composants (2/3)

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Remote Method Invocation en Java (RMI)

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Annexe : La Programmation Informatique

Mise en œuvre des serveurs d application

Chapitre VI- La validation de la composition.

Votre premier projet Android

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Calcul Parallèle. Cours 5 - JAVA RMI

Création d une application JEE

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

La base de données XML exist. A. Belaïd

Java - la plateforme

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

La plate-forme DIMA. Master 1 IMA COLI23 - Université de La Rochelle

Cours Langage C/C++ Programmation modulaire

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Bases du langage. Historique Applications et applets Éléments de base du langage Classes et objets Les exceptions

TD/TP PAC - Programmation n 3

Applet pour visualiser les variables «automate» notifiées

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Programmation Orientée Objet application au langage Java Version Novembre 2007

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Installation et prise en main

Utilisation d objets : String et ArrayList

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

Java Avancé. Le langage Java. Rémi Forax

TP1 : Initiation à Java et Eclipse

Programmation Orientée Objets Le Langage JAVA

TD/TP 1 Introduction au SDK d Android

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Transcription:

Les annotations Java Jonathan Lejeune UPMC/LIP6-INRIA SRCS Master 1 SAR 2016/2017 sources : Développons en Java, Jean-Michel Doudoux c Jonathan Lejeune (UPMC/LIP6) Le annotations Java 1 / 15

Les annotations Dénition Méta-données sur une entité d'un programme Java, pouvant être exploitées à la compilation et/ou à l'exécution Utilisations Détection d'erreur à la compilation Génération de code (création de nouveaux chiers sources) Génération de chiers (ex : chier de conguration, de documentation) Simplication de développement, code allégé Quelques API utilisant les annotations Javadoc et Jdk standard : @Deprecated, @Override, @SuppressWarning Junit 4 : @Test, @Ignore, @Before, @After,... EJB 3 : @Remote, @Stateless, @Entity,... c Jonathan Lejeune (UPMC/LIP6) Le annotations Java 2 / 15

Mise en uvre des annotations Appel à une annotation Caractère @ + nom de l'annotation Doit obligatoirement précéder l'entité qu'elle annote Sur une ligne dédié par convention Associations possibles à toute entité Java packages, classes, interfaces constructeurs, méthodes, attributs paramètres, variables locales ou des annotations (méta-annotation) c Jonathan Lejeune (UPMC/LIP6) Le annotations Java 3 / 15

Paramétrage des annotations Catégories d'annotation les marqueurs : annotations sans attributs ex : @Override les annotations paramétrées : un seul attribut ex : @MonAnnot("test") les annotations multi-paramétrées : plusieurs attributs ex : @MonAnnot(arg1="test1", arg2="test2",arg3="test3") Types possibles des attributs Chaîne de caractère : String type primitif : int, long, boolean, double,... énumération : enum couleur{ ROUGE, VERT, BLEU} annotation le type class (réexivité Java) + tableau java de ces types c Jonathan Lejeune (UPMC/LIP6) Le annotations Java 4 / 15

Les annotations standards : @Deprecated Caractéristiques indique qu'une entité ne devrait plus être utilisée warning à la compilation sinon pas d'argument s'applique sur des classes, interfaces ou membre (méthode ou attribut) à ne pas confondre avec @deprecated de la javadoc class Truc { /* * * Fait quelque chose * @ deprecated plus compatible */ @ Deprecated public void f (){..} } c Jonathan Lejeune (UPMC/LIP6) Le annotations Java 5 / 15

Les annotations standards : @Override Caractéristiques indique qu'une méthode est une redénition d'une méthode héritée erreur si la méthode n'existe pas dans les types parents pas d'argument s'applique sur des méthodes public class Mere { @ Override // OK car heritage de Object public String tostring (){..} } public class Fille extends Mere { @ Override // erreur compilation car f n ' existe pas dans Mere public void f (){..} } c Jonathan Lejeune (UPMC/LIP6) Le annotations Java 6 / 15

Les annotations standards : @SuppressWarning Caractéristiques permet de demander au compilo d'hiniber certains avertissements qui sont pris en compte par défaut Argument de type String représentant un warning à ignorer : "deprecation" : utilisation d'une méthode dépréciée "unchecked" : pas d'utilisation des génériques sur une collection "fallthrough" : pas de break dans chaque case d'un switch "path" : erreur sur le chemin fournis en paramètre du compilo "serial" : absence d'un serialversionuid dans les bean "finally" : return dans un finally "unused" : une variable locale ou champs privé n'est jamais utilisé Il vaut mieux essayer de résoudre l'avertissement plutôt que d'utiliser cette annotation c Jonathan Lejeune (UPMC/LIP6) Le annotations Java 7 / 15

Annotations personnalisées Déclaration Dans un chier MonAnnotation.java package com. lejeune. test. annotations ; public @ interface MonAnnotation { String arg1 (); int arg2 (); boolean arg3 () default true ; // valeur par defaut String [] arg4 () default {" v1 "," v2 " }; } Utilisation package un. autre. endroit ; import com. lejeune. test. annotations.*; @MonAnnotation ( arg1 =" valeur1 ", arg2 =4) c Jonathan Lejeune (UPMC/LIP6) Le annotations Java 8 / 15

La méta-annotations @Target Caractéristiques Précise les entités sur lesquelles l'annotation peut être utilisée. Un seul attribut : un tableau de valeurs issues de l'enum ElementType : CONSTRUCTOR : applicable aux constructeurs LOCAL_VARIABLE : applicable aux variables locales FIELD : applicable aux attributs METHOD : applicable aux méthodes PACKAGE : applicable aux packages PARAMETER : applicable aux paramètre d'une méthode ou constructeur TYPE : applicable aux classes, interfaces, énumérations, annotations ANNOTATION_TYPE : applicable uniquement aux annotations @Target ({ ElementType. METHOD, ElementType. CONSTRUCTOR }) public @ interface Monannotation {...} @ MonAnnotation ( arg1 =" valeur1 ", arg2 =4) // ERREUR public class MaClasse {..} c Jonathan Lejeune (UPMC/LIP6) Le annotations Java 9 / 15

La méta-annotations @Retention Caractéristiques Précise à quel niveau les info de l'annotation seront conservées. Un seul attribut : une valeur de l'enum RetentionPolicy : SOURCE : info conservées uniquement dans le code source Le compilateur les ignore CLASS : info conservées dans le source et le bytecode RUNTIME : info conservées dans le source et le byte code et disponibles à l'exécution par introspection @ Retention ( RetentionPolicy. RUNTIME ) @Target ({ ElementType. METHOD, ElementType. CONSTRUCTOR }) public @ interface MonAnnotation {...} c Jonathan Lejeune (UPMC/LIP6) Le annotations Java 10 / 15

Les méta-annotations @Inherited et @Documented @Inherited Permet d'appliquer l'annotation à une classe et automatiquement à l'ensemble de ses classes lles directes et indirectes @Target ( ElementType. TYPE ) @Inherited public @ interface MonAnnotation {...} @MonAnnotation ( arg1 =" valeur1 ", arg2 =4) public class Mere {...} // implicitement @ MonAnnotation ( arg1 =" valeur1 ", arg2 =4) public class Fille extends Mere {...} @Documented Indique qu'il faut intégrer la dénition de l'annotation dans la documentation générée par JavaDoc c Jonathan Lejeune (UPMC/LIP6) Le annotations Java 11 / 15

Exploitation des Annotations Plusieurs outils Analyseur du code source : Javadoc + dénition de doclet Exploitation au moment de la compilation : Apt Exploitation au moment de l'exécution : introspection Java c Jonathan Lejeune (UPMC/LIP6) Le annotations Java 12 / 15

Analyseur de code source Fichiers source.java avec des annotations Fichier doclet.class JavaDoc Fichiers de sortie de type quelconque (.html,.xml,...) c Jonathan Lejeune (UPMC/LIP6) Le annotations Java 13 / 15

Exmploitation au moment de la compilation Fichiers source.java avec des annotations Apt Javac Fichiers source.java Générés (annotation possibles) Fichiers.class Des fichiers sources Fichiers.class Processeurs d annotation Fichiers de sortie de type quelconque (.html,.xml,...) c Jonathan Lejeune (UPMC/LIP6) Le annotations Java 14 / 15

Exploitation à l'exécution Fichiers source.java avec des Annotations (rétention runtime) javac Fichiers.class Des fichiers Sources Avec annotation jvm Reflexivité java introspection package java. lang. reflect ; public interface AnnotatedElement { <T extends Annotation > getannotation ( Class <T >); Annotation [] getannotations (); Annotation [] getdeclaredannotations (); } Types réexifs implantant AnnotedElement : AccessibleObject, Class, Constructor, Field, Method et Package c Jonathan Lejeune (UPMC/LIP6) Le annotations Java 15 / 15