SlideShare une entreprise Scribd logo
1  sur  2599
Télécharger pour lire hors ligne
Développons en Java
Jean Michel DOUDOUX
Table des matières
Développons en Java.............................................................................................................................................................1
Préambule..............................................................................................................................................................................2
A propos de ce document.........................................................................................................................................2
Remerciements.........................................................................................................................................................4
Notes de licence.......................................................................................................................................................4
Marques déposées....................................................................................................................................................5
Historique des versions............................................................................................................................................5
Partie 1 : Les bases du langage Java...................................................................................................................................8
1. Présentation de Java.........................................................................................................................................................9
1.1. Les caractéristiques...........................................................................................................................................9
1.2. Un bref historique de Java...............................................................................................................................10
1.3. Les différentes éditions et versions de Java....................................................................................................11
1.3.1. Les évolutions des plates-formes Java..................................................................................................12
1.3.2. Les différentes versions de Java............................................................................................................13
1.3.3. Java 1.0..................................................................................................................................................13
1.3.4. Java 1.1..................................................................................................................................................14
1.3.5. Java 1.2 (nom de code Playground)......................................................................................................14
1.3.6. J2SE 1.3 (nom de code Kestrel)............................................................................................................14
1.3.7. J2SE 1.4 (nom de code Merlin)............................................................................................................15
1.3.8. J2SE 5.0 (nom de code Tiger)...............................................................................................................15
1.3.9. Java SE 6 (nom de code Mustang)........................................................................................................16
1.3.9.1. Les évolutions de Java 6.............................................................................................................16
1.3.9.2. Java 6 update...............................................................................................................................19
1.3.10. Java SE 7.............................................................................................................................................27
1.3.10.1. Les JSR de Java 7.....................................................................................................................29
1.3.10.2. Java 7 update.............................................................................................................................30
1.3.11. Les futures versions de Java................................................................................................................32
1.3.12. Le résumé des différentes versions.....................................................................................................33
1.3.13. Le support des différentes versions.....................................................................................................33
1.3.14. Les extensions du JDK........................................................................................................................33
1.4. Un rapide tour d'horizon des API et de quelques outils..................................................................................34
1.5. Les différences entre Java et JavaScript..........................................................................................................35
1.6. L'installation du JDK.......................................................................................................................................36
1.6.1. L'installation de la version 1.3 du JDK de Sun sous Windows 9x........................................................36
1.6.2. L'installation de la documentation de Java 1.3 sous Windows.............................................................38
1.6.3. La configuration des variables système sous Windows 9x...................................................................39
1.6.4. Les éléments du JDK 1.3 sous Windows..............................................................................................40
1.6.5. L'installation de la version 1.4.2 du JDK de Sun sous Windows..........................................................40
1.6.6. L'installation de la version 1.5 du JDK de Sun sous Windows.............................................................41
1.6.7. Installation JDK 1.4.2 sous Linux Mandrake 10..................................................................................42
2. Les notions et techniques de base en Java....................................................................................................................46
2.1. Les concepts de base.......................................................................................................................................46
2.1.1. La compilation et l'exécution................................................................................................................46
2.1.2. Les packages.........................................................................................................................................49
2.1.3. Le déploiement sous la forme d'un jar..................................................................................................51
2.1.4. Le classpath...........................................................................................................................................52
2.1.4.1. La définition du classpath pour exécuter une application...........................................................54
2.1.4.2. La définition du classpath pour exécuter une application avec la variable CLASSPATH.........56
2.1.4.3. La définition du classpath pour exécuter une application utilisant une ou plusieurs
bibliothèques.............................................................................................................................56
2.1.4.4. La définition du classpath pour exécuter une application packagée en jar.................................57
2.2. L'exécution d'une applet..................................................................................................................................59
Développons en Java
Table des matières
3. La syntaxe et les éléments de bases de Java.................................................................................................................60
3.1. Les règles de base............................................................................................................................................60
3.2. Les identificateurs...........................................................................................................................................61
3.3. Les commentaires............................................................................................................................................61
3.4. La déclaration et l'utilisation de variables.......................................................................................................61
3.4.1. La déclaration de variables...................................................................................................................61
3.4.2. Les types élémentaires..........................................................................................................................62
3.4.3. Le format des types élémentaires..........................................................................................................63
3.4.4. L'initialisation des variables..................................................................................................................64
3.4.5. L'affectation..........................................................................................................................................64
3.4.6. Les comparaisons..................................................................................................................................65
3.5. Les opérations arithmétiques...........................................................................................................................65
3.5.1. L'arithmétique entière...........................................................................................................................66
3.5.2. L'arithmétique en virgule flottante........................................................................................................66
3.5.3. L'incrémentation et la décrémentation..................................................................................................67
3.6. La priorité des opérateurs................................................................................................................................67
3.7. Les structures de contrôles..............................................................................................................................68
3.7.1. Les boucles............................................................................................................................................68
3.7.2. Les branchements conditionnels...........................................................................................................70
3.7.3. Les débranchements..............................................................................................................................70
3.8. Les tableaux.....................................................................................................................................................70
3.8.1. La déclaration des tableaux...................................................................................................................71
3.8.2. L'initialisation explicite d'un tableau....................................................................................................71
3.8.3. Le parcours d'un tableau.......................................................................................................................72
3.9. Les conversions de types.................................................................................................................................72
3.9.1. La conversion d'un entier int en chaîne de caractère String..................................................................73
3.9.2. La conversion d'une chaîne de caractères String en entier int..............................................................73
3.9.3. La conversion d'un entier int en entier long..........................................................................................73
3.10. La manipulation des chaînes de caractères...................................................................................................73
3.10.1. Les caractères spéciaux dans les chaines............................................................................................74
3.10.2. L'addition de chaînes de caractères.....................................................................................................74
3.10.3. La comparaison de deux chaines........................................................................................................75
3.10.4. La détermination de la longueur d'une chaine....................................................................................75
3.10.5. La modification de la casse d'une chaine............................................................................................75
4. La programmation orientée objet.................................................................................................................................76
4.1. Le concept de classe........................................................................................................................................76
4.1.1. La syntaxe de déclaration d'une classe..................................................................................................77
4.2. Les objets.........................................................................................................................................................77
4.2.1. La création d'un objet : instancier une classe........................................................................................77
4.2.2. La durée de vie d'un objet.....................................................................................................................79
4.2.3. La création d'objets identiques..............................................................................................................79
4.2.4. Les références et la comparaison d'objets.............................................................................................79
4.2.5. L'objet null............................................................................................................................................80
4.2.6. Les variables de classes.........................................................................................................................80
4.2.7. La variable this......................................................................................................................................80
4.2.8. L'opérateur instanceof...........................................................................................................................81
4.3. Les modificateurs d'accès................................................................................................................................81
4.3.1. Les mots clés qui gèrent la visibilité des entités...................................................................................82
4.3.2. Le mot clé static....................................................................................................................................82
4.3.3. Le mot clé final.....................................................................................................................................83
4.3.4. Le mot clé abstract................................................................................................................................84
4.3.5. Le mot clé synchronized.......................................................................................................................84
4.3.6. Le mot clé volatile.................................................................................................................................84
4.3.7. Le mot clé native...................................................................................................................................85
4.4. Les propriétés ou attributs...............................................................................................................................85
4.4.1. Les variables d'instances.......................................................................................................................85
4.4.2. Les variables de classes.........................................................................................................................85
4.4.3. Les constantes.......................................................................................................................................85
Développons en Java
Table des matières
4. La programmation orientée objet
4.5. Les méthodes...................................................................................................................................................85
4.5.1. La syntaxe de la déclaration..................................................................................................................86
4.5.2. La transmission de paramètres..............................................................................................................87
4.5.3. L'émission de messages........................................................................................................................87
4.5.4. L'enchainement de références à des variables et à des méthodes.........................................................88
4.5.5. La surcharge de méthodes.....................................................................................................................88
4.5.6. Les constructeurs...................................................................................................................................89
4.5.7. Le destructeur........................................................................................................................................89
4.5.8. Les accesseurs.......................................................................................................................................90
4.6. L'héritage.........................................................................................................................................................90
4.6.1. Le principe de l'héritage........................................................................................................................90
4.6.2. La mise en oeuvre de l'héritage.............................................................................................................91
4.6.3. L'accès aux propriétés héritées..............................................................................................................91
4.6.4. La redéfinition d'une méthode héritée...................................................................................................91
4.6.5. Le polymorphisme................................................................................................................................91
4.6.6. Le transtypage induit par l'héritage facilite le polymorphisme.............................................................91
4.6.7. Les interfaces et l'héritage multiple......................................................................................................92
4.6.8. Des conseils sur l'héritage.....................................................................................................................93
4.7. Les packages...................................................................................................................................................94
4.7.1. La définition d'un package....................................................................................................................94
4.7.2. L'utilisation d'un package......................................................................................................................94
4.7.3. La collision de classes...........................................................................................................................95
4.7.4. Les packages et l'environnement système.............................................................................................95
4.8. Les classes internes.........................................................................................................................................95
4.8.1. Les classes internes non statiques.........................................................................................................97
4.8.2. Les classes internes locales.................................................................................................................101
4.8.3. Les classes internes anonymes............................................................................................................104
4.8.4. Les classes internes statiques..............................................................................................................104
4.9. La gestion dynamique des objets..................................................................................................................106
5. Les packages de bases...................................................................................................................................................107
5.1. Les packages selon la version du JDK..........................................................................................................107
5.2. Le package java.lang.....................................................................................................................................113
5.2.1. La classe Object..................................................................................................................................114
5.2.1.1. La méthode getClass()..............................................................................................................114
5.2.1.2. La méthode toString()...............................................................................................................114
5.2.1.3. La méthode equals()..................................................................................................................114
5.2.1.4. La méthode finalize()................................................................................................................114
5.2.1.5. La méthode clone()...................................................................................................................115
5.2.2. La classe String...................................................................................................................................115
5.2.3. La classe StringBuffer.........................................................................................................................117
5.2.4. Les wrappers.......................................................................................................................................118
5.2.5. La classe System.................................................................................................................................119
5.2.5.1. L'utilisation des flux d'entrée/sortie standard............................................................................119
5.2.5.2. Les variables d'environnement et les propriétés du système....................................................121
5.2.6. Les classes Runtime et Process...........................................................................................................123
5.3. La présentation rapide du package awt java..................................................................................................126
5.4. La présentation rapide du package java.io....................................................................................................126
5.5. Le package java.util.......................................................................................................................................126
5.5.1. La classe StringTokenizer...................................................................................................................126
5.5.2. La classe Random...............................................................................................................................127
5.5.3. Les classes Date et Calendar...............................................................................................................127
5.5.4. La classe SimpleDateFormat..............................................................................................................128
5.5.5. La classe Vector..................................................................................................................................129
5.5.6. La classe Hashtable.............................................................................................................................130
5.5.7. L'interface Enumeration......................................................................................................................130
5.5.8. La manipulation d'archives zip...........................................................................................................131
5.5.9. Les expressions régulières..................................................................................................................134
Développons en Java
Table des matières
5. Les packages de bases
5.5.9.1. Les motifs.................................................................................................................................134
5.5.9.2. La classe Pattern.......................................................................................................................136
5.5.9.3. La classe Matcher.....................................................................................................................137
5.5.10. La classe Formatter...........................................................................................................................139
5.5.11. La classe Scanner..............................................................................................................................139
5.6. La présentation rapide du package java.net..................................................................................................140
5.7. La présentation rapide du package java.applet..............................................................................................140
6. Les fonctions mathématiques.......................................................................................................................................141
6.1. Les variables de classe..................................................................................................................................141
6.2. Les fonctions trigonométriques.....................................................................................................................141
6.3. Les fonctions de comparaisons.....................................................................................................................142
6.4. Les arrondis...................................................................................................................................................142
6.4.1. La méthode round(n)...........................................................................................................................142
6.4.2. La méthode rint(double)......................................................................................................................143
6.4.3. La méthode floor(double)...................................................................................................................143
6.4.4. La méthode ceil(double).....................................................................................................................143
6.4.5. La méthode abs(x)...............................................................................................................................144
6.5. La méthode IEEEremainder(double, double)................................................................................................144
6.6. Les Exponentielles et puissances..................................................................................................................144
6.6.1. La méthode pow(double, double).......................................................................................................144
6.6.2. La méthode sqrt(double).....................................................................................................................145
6.6.3. La méthode exp(double).....................................................................................................................145
6.6.4. La méthode log(double)......................................................................................................................145
6.7. La génération de nombres aléatoires.............................................................................................................145
6.8. La classe BigDecimal....................................................................................................................................146
7. La gestion des exceptions.............................................................................................................................................152
7.1. Les mots clés try, catch et finally..................................................................................................................153
7.2. La classe Throwable......................................................................................................................................154
7.3. Les classes Exception, RunTimeException et Error.....................................................................................155
7.4. Les exceptions personnalisées.......................................................................................................................155
7.5. Les exceptions chaînées................................................................................................................................156
7.6. L'utilisation des exceptions...........................................................................................................................157
8. Le multitâche.................................................................................................................................................................159
8.1. L'interface Runnable.....................................................................................................................................159
8.2. La classe Thread............................................................................................................................................160
8.3. La création et l'exécution d'un thread............................................................................................................162
8.3.1. La dérivation de la classe Thread........................................................................................................162
8.3.2. L'implémentation de l'interface Runnable..........................................................................................163
8.3.3. La modification de la priorité d'un thread...........................................................................................164
8.4. La classe ThreadGroup..................................................................................................................................165
8.5. Un thread en tâche de fond (démon).............................................................................................................165
8.6. L'exclusion mutuelle.....................................................................................................................................166
8.6.1. La sécurisation d'une méthode............................................................................................................166
8.6.2. La sécurisation d'un bloc.....................................................................................................................166
8.6.3. La sécurisation de variables de classes...............................................................................................167
8.6.4. La synchronisation : les méthodes wait() et notify()...........................................................................167
9. JDK 1.5 (nom de code Tiger).......................................................................................................................................168
9.1. Les nouveautés du langage Java version 1.5.................................................................................................168
9.2. L'autoboxing / unboxing................................................................................................................................169
9.3. Les importations statiques.............................................................................................................................169
9.4. Les annotations ou métadonnées (Meta Data)..............................................................................................170
9.5. Les arguments variables (varargs).................................................................................................................170
9.6. Les generics...................................................................................................................................................172
9.7. Les boucles pour le parcours des collections................................................................................................175
Développons en Java
Table des matières
9. JDK 1.5 (nom de code Tiger)
9.8. Les énumérations (type enum)......................................................................................................................177
9.8.1. La définition d'une énumération.........................................................................................................178
9.8.2. L'utilisation d'une énumération...........................................................................................................179
9.8.3. L'enrichissement de l'énumération......................................................................................................180
9.8.4. La personnalisation de chaque élément..............................................................................................183
9.8.5. Les limitations dans la mise en oeuvre des énumérations..................................................................185
10. Les annotations...........................................................................................................................................................186
10.1. La présentation des annotations..................................................................................................................186
10.2. La mise en oeuvre des annotations..............................................................................................................187
10.3. L'utilisation des annotations........................................................................................................................188
10.3.1. La documentation..............................................................................................................................189
10.3.2. L'utilisation par le compilateur.........................................................................................................189
10.3.3. La génération de code.......................................................................................................................189
10.3.4. La génération de fichiers...................................................................................................................189
10.3.5. Les API qui utilisent les annotations.................................................................................................189
10.4. Les annotations standards............................................................................................................................190
10.4.1. L'annotation @Deprecated................................................................................................................190
10.4.2. L'annotation @Override....................................................................................................................191
10.4.3. L'annotation @SuppressWarning......................................................................................................192
10.5. Les annotations communes (Common Annotations)..................................................................................193
10.5.1. L'annotation @Generated..................................................................................................................194
10.5.2. Les annotations @Resource et @Resources.....................................................................................194
10.5.3. Les annotations @PostConstruct et @PreDestroy............................................................................195
10.6. Les annotations personnalisées...................................................................................................................195
10.6.1. La définition d'une annotation...........................................................................................................195
10.6.2. Les annotations pour les annotations................................................................................................197
10.6.2.1. L'annotation @Target.............................................................................................................197
10.6.2.2. L'annotation @Retention........................................................................................................198
10.6.2.3. L'annotation @Documented...................................................................................................198
10.6.2.4. L'annotation @Inherited.........................................................................................................199
10.7. L'exploitation des annotations.....................................................................................................................199
10.7.1. L'exploitation des annotations dans un Doclet..................................................................................199
10.7.2. L'exploitation des annotations avec l'outil Apt.................................................................................200
10.7.3. L'exploitation des annotations par introspection...............................................................................206
10.7.4. L'exploitation des annotations par le compilateur Java....................................................................208
10.8. L'API Pluggable Annotation Processing.....................................................................................................208
10.8.1. Les processeurs d'annotations...........................................................................................................209
10.8.2. L'utilisation des processeurs par le compilateur...............................................................................211
10.8.3. La création de nouveaux fichiers......................................................................................................211
10.9. Les ressources relatives aux annotations.....................................................................................................213
11. Java SE 7, le projet Coin............................................................................................................................................214
11.1. Les entiers exprimés en binaire (Binary Literals).......................................................................................215
11.2. Utilisation des underscores dans les entiers littéraux..................................................................................215
11.3. Utilisation des strings dans l'instruction switch..........................................................................................216
11.4. L'opérateur diamant.....................................................................................................................................217
11.5. L'instruction try-with-resources..................................................................................................................219
11.6. Des types plus précis lorsqu'une exception est relevée dans une clause catch...........................................227
11.7. Multiples exceptions dans une clause catch................................................................................................230
Partie 2 : Développement des interfaces graphiques.....................................................................................................233
12. Le graphisme...............................................................................................................................................................234
12.1. Les opérations sur le contexte graphique....................................................................................................234
12.1.1. Le tracé de formes géométriques......................................................................................................234
12.1.2. Le tracé de texte................................................................................................................................235
12.1.3. L'utilisation des fontes......................................................................................................................235
Développons en Java
Table des matières
12. Le graphisme
12.1.4. La gestion de la couleur....................................................................................................................236
12.1.5. Le chevauchement de figures graphiques.........................................................................................236
12.1.6. L'effacement d'une aire.....................................................................................................................236
12.1.7. La copie d'une aire rectangulaire......................................................................................................236
13. Les éléments d'interfaces graphiques de l'AWT......................................................................................................237
13.1. Les composants graphiques.........................................................................................................................238
13.1.1. Les étiquettes.....................................................................................................................................238
13.1.2. Les boutons.......................................................................................................................................239
13.1.3. Les panneaux.....................................................................................................................................239
13.1.4. Les listes déroulantes (combobox)....................................................................................................239
13.1.5. La classe TextComponent.................................................................................................................241
13.1.6. Les champs de texte..........................................................................................................................241
13.1.7. Les zones de texte multilignes..........................................................................................................242
13.1.8. Les listes............................................................................................................................................244
13.1.9. Les cases à cocher.............................................................................................................................247
13.1.10. Les boutons radio............................................................................................................................248
13.1.11. Les barres de défilement.................................................................................................................248
13.1.12. La classe Canvas.............................................................................................................................250
13.2. La classe Component..................................................................................................................................250
13.3. Les conteneurs.............................................................................................................................................252
13.3.1. Le conteneur Panel............................................................................................................................253
13.3.2. Le conteneur Window.......................................................................................................................253
13.3.3. Le conteneur Frame..........................................................................................................................253
13.3.4. Le conteneur Dialog..........................................................................................................................255
13.4. Les menus....................................................................................................................................................255
13.4.1. Les méthodes de la classe MenuBar.................................................................................................257
13.4.2. Les méthodes de la classe Menu.......................................................................................................258
13.4.3. Les méthodes de la classe MenuItem................................................................................................258
13.4.4. Les méthodes de la classe CheckboxMenuItem...............................................................................258
13.5. La classe java.awt.Desktop.........................................................................................................................258
14. La création d'interfaces graphiques avec AWT......................................................................................................260
14.1. Le dimensionnement des composants.........................................................................................................260
14.2. Le positionnement des composants.............................................................................................................261
14.2.1. La mise en page par flot (FlowLayout).............................................................................................262
14.2.2. La mise en page bordure (BorderLayout).........................................................................................263
14.2.3. La mise en page de type carte (CardLayout)....................................................................................264
14.2.4. La mise en page GridLayout.............................................................................................................265
14.2.5. La mise en page GridBagLayout......................................................................................................266
14.3. La création de nouveaux composants à partir de Panel..............................................................................268
14.4. L'activation ou la désactivation des composants.........................................................................................268
15. L'interception des actions de l'utilisateur.................................................................................................................270
15.1. L'interception des actions de l'utilisateur avec Java version 1.0.................................................................270
15.2. L'interception des actions de l'utilisateur avec Java version 1.1.................................................................270
15.2.1. L'interface ItemListener....................................................................................................................272
15.2.2. L'interface TextListener....................................................................................................................273
15.2.3. L'interface MouseMotionListener.....................................................................................................274
15.2.4. L'interface MouseListener.................................................................................................................274
15.2.5. L'interface WindowListener..............................................................................................................275
15.2.6. Les différentes implémentations des Listeners.................................................................................276
15.2.6.1. Une classe implémentant elle même le listener......................................................................276
15.2.6.2. Une classe indépendante implémentant le listener.................................................................277
15.2.6.3. Une classe interne...................................................................................................................278
15.2.6.4. Une classe interne anonyme....................................................................................................278
15.2.7. Résumé..............................................................................................................................................279
Développons en Java
Table des matières
16. Le développement d'interfaces graphiques avec SWING.......................................................................................280
16.1. La présentation de Swing............................................................................................................................280
16.2. Les packages Swing....................................................................................................................................281
16.3. Un exemple de fenêtre autonome................................................................................................................281
16.4. Les composants Swing................................................................................................................................282
16.4.1. La classe JFrame...............................................................................................................................283
16.4.1.1. Le comportement par défaut à la fermeture............................................................................285
16.4.1.2. La personnalisation de l'icône.................................................................................................286
16.4.1.3. Centrer une JFrame à l'écran...................................................................................................286
16.4.1.4. Les événements associées à un JFrame..................................................................................287
16.4.2. Les étiquettes : la classe JLabel........................................................................................................287
16.4.3. Les panneaux : la classe JPanel.........................................................................................................290
16.5. Les boutons.................................................................................................................................................290
16.5.1. La classe AbstractButton..................................................................................................................290
16.5.2. La classe JButton..............................................................................................................................292
16.5.3. La classe JToggleButton...................................................................................................................293
16.5.4. La classe ButtonGroup......................................................................................................................293
16.5.5. Les cases à cocher : la classe JCheckBox.........................................................................................294
16.5.6. Les boutons radio : la classe JRadioButton......................................................................................295
16.6. Les composants de saisie de texte...............................................................................................................299
16.6.1. La classe JTextComponent...............................................................................................................299
16.6.2. La classe JTextField..........................................................................................................................300
16.6.3. La classe JPasswordField..................................................................................................................301
16.6.4. La classe JFormattedTextField.........................................................................................................302
16.6.5. La classe JEditorPane........................................................................................................................302
16.6.6. La classe JTextPane..........................................................................................................................303
16.6.7. La classe JTextArea..........................................................................................................................303
16.7. Les onglets...................................................................................................................................................305
16.8. Le composant JTree....................................................................................................................................306
16.8.1. La création d'une instance de la classe JTree....................................................................................306
16.8.2. La gestion des données de l'arbre......................................................................................................309
16.8.2.1. L'interface TreeNode..............................................................................................................310
16.8.2.2. L'interface MutableTreeNode.................................................................................................311
16.8.2.3. La classe DefaultMutableTreeNode.......................................................................................311
16.8.3. La modification du contenu de l'arbre...............................................................................................312
16.8.3.1. Les modifications des noeuds fils...........................................................................................312
16.8.3.2. Les événements émis par le modèle........................................................................................313
16.8.3.3. L'édition d'un noeud................................................................................................................314
16.8.3.4. Les éditeurs personnalisés.......................................................................................................315
16.8.3.5. La définition des noeuds éditables..........................................................................................315
16.8.4. La mise en oeuvre d'actions sur l'arbre.............................................................................................316
16.8.4.1. Etendre ou refermer un noeud.................................................................................................316
16.8.4.2. La détermination du noeud sélectionné..................................................................................317
16.8.4.3. Le parcours des noeuds de l'arbre...........................................................................................317
16.8.5. La gestion des événements................................................................................................................318
16.8.5.1. La classe TreePath..................................................................................................................319
16.8.5.2. La gestion de la sélection d'un noeud.....................................................................................320
16.8.5.3. Les événements lies à la sélection de noeuds.........................................................................321
16.8.5.4. Les événements lorsqu'un noeud est étendu ou refermé.........................................................323
16.8.5.5. Le contrôle des actions pour étendre ou refermer un noeud...................................................324
16.8.6. La personnalisation du rendu............................................................................................................324
16.8.6.1. Personnaliser le rendu des noeuds..........................................................................................325
16.8.6.2. Les bulles d'aides (Tooltips)...................................................................................................328
16.9. Les menus....................................................................................................................................................328
16.9.1. La classe JMenuBar..........................................................................................................................331
16.9.2. La classe JMenuItem.........................................................................................................................333
16.9.3. La classe JPopupMenu......................................................................................................................333
16.9.4. La classe JMenu................................................................................................................................335
16.9.5. La classe JCheckBoxMenuItem........................................................................................................336
Développons en Java
Table des matières
16. Le développement d'interfaces graphiques avec SWING
16.9.6. La classe JRadioButtonMenuItem....................................................................................................336
16.9.7. La classe JSeparator..........................................................................................................................336
16.10. L'affichage d'une image dans une application...........................................................................................337
17. Le développement d'interfaces graphiques avec SWT............................................................................................342
17.1. La présentation de SWT..............................................................................................................................342
17.2. Un exemple très simple...............................................................................................................................344
17.3. La classe SWT.............................................................................................................................................345
17.4. L'objet Display............................................................................................................................................345
17.5. L'objet Shell.................................................................................................................................................345
17.6. Les composants...........................................................................................................................................347
17.6.1. La classe Control...............................................................................................................................347
17.6.2. Les contrôles de base........................................................................................................................347
17.6.2.1. La classe Button......................................................................................................................348
17.6.2.2. La classe Label........................................................................................................................348
17.6.2.3. La classe Text.........................................................................................................................349
17.6.3. Les contrôles de type liste.................................................................................................................350
17.6.3.1. La classe Combo.....................................................................................................................350
17.6.3.2. La classe List...........................................................................................................................351
17.6.4. Les contrôles pour les menus............................................................................................................351
17.6.4.1. La classe Menu.......................................................................................................................351
17.6.4.2. La classe MenuItem................................................................................................................352
17.6.5. Les contrôles de sélection ou d'affichage d'une valeur.....................................................................353
17.6.5.1. La classe ProgressBar.............................................................................................................353
17.6.5.2. La classe Scale........................................................................................................................354
17.6.5.3. La classe Slider.......................................................................................................................354
17.6.6. Les contrôles de type « onglets »......................................................................................................355
17.6.6.1. La classe TabFolder................................................................................................................355
17.6.6.2. La classe TabItem...................................................................................................................356
17.6.7. Les contrôles de type « tableau »......................................................................................................356
17.6.7.1. La classe Table........................................................................................................................356
17.6.7.2. La classe TableColumn...........................................................................................................358
17.6.7.3. La classe TableItem................................................................................................................358
17.6.8. Les contrôles de type « arbre ».........................................................................................................359
17.6.8.1. La classe Tree.........................................................................................................................359
17.6.8.2. La classe TreeItem..................................................................................................................360
17.6.9. La classe ScrollBar............................................................................................................................360
17.6.10. Les contrôles pour le graphisme.....................................................................................................360
17.6.10.1. La classe Canvas...................................................................................................................360
17.6.10.2. La classe GC.........................................................................................................................361
17.6.10.3. La classe Color......................................................................................................................362
17.6.10.4. La classe Font.......................................................................................................................362
17.6.10.5. La classe Image.....................................................................................................................363
17.7. Les conteneurs.............................................................................................................................................364
17.7.1. Les conteneurs de base......................................................................................................................364
17.7.1.1. La classe Composite...............................................................................................................364
17.7.1.2. La classe Group.......................................................................................................................366
17.7.2. Les contrôles de type « barre d'outils ».............................................................................................366
17.7.2.1. La classe ToolBar...................................................................................................................366
17.7.2.2. La classe ToolItem..................................................................................................................367
17.7.2.3. Les classes CoolBar et Cooltem.............................................................................................369
17.8. La gestion des erreurs..................................................................................................................................370
17.9. Le positionnement des contrôles.................................................................................................................370
17.9.1. Le positionnement absolu.................................................................................................................371
17.9.2. Le positionnement relatif avec les LayoutManager..........................................................................371
17.9.2.1. FillLayout................................................................................................................................371
17.9.2.2. RowLayout..............................................................................................................................372
17.9.2.3. GridLayout..............................................................................................................................373
Développons en Java
Table des matières
17. Le développement d'interfaces graphiques avec SWT
17.9.2.4. FormLayout............................................................................................................................376
17.10. La gestion des événements........................................................................................................................376
17.10.1. L'interface KeyListener...................................................................................................................377
17.10.2. L'interface MouseListener...............................................................................................................379
17.10.3. L'interface MouseMoveListener.....................................................................................................380
17.10.4. L'interface MouseTrackListener.....................................................................................................381
17.10.5. L'interface ModifyListener.............................................................................................................381
17.10.6. L'interface VerifyText()..................................................................................................................382
17.10.7. L'interface FocusListener................................................................................................................383
17.10.8. L'interface TraverseListener...........................................................................................................383
17.10.9. L'interface PaintListener.................................................................................................................384
17.11. Les boîtes de dialogue...............................................................................................................................385
17.11.1. Les boîtes de dialogue prédéfinies..................................................................................................386
17.11.1.1. La classe MessageBox..........................................................................................................386
17.11.1.2. La classe ColorDialog...........................................................................................................387
17.11.1.3. La classe FontDialog.............................................................................................................387
17.11.1.4. La classe FileDialog..............................................................................................................388
17.11.1.5. La classe DirectoryDialog.....................................................................................................389
17.11.1.6. La classe PrintDialog............................................................................................................390
17.11.2. Les boites de dialogue personnalisées............................................................................................391
18. JFace............................................................................................................................................................................393
18.1. La présentation de JFace.............................................................................................................................393
18.2. La structure générale d'une application.......................................................................................................394
18.3. Les boites de dialogue.................................................................................................................................395
18.3.1. L'affichage des messages d'erreur.....................................................................................................395
18.3.2. L'affichage des messages d'information à l'utilisateur......................................................................396
18.3.3. La saisie d'une valeur par l'utilisateur...............................................................................................398
18.3.4. La boîte de dialogue pour afficher la progression d'un traitement....................................................399
Partie 3 : Les API avancées..............................................................................................................................................403
19. Les collections..............................................................................................................................................................405
19.1. Présentation du framework collection.........................................................................................................405
19.2. Les interfaces des collections......................................................................................................................406
19.2.1. L'interface Collection........................................................................................................................407
19.2.2. L'interface Iterator.............................................................................................................................408
19.3. Les listes......................................................................................................................................................409
19.3.1. L'interface List..................................................................................................................................409
19.3.2. Les listes chaînées : la classe LinkedList..........................................................................................410
19.3.3. L'interface ListIterator.......................................................................................................................411
19.3.4. Les tableaux redimensionnables : la classe ArrayList......................................................................411
19.4. Les ensembles.............................................................................................................................................412
19.4.1. L'interface Set...................................................................................................................................412
19.4.2. L'interface SortedSet.........................................................................................................................412
19.4.3. La classe HashSet..............................................................................................................................413
19.4.4. La classe TreeSet..............................................................................................................................413
19.5. Les collections gérées sous la forme clé/valeur..........................................................................................414
19.5.1. L'interface Map.................................................................................................................................414
19.5.2. L'interface SortedMap.......................................................................................................................415
19.5.3. La classe Hashtable...........................................................................................................................415
19.5.4. La classe TreeMap............................................................................................................................416
19.5.5. La classe HashMap...........................................................................................................................416
19.6. Le tri des collections...................................................................................................................................417
19.6.1. L'interface Comparable.....................................................................................................................417
19.6.2. L'interface Comparator.....................................................................................................................417
19.7. Les algorithmes...........................................................................................................................................417
19.8. Les exceptions du framework.....................................................................................................................419
Développons en Java
Table des matières
20. Les flux.........................................................................................................................................................................420
20.1. La présentation des flux..............................................................................................................................420
20.2. Les classes de gestion des flux....................................................................................................................420
20.3. Les flux de caractères..................................................................................................................................422
20.3.1. La classe Reader................................................................................................................................423
20.3.2. La classe Writer................................................................................................................................424
20.3.3. Les flux de caractères avec un fichier...............................................................................................424
20.3.3.1. Les flux de caractères en lecture sur un fichier.......................................................................424
20.3.3.2. Les flux de caractères en écriture sur un fichier.....................................................................425
20.3.4. Les flux de caractères tamponnés avec un fichier.............................................................................425
20.3.4.1. Les flux de caractères tamponnés en lecture avec un fichier..................................................425
20.3.4.2. Les flux de caractères tamponnés en écriture avec un fichier................................................426
20.3.4.3. La classe PrintWriter...............................................................................................................427
20.4. Les flux d'octets...........................................................................................................................................429
20.4.1. Les flux d'octets avec un fichier........................................................................................................429
20.4.1.1. Les flux d'octets en lecture sur un fichier...............................................................................430
20.4.1.2. Les flux d'octets en écriture sur un fichier..............................................................................430
20.4.2. Les flux d'octets tamponnés avec un fichier.....................................................................................432
20.5. La classe File...............................................................................................................................................432
20.6. Les fichiers à accès direct............................................................................................................................434
20.7. La classe java.io.Console............................................................................................................................436
21. NIO 2............................................................................................................................................................................437
21.1. Les entrées/sorties avec Java.......................................................................................................................438
21.2. Les principales classes et interfaces............................................................................................................438
21.3. L'interface Path............................................................................................................................................439
21.3.1. L'obtention d'une instance de type Path............................................................................................440
21.3.2. L'obtention d'éléments du chemin.....................................................................................................440
21.3.3. La manipulation d'un chemin............................................................................................................442
21.3.4. La comparaison de chemins..............................................................................................................443
21.3.5. La conversion d'un chemin...............................................................................................................444
21.4. Glob.............................................................................................................................................................445
21.5. La classe Files.............................................................................................................................................447
21.5.1. Les vérifications sur un fichier ou un répertoire...............................................................................447
21.5.2. La création d'un fichier ou d'un répertoire........................................................................................449
21.5.3. La copie d'un fichier ou d'un répertoire............................................................................................451
21.5.4. Le déplacement d'un fichier ou d'un répertoire.................................................................................453
21.5.5. La suppression d'un fichier ou d'un répertoire..................................................................................455
21.5.6. L'obtention du type de fichier...........................................................................................................456
21.6. Le parcourt du contenu de répertoires.........................................................................................................457
21.6.1. Le parcourt d'un répertoire................................................................................................................457
21.6.2. Le parcourt d'une hiérarchie de répertoires.......................................................................................460
21.6.3. Les opérations récursives..................................................................................................................462
21.7. L'utilisation de systèmes de gestion de fichiers..........................................................................................463
21.7.1. La classe FileSystems.......................................................................................................................463
21.7.2. La classe FileSystem.........................................................................................................................464
21.7.3. La création d'une implémentation de FileSystem.............................................................................464
21.7.4. Une implémentation de FileSystem pour les fichiers Zip.................................................................465
21.8. La lecture et l'écriture dans un fichier.........................................................................................................466
21.8.1. Les options d'ouverture d'un fichier..................................................................................................467
21.8.2. La lecture et l'écriture de l'intégralité d'un fichier.............................................................................468
21.8.3. La lecture et l'écriture bufférisée d'un fichier....................................................................................469
21.8.4. La lecture et l'écriture d'un flux d'octets...........................................................................................470
21.8.5. La lecture et l'écriture d'un fichier avec un channel..........................................................................471
21.9. Les liens et les liens symboliques...............................................................................................................472
21.9.1. La création d'un lien physique..........................................................................................................473
21.9.2. La création d'un lien symbolique......................................................................................................473
21.9.3. L'utilisation des liens et des liens symboliques.................................................................................474
21.10. La gestion des attributs..............................................................................................................................474
Développons en Java
Table des matières
21. NIO 2
21.10.1. La gestion individuelle des attributs...............................................................................................474
21.10.2. La gestion de plusieurs attributs......................................................................................................475
21.10.3. L'utilisation des vues.......................................................................................................................477
21.10.4. La gestion des permissions DOS....................................................................................................478
21.10.5. La gestion des permissions Posix....................................................................................................479
21.11. La gestion des unités de stockages............................................................................................................481
21.12. Les notifications de changements dans un répertoire................................................................................482
21.12.1. La surveillance d'un répertoire........................................................................................................482
21.12.2. L'obtention des événements............................................................................................................484
21.12.3. Le traitement des événements.........................................................................................................485
21.12.4. Un exemple complet.......................................................................................................................486
21.12.5. L'utilisation et les limites de l'API WatchService...........................................................................488
21.13. La gestion des erreurs et la libération des ressources................................................................................488
21.14. L'interopérabilité avec le code existant.....................................................................................................490
21.14.1. L'équivalence des fonctionnalités entre java.io et NIO2.................................................................491
22. La sérialisation............................................................................................................................................................493
22.1. Les classes et les interfaces de la sérialisation............................................................................................493
22.1.1. L'interface Serializable......................................................................................................................493
22.1.2. La classe ObjectOuputStream...........................................................................................................494
22.1.3. La classe ObjectInputStream............................................................................................................495
22.2. Le mot clé transient.....................................................................................................................................496
22.3. La sérialisation personnalisée......................................................................................................................497
22.3.1. L'interface Externalizable.................................................................................................................497
23. L'interaction avec le réseau.......................................................................................................................................498
23.1. L'introduction aux concepts liés au réseau..................................................................................................498
23.2. Les adresses internet....................................................................................................................................499
23.2.1. La classe InetAddress........................................................................................................................499
23.3. L'accès aux ressources avec une URL.........................................................................................................500
23.3.1. La classe URL...................................................................................................................................501
23.3.2. La classe URLConnection................................................................................................................501
23.3.3. La classe URLEncoder......................................................................................................................502
23.3.4. La classe HttpURLConnection.........................................................................................................503
23.4. L'utilisation du protocole TCP....................................................................................................................504
23.4.1. La classe SocketServer......................................................................................................................504
23.4.2. La classe Socket................................................................................................................................506
23.5. L'utilisation du protocole UDP....................................................................................................................507
23.5.1. La classe DatagramSocket................................................................................................................507
23.5.2. La classe DatagramPacket................................................................................................................508
23.5.3. Un exemple de serveur et de client...................................................................................................508
23.6. Les exceptions liées au réseau.....................................................................................................................510
23.7. Les interfaces de connexions au réseau.......................................................................................................510
24. La gestion dynamique des objets et l'introspection.................................................................................................512
24.1. La classe Class............................................................................................................................................513
24.1.1. L'obtention d'un objet de type Class.................................................................................................513
24.1.1.1. La détermination de la classe d'un objet.................................................................................513
24.1.1.2. L'obtention d'un objet Class à partir d'un nom de classe........................................................513
24.1.1.3. Une troisième façon d'obtenir un objet Class.........................................................................514
24.1.2. Les méthodes de la classe Class........................................................................................................514
24.2. La recherche des informations sur une classe.............................................................................................515
24.2.1. La recherche de la classe mère d'une classe......................................................................................515
24.2.2. La recherche des modificateurs d'une classe.....................................................................................515
24.2.3. La recherche des interfaces implémentées par une classe................................................................516
24.2.4. La recherche des champs publics......................................................................................................516
24.2.5. La recherche des paramètres d'une méthode ou d'un constructeur...................................................517
24.2.6. La recherche des constructeurs de la classe......................................................................................518
Développons en Java
Table des matières
24. La gestion dynamique des objets et l'introspection
24.2.7. La recherche des méthodes publiques...............................................................................................519
24.2.8. La recherche de toutes les méthodes.................................................................................................520
24.3. La définition dynamique d'objets................................................................................................................520
24.3.1. La création d'objets grâce à la classe Class.......................................................................................520
24.3.2. La création d'objets grâce à la classe Constructor.............................................................................521
24.4. L'exécution dynamique d'une méthode.......................................................................................................523
25. L'appel de méthodes distantes : RMI.......................................................................................................................524
25.1. La présentation et l'architecture de RMI.....................................................................................................524
25.2. Les différentes étapes pour créer un objet distant et l'appeler avec RMI....................................................524
25.3. Le développement coté serveur...................................................................................................................525
25.3.1. La définition d'une interface qui contient les méthodes de l'objet distant........................................525
25.3.2. L'écriture d'une classe qui implémente cette interface......................................................................525
25.3.3. L'écriture d'une classe pour instancier l'objet et l'enregistrer dans le registre...................................526
25.3.3.1. La mise en place d'un security manager.................................................................................526
25.3.3.2. L'instanciation d'un objet de la classe distante........................................................................527
25.3.3.3. L'enregistrement dans le registre de noms RMI.....................................................................527
25.3.3.4. Le lancement dynamique du registre de noms RMI...............................................................527
25.4. Le développement coté client......................................................................................................................528
25.4.1. La mise en place d'un security manager............................................................................................528
25.4.2. L'obtention d'une référence sur l'objet distant à partir de son nom...................................................529
25.4.3. L'appel à la méthode à partir de la référence sur l'objet distant........................................................529
25.4.4. L'appel d'une méthode distante dans une applet...............................................................................530
25.5. La génération de la classe stub....................................................................................................................530
25.6. La mise en oeuvre des objets RMI..............................................................................................................531
25.6.1. Le lancement du registre RMI..........................................................................................................531
25.6.2. L'instanciation et l'enregistrement de l'objet distant.........................................................................531
25.6.3. Le lancement de l'application cliente................................................................................................531
26. L'internationalisation.................................................................................................................................................534
26.1. Les objets de type Locale............................................................................................................................534
26.1.1. La création d'un objet Locale............................................................................................................534
26.1.2. L'obtention de la liste des Locales disponibles.................................................................................535
26.1.3. L'utilisation d'un objet Locale...........................................................................................................536
26.2. La classe ResourceBundle...........................................................................................................................536
26.2.1. La création d'un objet ResourceBundle............................................................................................536
26.2.2. Les sous classes de ResourceBundle................................................................................................537
26.2.2.1. L'utilisation de PropertyResourceBundle...............................................................................537
26.2.2.2. L'utilisation de ListResourceBundle.......................................................................................537
26.2.3. L'obtention d'un texte d'un objet ResourceBundle............................................................................538
26.3. Un guide pour réaliser la localisation..........................................................................................................538
26.3.1. L'utilisation d'un ResourceBundle avec un fichier propriétés...........................................................538
26.3.2. Des exemples de classes utilisant PropertiesResourceBundle..........................................................539
26.3.3. L'utilisation de la classe ListResourceBundle...................................................................................540
26.3.4. Des exemples de classes utilisant ListResourceBundle....................................................................541
26.3.5. La création de sa propre classe fille de ResourceBundle..................................................................543
27. Les composants Java beans........................................................................................................................................547
27.1. La présentation des Java beans....................................................................................................................547
27.2. Les propriétés..............................................................................................................................................548
27.2.1. Les propriétés simples.......................................................................................................................548
27.2.2. Les propriétés indexées (indexed properties)....................................................................................549
27.2.3. Les propriétés liées (Bound properties)............................................................................................549
27.2.4. Les propriétés liées avec contraintes (Constrained properties).........................................................551
27.3. Les méthodes...............................................................................................................................................553
27.4. Les événements...........................................................................................................................................553
27.5. L'introspection.............................................................................................................................................553
27.5.1. Les modèles (design patterns)...........................................................................................................554
Développons en Java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java
Développez en java

Contenu connexe

Tendances

Support formation vidéo : Outlook 2016 - Maîtriser les bases
Support formation vidéo : Outlook 2016 - Maîtriser les basesSupport formation vidéo : Outlook 2016 - Maîtriser les bases
Support formation vidéo : Outlook 2016 - Maîtriser les basesSmartnSkilled
 
Apprenez à monter votre ordinateur
Apprenez à monter votre ordinateurApprenez à monter votre ordinateur
Apprenez à monter votre ordinateurFouad Root
 
Description open erp_v_7
Description open erp_v_7Description open erp_v_7
Description open erp_v_7Ab Rafaoui
 
The Ring programming language version 1.9 book - Part 1 of 210
The Ring programming language version 1.9 book - Part 1 of 210The Ring programming language version 1.9 book - Part 1 of 210
The Ring programming language version 1.9 book - Part 1 of 210Mahmoud Samir Fayed
 
The Ring programming language version 1.8 book - Part 1 of 202
The Ring programming language version 1.8 book - Part 1 of 202The Ring programming language version 1.8 book - Part 1 of 202
The Ring programming language version 1.8 book - Part 1 of 202Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 1 of 212
The Ring programming language version 1.10 book - Part 1 of 212The Ring programming language version 1.10 book - Part 1 of 212
The Ring programming language version 1.10 book - Part 1 of 212Mahmoud Samir Fayed
 
The Ring programming language version 1.3 book - Part 1 of 88
The Ring programming language version 1.3 book - Part 1 of 88The Ring programming language version 1.3 book - Part 1 of 88
The Ring programming language version 1.3 book - Part 1 of 88Mahmoud Samir Fayed
 
The Ring programming language version 1.2 book - Part 1 of 84
The Ring programming language version 1.2 book - Part 1 of 84The Ring programming language version 1.2 book - Part 1 of 84
The Ring programming language version 1.2 book - Part 1 of 84Mahmoud Samir Fayed
 
Livre blanc de J2ME
Livre blanc de J2MELivre blanc de J2ME
Livre blanc de J2MEBruno Delb
 
The Ring programming language version 1.4 book - Part 1 of 30
The Ring programming language version 1.4 book - Part 1 of 30The Ring programming language version 1.4 book - Part 1 of 30
The Ring programming language version 1.4 book - Part 1 of 30Mahmoud Samir Fayed
 
La base de données Oracle
La base de données OracleLa base de données Oracle
La base de données OracleBruno Delb
 
The Ring programming language version 1.7 book - Part 1 of 196
The Ring programming language version 1.7 book - Part 1 of 196The Ring programming language version 1.7 book - Part 1 of 196
The Ring programming language version 1.7 book - Part 1 of 196Mahmoud Samir Fayed
 
initiation-au-langage-c-et-exercices-corriges
initiation-au-langage-c-et-exercices-corrigesinitiation-au-langage-c-et-exercices-corriges
initiation-au-langage-c-et-exercices-corrigesjojo sekkat
 
Ovidentia Guide Utilisateur
Ovidentia Guide UtilisateurOvidentia Guide Utilisateur
Ovidentia Guide Utilisateurguest5fb52b
 
Polycop td access 2007 facturation
Polycop td access 2007  facturationPolycop td access 2007  facturation
Polycop td access 2007 facturationgkaterynne
 

Tendances (20)

Support formation vidéo : Outlook 2016 - Maîtriser les bases
Support formation vidéo : Outlook 2016 - Maîtriser les basesSupport formation vidéo : Outlook 2016 - Maîtriser les bases
Support formation vidéo : Outlook 2016 - Maîtriser les bases
 
Apprenez à monter votre ordinateur
Apprenez à monter votre ordinateurApprenez à monter votre ordinateur
Apprenez à monter votre ordinateur
 
Description open erp_v_7
Description open erp_v_7Description open erp_v_7
Description open erp_v_7
 
The Ring programming language version 1.9 book - Part 1 of 210
The Ring programming language version 1.9 book - Part 1 of 210The Ring programming language version 1.9 book - Part 1 of 210
The Ring programming language version 1.9 book - Part 1 of 210
 
Rapport finale
Rapport finaleRapport finale
Rapport finale
 
Guide administrateur22
Guide administrateur22Guide administrateur22
Guide administrateur22
 
Programmation en-java-api
Programmation en-java-apiProgrammation en-java-api
Programmation en-java-api
 
The Ring programming language version 1.8 book - Part 1 of 202
The Ring programming language version 1.8 book - Part 1 of 202The Ring programming language version 1.8 book - Part 1 of 202
The Ring programming language version 1.8 book - Part 1 of 202
 
The Ring programming language version 1.10 book - Part 1 of 212
The Ring programming language version 1.10 book - Part 1 of 212The Ring programming language version 1.10 book - Part 1 of 212
The Ring programming language version 1.10 book - Part 1 of 212
 
The Ring programming language version 1.3 book - Part 1 of 88
The Ring programming language version 1.3 book - Part 1 of 88The Ring programming language version 1.3 book - Part 1 of 88
The Ring programming language version 1.3 book - Part 1 of 88
 
The Ring programming language version 1.2 book - Part 1 of 84
The Ring programming language version 1.2 book - Part 1 of 84The Ring programming language version 1.2 book - Part 1 of 84
The Ring programming language version 1.2 book - Part 1 of 84
 
Livre blanc de J2ME
Livre blanc de J2MELivre blanc de J2ME
Livre blanc de J2ME
 
The Ring programming language version 1.4 book - Part 1 of 30
The Ring programming language version 1.4 book - Part 1 of 30The Ring programming language version 1.4 book - Part 1 of 30
The Ring programming language version 1.4 book - Part 1 of 30
 
La base de données Oracle
La base de données OracleLa base de données Oracle
La base de données Oracle
 
Oracle 11g exploitation
Oracle 11g exploitationOracle 11g exploitation
Oracle 11g exploitation
 
The Ring programming language version 1.7 book - Part 1 of 196
The Ring programming language version 1.7 book - Part 1 of 196The Ring programming language version 1.7 book - Part 1 of 196
The Ring programming language version 1.7 book - Part 1 of 196
 
initiation-au-langage-c-et-exercices-corriges
initiation-au-langage-c-et-exercices-corrigesinitiation-au-langage-c-et-exercices-corriges
initiation-au-langage-c-et-exercices-corriges
 
Access 2007
Access 2007Access 2007
Access 2007
 
Ovidentia Guide Utilisateur
Ovidentia Guide UtilisateurOvidentia Guide Utilisateur
Ovidentia Guide Utilisateur
 
Polycop td access 2007 facturation
Polycop td access 2007  facturationPolycop td access 2007  facturation
Polycop td access 2007 facturation
 

En vedette

Apresentação ri v encontro_23nov11_final_wf
Apresentação ri v encontro_23nov11_final_wfApresentação ri v encontro_23nov11_final_wf
Apresentação ri v encontro_23nov11_final_wfCPFL RI
 
Zoom sur les bibliothèques et médiathèqes Vosgiennes
Zoom sur les bibliothèques et médiathèqes VosgiennesZoom sur les bibliothèques et médiathèqes Vosgiennes
Zoom sur les bibliothèques et médiathèqes Vosgiennesmaurand
 
Spainish by nilesh
Spainish by nilesh Spainish by nilesh
Spainish by nilesh George Dixon
 
Expertise Muller en design, conception et fabrication horlogère
Expertise Muller en design, conception et fabrication horlogèreExpertise Muller en design, conception et fabrication horlogère
Expertise Muller en design, conception et fabrication horlogèreDamoiselle D
 
Chiffre clé de la consommation énergétique en France - Ademe 2013
Chiffre clé de la consommation énergétique en France - Ademe 2013Chiffre clé de la consommation énergétique en France - Ademe 2013
Chiffre clé de la consommation énergétique en France - Ademe 2013Techologis
 
Santander | VII Conferência do Setor Elétrico
Santander | VII Conferência do Setor ElétricoSantander | VII Conferência do Setor Elétrico
Santander | VII Conferência do Setor ElétricoCPFL RI
 
Approche de l’activité des théâtres de ville franciliens (2012-2013). Un port...
Approche de l’activité des théâtres de ville franciliens (2012-2013). Un port...Approche de l’activité des théâtres de ville franciliens (2012-2013). Un port...
Approche de l’activité des théâtres de ville franciliens (2012-2013). Un port...La French Team
 

En vedette (10)

Venture Capital World Summit 2015 Alan Thomas
Venture Capital World Summit 2015 Alan ThomasVenture Capital World Summit 2015 Alan Thomas
Venture Capital World Summit 2015 Alan Thomas
 
Venture Capital World Summit 2015 Moriah Priestley
Venture Capital World Summit 2015 Moriah PriestleyVenture Capital World Summit 2015 Moriah Priestley
Venture Capital World Summit 2015 Moriah Priestley
 
Apresentação ri v encontro_23nov11_final_wf
Apresentação ri v encontro_23nov11_final_wfApresentação ri v encontro_23nov11_final_wf
Apresentação ri v encontro_23nov11_final_wf
 
Social media for business
Social media for businessSocial media for business
Social media for business
 
Zoom sur les bibliothèques et médiathèqes Vosgiennes
Zoom sur les bibliothèques et médiathèqes VosgiennesZoom sur les bibliothèques et médiathèqes Vosgiennes
Zoom sur les bibliothèques et médiathèqes Vosgiennes
 
Spainish by nilesh
Spainish by nilesh Spainish by nilesh
Spainish by nilesh
 
Expertise Muller en design, conception et fabrication horlogère
Expertise Muller en design, conception et fabrication horlogèreExpertise Muller en design, conception et fabrication horlogère
Expertise Muller en design, conception et fabrication horlogère
 
Chiffre clé de la consommation énergétique en France - Ademe 2013
Chiffre clé de la consommation énergétique en France - Ademe 2013Chiffre clé de la consommation énergétique en France - Ademe 2013
Chiffre clé de la consommation énergétique en France - Ademe 2013
 
Santander | VII Conferência do Setor Elétrico
Santander | VII Conferência do Setor ElétricoSantander | VII Conferência do Setor Elétrico
Santander | VII Conferência do Setor Elétrico
 
Approche de l’activité des théâtres de ville franciliens (2012-2013). Un port...
Approche de l’activité des théâtres de ville franciliens (2012-2013). Un port...Approche de l’activité des théâtres de ville franciliens (2012-2013). Un port...
Approche de l’activité des théâtres de ville franciliens (2012-2013). Un port...
 

Similaire à Développez en java

Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...
Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...
Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...mouafekmazia
 
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)safwenbenfredj
 
STM32F4+Android Application
STM32F4+Android ApplicationSTM32F4+Android Application
STM32F4+Android ApplicationHajer Dahech
 
Guide Utilisateur Codendi 4.0
Guide Utilisateur Codendi 4.0Guide Utilisateur Codendi 4.0
Guide Utilisateur Codendi 4.0Codendi
 
Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...
Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...
Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...Yasmine Lachheb
 
Rapport pfe isi_Big data Analytique
Rapport pfe isi_Big data AnalytiqueRapport pfe isi_Big data Analytique
Rapport pfe isi_Big data AnalytiqueYosra ADDALI
 
Les serious games - Mémoire de master en Sc. Educ de Bernard Lamailloux
Les serious games - Mémoire de master en Sc. Educ de Bernard LamaillouxLes serious games - Mémoire de master en Sc. Educ de Bernard Lamailloux
Les serious games - Mémoire de master en Sc. Educ de Bernard LamaillouxBernard Lamailloux
 
Bureau virtuel
Bureau virtuelBureau virtuel
Bureau virtuelraymen87
 
réaliser une plateforme d’automatisation et de génération des rapports de test
réaliser une plateforme d’automatisation et de génération des rapports de testréaliser une plateforme d’automatisation et de génération des rapports de test
réaliser une plateforme d’automatisation et de génération des rapports de testahmed oumezzine
 
Lavorare con java 6
Lavorare con java 6Lavorare con java 6
Lavorare con java 6Pi Libri
 
Introduction à Opencart
Introduction à OpencartIntroduction à Opencart
Introduction à Opencartmedfa
 
Reseaux sans fil dans les pays en developpement
Reseaux sans fil dans les pays en developpementReseaux sans fil dans les pays en developpement
Reseaux sans fil dans les pays en developpementmimanou
 
Rapport de pfe gestion de parc informatique et Helpdesk
Rapport de pfe gestion de parc informatique et HelpdeskRapport de pfe gestion de parc informatique et Helpdesk
Rapport de pfe gestion de parc informatique et HelpdeskRaef Ghribi
 

Similaire à Développez en java (20)

Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...
Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...
Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...
 
Administration joomla2 5
Administration joomla2 5Administration joomla2 5
Administration joomla2 5
 
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
 
STM32F4+Android Application
STM32F4+Android ApplicationSTM32F4+Android Application
STM32F4+Android Application
 
Deviens un Ninja avec Angular2
Deviens un Ninja avec Angular2Deviens un Ninja avec Angular2
Deviens un Ninja avec Angular2
 
Guide Utilisateur Codendi 4.0
Guide Utilisateur Codendi 4.0Guide Utilisateur Codendi 4.0
Guide Utilisateur Codendi 4.0
 
siem.pdf
siem.pdfsiem.pdf
siem.pdf
 
Bureautique
BureautiqueBureautique
Bureautique
 
Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...
Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...
Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...
 
Rapport pfe isi_Big data Analytique
Rapport pfe isi_Big data AnalytiqueRapport pfe isi_Big data Analytique
Rapport pfe isi_Big data Analytique
 
Belwafi bilel
Belwafi bilelBelwafi bilel
Belwafi bilel
 
Belwafi bilel
Belwafi bilelBelwafi bilel
Belwafi bilel
 
Les serious games - Mémoire de master en Sc. Educ de Bernard Lamailloux
Les serious games - Mémoire de master en Sc. Educ de Bernard LamaillouxLes serious games - Mémoire de master en Sc. Educ de Bernard Lamailloux
Les serious games - Mémoire de master en Sc. Educ de Bernard Lamailloux
 
Manuel i parapheur-v3.1
Manuel i parapheur-v3.1Manuel i parapheur-v3.1
Manuel i parapheur-v3.1
 
Bureau virtuel
Bureau virtuelBureau virtuel
Bureau virtuel
 
réaliser une plateforme d’automatisation et de génération des rapports de test
réaliser une plateforme d’automatisation et de génération des rapports de testréaliser une plateforme d’automatisation et de génération des rapports de test
réaliser une plateforme d’automatisation et de génération des rapports de test
 
Lavorare con java 6
Lavorare con java 6Lavorare con java 6
Lavorare con java 6
 
Introduction à Opencart
Introduction à OpencartIntroduction à Opencart
Introduction à Opencart
 
Reseaux sans fil dans les pays en developpement
Reseaux sans fil dans les pays en developpementReseaux sans fil dans les pays en developpement
Reseaux sans fil dans les pays en developpement
 
Rapport de pfe gestion de parc informatique et Helpdesk
Rapport de pfe gestion de parc informatique et HelpdeskRapport de pfe gestion de parc informatique et Helpdesk
Rapport de pfe gestion de parc informatique et Helpdesk
 

Dernier

SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSKennel
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...Faga1939
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Gilles Le Page
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSKennel
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSKennel
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeXL Groupe
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre françaisTxaruka
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 37
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 37
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsRajiAbdelghani
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfRiDaHAziz
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSKennel
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSKennel
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfRiDaHAziz
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 
Cours de Management des Systèmes d'information
Cours de Management des Systèmes d'informationCours de Management des Systèmes d'information
Cours de Management des Systèmes d'informationpapediallo3
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Alain Marois
 

Dernier (20)

SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
 
DO PALÁCIO À ASSEMBLEIA .
DO PALÁCIO À ASSEMBLEIA                 .DO PALÁCIO À ASSEMBLEIA                 .
DO PALÁCIO À ASSEMBLEIA .
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directe
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre français
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 temps
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdf
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 
Cours de Management des Systèmes d'information
Cours de Management des Systèmes d'informationCours de Management des Systèmes d'information
Cours de Management des Systèmes d'information
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024
 

Développez en java

  • 1. Développons en Java Jean Michel DOUDOUX
  • 2. Table des matières Développons en Java.............................................................................................................................................................1 Préambule..............................................................................................................................................................................2 A propos de ce document.........................................................................................................................................2 Remerciements.........................................................................................................................................................4 Notes de licence.......................................................................................................................................................4 Marques déposées....................................................................................................................................................5 Historique des versions............................................................................................................................................5 Partie 1 : Les bases du langage Java...................................................................................................................................8 1. Présentation de Java.........................................................................................................................................................9 1.1. Les caractéristiques...........................................................................................................................................9 1.2. Un bref historique de Java...............................................................................................................................10 1.3. Les différentes éditions et versions de Java....................................................................................................11 1.3.1. Les évolutions des plates-formes Java..................................................................................................12 1.3.2. Les différentes versions de Java............................................................................................................13 1.3.3. Java 1.0..................................................................................................................................................13 1.3.4. Java 1.1..................................................................................................................................................14 1.3.5. Java 1.2 (nom de code Playground)......................................................................................................14 1.3.6. J2SE 1.3 (nom de code Kestrel)............................................................................................................14 1.3.7. J2SE 1.4 (nom de code Merlin)............................................................................................................15 1.3.8. J2SE 5.0 (nom de code Tiger)...............................................................................................................15 1.3.9. Java SE 6 (nom de code Mustang)........................................................................................................16 1.3.9.1. Les évolutions de Java 6.............................................................................................................16 1.3.9.2. Java 6 update...............................................................................................................................19 1.3.10. Java SE 7.............................................................................................................................................27 1.3.10.1. Les JSR de Java 7.....................................................................................................................29 1.3.10.2. Java 7 update.............................................................................................................................30 1.3.11. Les futures versions de Java................................................................................................................32 1.3.12. Le résumé des différentes versions.....................................................................................................33 1.3.13. Le support des différentes versions.....................................................................................................33 1.3.14. Les extensions du JDK........................................................................................................................33 1.4. Un rapide tour d'horizon des API et de quelques outils..................................................................................34 1.5. Les différences entre Java et JavaScript..........................................................................................................35 1.6. L'installation du JDK.......................................................................................................................................36 1.6.1. L'installation de la version 1.3 du JDK de Sun sous Windows 9x........................................................36 1.6.2. L'installation de la documentation de Java 1.3 sous Windows.............................................................38 1.6.3. La configuration des variables système sous Windows 9x...................................................................39 1.6.4. Les éléments du JDK 1.3 sous Windows..............................................................................................40 1.6.5. L'installation de la version 1.4.2 du JDK de Sun sous Windows..........................................................40 1.6.6. L'installation de la version 1.5 du JDK de Sun sous Windows.............................................................41 1.6.7. Installation JDK 1.4.2 sous Linux Mandrake 10..................................................................................42 2. Les notions et techniques de base en Java....................................................................................................................46 2.1. Les concepts de base.......................................................................................................................................46 2.1.1. La compilation et l'exécution................................................................................................................46 2.1.2. Les packages.........................................................................................................................................49 2.1.3. Le déploiement sous la forme d'un jar..................................................................................................51 2.1.4. Le classpath...........................................................................................................................................52 2.1.4.1. La définition du classpath pour exécuter une application...........................................................54 2.1.4.2. La définition du classpath pour exécuter une application avec la variable CLASSPATH.........56 2.1.4.3. La définition du classpath pour exécuter une application utilisant une ou plusieurs bibliothèques.............................................................................................................................56 2.1.4.4. La définition du classpath pour exécuter une application packagée en jar.................................57 2.2. L'exécution d'une applet..................................................................................................................................59 Développons en Java
  • 3. Table des matières 3. La syntaxe et les éléments de bases de Java.................................................................................................................60 3.1. Les règles de base............................................................................................................................................60 3.2. Les identificateurs...........................................................................................................................................61 3.3. Les commentaires............................................................................................................................................61 3.4. La déclaration et l'utilisation de variables.......................................................................................................61 3.4.1. La déclaration de variables...................................................................................................................61 3.4.2. Les types élémentaires..........................................................................................................................62 3.4.3. Le format des types élémentaires..........................................................................................................63 3.4.4. L'initialisation des variables..................................................................................................................64 3.4.5. L'affectation..........................................................................................................................................64 3.4.6. Les comparaisons..................................................................................................................................65 3.5. Les opérations arithmétiques...........................................................................................................................65 3.5.1. L'arithmétique entière...........................................................................................................................66 3.5.2. L'arithmétique en virgule flottante........................................................................................................66 3.5.3. L'incrémentation et la décrémentation..................................................................................................67 3.6. La priorité des opérateurs................................................................................................................................67 3.7. Les structures de contrôles..............................................................................................................................68 3.7.1. Les boucles............................................................................................................................................68 3.7.2. Les branchements conditionnels...........................................................................................................70 3.7.3. Les débranchements..............................................................................................................................70 3.8. Les tableaux.....................................................................................................................................................70 3.8.1. La déclaration des tableaux...................................................................................................................71 3.8.2. L'initialisation explicite d'un tableau....................................................................................................71 3.8.3. Le parcours d'un tableau.......................................................................................................................72 3.9. Les conversions de types.................................................................................................................................72 3.9.1. La conversion d'un entier int en chaîne de caractère String..................................................................73 3.9.2. La conversion d'une chaîne de caractères String en entier int..............................................................73 3.9.3. La conversion d'un entier int en entier long..........................................................................................73 3.10. La manipulation des chaînes de caractères...................................................................................................73 3.10.1. Les caractères spéciaux dans les chaines............................................................................................74 3.10.2. L'addition de chaînes de caractères.....................................................................................................74 3.10.3. La comparaison de deux chaines........................................................................................................75 3.10.4. La détermination de la longueur d'une chaine....................................................................................75 3.10.5. La modification de la casse d'une chaine............................................................................................75 4. La programmation orientée objet.................................................................................................................................76 4.1. Le concept de classe........................................................................................................................................76 4.1.1. La syntaxe de déclaration d'une classe..................................................................................................77 4.2. Les objets.........................................................................................................................................................77 4.2.1. La création d'un objet : instancier une classe........................................................................................77 4.2.2. La durée de vie d'un objet.....................................................................................................................79 4.2.3. La création d'objets identiques..............................................................................................................79 4.2.4. Les références et la comparaison d'objets.............................................................................................79 4.2.5. L'objet null............................................................................................................................................80 4.2.6. Les variables de classes.........................................................................................................................80 4.2.7. La variable this......................................................................................................................................80 4.2.8. L'opérateur instanceof...........................................................................................................................81 4.3. Les modificateurs d'accès................................................................................................................................81 4.3.1. Les mots clés qui gèrent la visibilité des entités...................................................................................82 4.3.2. Le mot clé static....................................................................................................................................82 4.3.3. Le mot clé final.....................................................................................................................................83 4.3.4. Le mot clé abstract................................................................................................................................84 4.3.5. Le mot clé synchronized.......................................................................................................................84 4.3.6. Le mot clé volatile.................................................................................................................................84 4.3.7. Le mot clé native...................................................................................................................................85 4.4. Les propriétés ou attributs...............................................................................................................................85 4.4.1. Les variables d'instances.......................................................................................................................85 4.4.2. Les variables de classes.........................................................................................................................85 4.4.3. Les constantes.......................................................................................................................................85 Développons en Java
  • 4. Table des matières 4. La programmation orientée objet 4.5. Les méthodes...................................................................................................................................................85 4.5.1. La syntaxe de la déclaration..................................................................................................................86 4.5.2. La transmission de paramètres..............................................................................................................87 4.5.3. L'émission de messages........................................................................................................................87 4.5.4. L'enchainement de références à des variables et à des méthodes.........................................................88 4.5.5. La surcharge de méthodes.....................................................................................................................88 4.5.6. Les constructeurs...................................................................................................................................89 4.5.7. Le destructeur........................................................................................................................................89 4.5.8. Les accesseurs.......................................................................................................................................90 4.6. L'héritage.........................................................................................................................................................90 4.6.1. Le principe de l'héritage........................................................................................................................90 4.6.2. La mise en oeuvre de l'héritage.............................................................................................................91 4.6.3. L'accès aux propriétés héritées..............................................................................................................91 4.6.4. La redéfinition d'une méthode héritée...................................................................................................91 4.6.5. Le polymorphisme................................................................................................................................91 4.6.6. Le transtypage induit par l'héritage facilite le polymorphisme.............................................................91 4.6.7. Les interfaces et l'héritage multiple......................................................................................................92 4.6.8. Des conseils sur l'héritage.....................................................................................................................93 4.7. Les packages...................................................................................................................................................94 4.7.1. La définition d'un package....................................................................................................................94 4.7.2. L'utilisation d'un package......................................................................................................................94 4.7.3. La collision de classes...........................................................................................................................95 4.7.4. Les packages et l'environnement système.............................................................................................95 4.8. Les classes internes.........................................................................................................................................95 4.8.1. Les classes internes non statiques.........................................................................................................97 4.8.2. Les classes internes locales.................................................................................................................101 4.8.3. Les classes internes anonymes............................................................................................................104 4.8.4. Les classes internes statiques..............................................................................................................104 4.9. La gestion dynamique des objets..................................................................................................................106 5. Les packages de bases...................................................................................................................................................107 5.1. Les packages selon la version du JDK..........................................................................................................107 5.2. Le package java.lang.....................................................................................................................................113 5.2.1. La classe Object..................................................................................................................................114 5.2.1.1. La méthode getClass()..............................................................................................................114 5.2.1.2. La méthode toString()...............................................................................................................114 5.2.1.3. La méthode equals()..................................................................................................................114 5.2.1.4. La méthode finalize()................................................................................................................114 5.2.1.5. La méthode clone()...................................................................................................................115 5.2.2. La classe String...................................................................................................................................115 5.2.3. La classe StringBuffer.........................................................................................................................117 5.2.4. Les wrappers.......................................................................................................................................118 5.2.5. La classe System.................................................................................................................................119 5.2.5.1. L'utilisation des flux d'entrée/sortie standard............................................................................119 5.2.5.2. Les variables d'environnement et les propriétés du système....................................................121 5.2.6. Les classes Runtime et Process...........................................................................................................123 5.3. La présentation rapide du package awt java..................................................................................................126 5.4. La présentation rapide du package java.io....................................................................................................126 5.5. Le package java.util.......................................................................................................................................126 5.5.1. La classe StringTokenizer...................................................................................................................126 5.5.2. La classe Random...............................................................................................................................127 5.5.3. Les classes Date et Calendar...............................................................................................................127 5.5.4. La classe SimpleDateFormat..............................................................................................................128 5.5.5. La classe Vector..................................................................................................................................129 5.5.6. La classe Hashtable.............................................................................................................................130 5.5.7. L'interface Enumeration......................................................................................................................130 5.5.8. La manipulation d'archives zip...........................................................................................................131 5.5.9. Les expressions régulières..................................................................................................................134 Développons en Java
  • 5. Table des matières 5. Les packages de bases 5.5.9.1. Les motifs.................................................................................................................................134 5.5.9.2. La classe Pattern.......................................................................................................................136 5.5.9.3. La classe Matcher.....................................................................................................................137 5.5.10. La classe Formatter...........................................................................................................................139 5.5.11. La classe Scanner..............................................................................................................................139 5.6. La présentation rapide du package java.net..................................................................................................140 5.7. La présentation rapide du package java.applet..............................................................................................140 6. Les fonctions mathématiques.......................................................................................................................................141 6.1. Les variables de classe..................................................................................................................................141 6.2. Les fonctions trigonométriques.....................................................................................................................141 6.3. Les fonctions de comparaisons.....................................................................................................................142 6.4. Les arrondis...................................................................................................................................................142 6.4.1. La méthode round(n)...........................................................................................................................142 6.4.2. La méthode rint(double)......................................................................................................................143 6.4.3. La méthode floor(double)...................................................................................................................143 6.4.4. La méthode ceil(double).....................................................................................................................143 6.4.5. La méthode abs(x)...............................................................................................................................144 6.5. La méthode IEEEremainder(double, double)................................................................................................144 6.6. Les Exponentielles et puissances..................................................................................................................144 6.6.1. La méthode pow(double, double).......................................................................................................144 6.6.2. La méthode sqrt(double).....................................................................................................................145 6.6.3. La méthode exp(double).....................................................................................................................145 6.6.4. La méthode log(double)......................................................................................................................145 6.7. La génération de nombres aléatoires.............................................................................................................145 6.8. La classe BigDecimal....................................................................................................................................146 7. La gestion des exceptions.............................................................................................................................................152 7.1. Les mots clés try, catch et finally..................................................................................................................153 7.2. La classe Throwable......................................................................................................................................154 7.3. Les classes Exception, RunTimeException et Error.....................................................................................155 7.4. Les exceptions personnalisées.......................................................................................................................155 7.5. Les exceptions chaînées................................................................................................................................156 7.6. L'utilisation des exceptions...........................................................................................................................157 8. Le multitâche.................................................................................................................................................................159 8.1. L'interface Runnable.....................................................................................................................................159 8.2. La classe Thread............................................................................................................................................160 8.3. La création et l'exécution d'un thread............................................................................................................162 8.3.1. La dérivation de la classe Thread........................................................................................................162 8.3.2. L'implémentation de l'interface Runnable..........................................................................................163 8.3.3. La modification de la priorité d'un thread...........................................................................................164 8.4. La classe ThreadGroup..................................................................................................................................165 8.5. Un thread en tâche de fond (démon).............................................................................................................165 8.6. L'exclusion mutuelle.....................................................................................................................................166 8.6.1. La sécurisation d'une méthode............................................................................................................166 8.6.2. La sécurisation d'un bloc.....................................................................................................................166 8.6.3. La sécurisation de variables de classes...............................................................................................167 8.6.4. La synchronisation : les méthodes wait() et notify()...........................................................................167 9. JDK 1.5 (nom de code Tiger).......................................................................................................................................168 9.1. Les nouveautés du langage Java version 1.5.................................................................................................168 9.2. L'autoboxing / unboxing................................................................................................................................169 9.3. Les importations statiques.............................................................................................................................169 9.4. Les annotations ou métadonnées (Meta Data)..............................................................................................170 9.5. Les arguments variables (varargs).................................................................................................................170 9.6. Les generics...................................................................................................................................................172 9.7. Les boucles pour le parcours des collections................................................................................................175 Développons en Java
  • 6. Table des matières 9. JDK 1.5 (nom de code Tiger) 9.8. Les énumérations (type enum)......................................................................................................................177 9.8.1. La définition d'une énumération.........................................................................................................178 9.8.2. L'utilisation d'une énumération...........................................................................................................179 9.8.3. L'enrichissement de l'énumération......................................................................................................180 9.8.4. La personnalisation de chaque élément..............................................................................................183 9.8.5. Les limitations dans la mise en oeuvre des énumérations..................................................................185 10. Les annotations...........................................................................................................................................................186 10.1. La présentation des annotations..................................................................................................................186 10.2. La mise en oeuvre des annotations..............................................................................................................187 10.3. L'utilisation des annotations........................................................................................................................188 10.3.1. La documentation..............................................................................................................................189 10.3.2. L'utilisation par le compilateur.........................................................................................................189 10.3.3. La génération de code.......................................................................................................................189 10.3.4. La génération de fichiers...................................................................................................................189 10.3.5. Les API qui utilisent les annotations.................................................................................................189 10.4. Les annotations standards............................................................................................................................190 10.4.1. L'annotation @Deprecated................................................................................................................190 10.4.2. L'annotation @Override....................................................................................................................191 10.4.3. L'annotation @SuppressWarning......................................................................................................192 10.5. Les annotations communes (Common Annotations)..................................................................................193 10.5.1. L'annotation @Generated..................................................................................................................194 10.5.2. Les annotations @Resource et @Resources.....................................................................................194 10.5.3. Les annotations @PostConstruct et @PreDestroy............................................................................195 10.6. Les annotations personnalisées...................................................................................................................195 10.6.1. La définition d'une annotation...........................................................................................................195 10.6.2. Les annotations pour les annotations................................................................................................197 10.6.2.1. L'annotation @Target.............................................................................................................197 10.6.2.2. L'annotation @Retention........................................................................................................198 10.6.2.3. L'annotation @Documented...................................................................................................198 10.6.2.4. L'annotation @Inherited.........................................................................................................199 10.7. L'exploitation des annotations.....................................................................................................................199 10.7.1. L'exploitation des annotations dans un Doclet..................................................................................199 10.7.2. L'exploitation des annotations avec l'outil Apt.................................................................................200 10.7.3. L'exploitation des annotations par introspection...............................................................................206 10.7.4. L'exploitation des annotations par le compilateur Java....................................................................208 10.8. L'API Pluggable Annotation Processing.....................................................................................................208 10.8.1. Les processeurs d'annotations...........................................................................................................209 10.8.2. L'utilisation des processeurs par le compilateur...............................................................................211 10.8.3. La création de nouveaux fichiers......................................................................................................211 10.9. Les ressources relatives aux annotations.....................................................................................................213 11. Java SE 7, le projet Coin............................................................................................................................................214 11.1. Les entiers exprimés en binaire (Binary Literals).......................................................................................215 11.2. Utilisation des underscores dans les entiers littéraux..................................................................................215 11.3. Utilisation des strings dans l'instruction switch..........................................................................................216 11.4. L'opérateur diamant.....................................................................................................................................217 11.5. L'instruction try-with-resources..................................................................................................................219 11.6. Des types plus précis lorsqu'une exception est relevée dans une clause catch...........................................227 11.7. Multiples exceptions dans une clause catch................................................................................................230 Partie 2 : Développement des interfaces graphiques.....................................................................................................233 12. Le graphisme...............................................................................................................................................................234 12.1. Les opérations sur le contexte graphique....................................................................................................234 12.1.1. Le tracé de formes géométriques......................................................................................................234 12.1.2. Le tracé de texte................................................................................................................................235 12.1.3. L'utilisation des fontes......................................................................................................................235 Développons en Java
  • 7. Table des matières 12. Le graphisme 12.1.4. La gestion de la couleur....................................................................................................................236 12.1.5. Le chevauchement de figures graphiques.........................................................................................236 12.1.6. L'effacement d'une aire.....................................................................................................................236 12.1.7. La copie d'une aire rectangulaire......................................................................................................236 13. Les éléments d'interfaces graphiques de l'AWT......................................................................................................237 13.1. Les composants graphiques.........................................................................................................................238 13.1.1. Les étiquettes.....................................................................................................................................238 13.1.2. Les boutons.......................................................................................................................................239 13.1.3. Les panneaux.....................................................................................................................................239 13.1.4. Les listes déroulantes (combobox)....................................................................................................239 13.1.5. La classe TextComponent.................................................................................................................241 13.1.6. Les champs de texte..........................................................................................................................241 13.1.7. Les zones de texte multilignes..........................................................................................................242 13.1.8. Les listes............................................................................................................................................244 13.1.9. Les cases à cocher.............................................................................................................................247 13.1.10. Les boutons radio............................................................................................................................248 13.1.11. Les barres de défilement.................................................................................................................248 13.1.12. La classe Canvas.............................................................................................................................250 13.2. La classe Component..................................................................................................................................250 13.3. Les conteneurs.............................................................................................................................................252 13.3.1. Le conteneur Panel............................................................................................................................253 13.3.2. Le conteneur Window.......................................................................................................................253 13.3.3. Le conteneur Frame..........................................................................................................................253 13.3.4. Le conteneur Dialog..........................................................................................................................255 13.4. Les menus....................................................................................................................................................255 13.4.1. Les méthodes de la classe MenuBar.................................................................................................257 13.4.2. Les méthodes de la classe Menu.......................................................................................................258 13.4.3. Les méthodes de la classe MenuItem................................................................................................258 13.4.4. Les méthodes de la classe CheckboxMenuItem...............................................................................258 13.5. La classe java.awt.Desktop.........................................................................................................................258 14. La création d'interfaces graphiques avec AWT......................................................................................................260 14.1. Le dimensionnement des composants.........................................................................................................260 14.2. Le positionnement des composants.............................................................................................................261 14.2.1. La mise en page par flot (FlowLayout).............................................................................................262 14.2.2. La mise en page bordure (BorderLayout).........................................................................................263 14.2.3. La mise en page de type carte (CardLayout)....................................................................................264 14.2.4. La mise en page GridLayout.............................................................................................................265 14.2.5. La mise en page GridBagLayout......................................................................................................266 14.3. La création de nouveaux composants à partir de Panel..............................................................................268 14.4. L'activation ou la désactivation des composants.........................................................................................268 15. L'interception des actions de l'utilisateur.................................................................................................................270 15.1. L'interception des actions de l'utilisateur avec Java version 1.0.................................................................270 15.2. L'interception des actions de l'utilisateur avec Java version 1.1.................................................................270 15.2.1. L'interface ItemListener....................................................................................................................272 15.2.2. L'interface TextListener....................................................................................................................273 15.2.3. L'interface MouseMotionListener.....................................................................................................274 15.2.4. L'interface MouseListener.................................................................................................................274 15.2.5. L'interface WindowListener..............................................................................................................275 15.2.6. Les différentes implémentations des Listeners.................................................................................276 15.2.6.1. Une classe implémentant elle même le listener......................................................................276 15.2.6.2. Une classe indépendante implémentant le listener.................................................................277 15.2.6.3. Une classe interne...................................................................................................................278 15.2.6.4. Une classe interne anonyme....................................................................................................278 15.2.7. Résumé..............................................................................................................................................279 Développons en Java
  • 8. Table des matières 16. Le développement d'interfaces graphiques avec SWING.......................................................................................280 16.1. La présentation de Swing............................................................................................................................280 16.2. Les packages Swing....................................................................................................................................281 16.3. Un exemple de fenêtre autonome................................................................................................................281 16.4. Les composants Swing................................................................................................................................282 16.4.1. La classe JFrame...............................................................................................................................283 16.4.1.1. Le comportement par défaut à la fermeture............................................................................285 16.4.1.2. La personnalisation de l'icône.................................................................................................286 16.4.1.3. Centrer une JFrame à l'écran...................................................................................................286 16.4.1.4. Les événements associées à un JFrame..................................................................................287 16.4.2. Les étiquettes : la classe JLabel........................................................................................................287 16.4.3. Les panneaux : la classe JPanel.........................................................................................................290 16.5. Les boutons.................................................................................................................................................290 16.5.1. La classe AbstractButton..................................................................................................................290 16.5.2. La classe JButton..............................................................................................................................292 16.5.3. La classe JToggleButton...................................................................................................................293 16.5.4. La classe ButtonGroup......................................................................................................................293 16.5.5. Les cases à cocher : la classe JCheckBox.........................................................................................294 16.5.6. Les boutons radio : la classe JRadioButton......................................................................................295 16.6. Les composants de saisie de texte...............................................................................................................299 16.6.1. La classe JTextComponent...............................................................................................................299 16.6.2. La classe JTextField..........................................................................................................................300 16.6.3. La classe JPasswordField..................................................................................................................301 16.6.4. La classe JFormattedTextField.........................................................................................................302 16.6.5. La classe JEditorPane........................................................................................................................302 16.6.6. La classe JTextPane..........................................................................................................................303 16.6.7. La classe JTextArea..........................................................................................................................303 16.7. Les onglets...................................................................................................................................................305 16.8. Le composant JTree....................................................................................................................................306 16.8.1. La création d'une instance de la classe JTree....................................................................................306 16.8.2. La gestion des données de l'arbre......................................................................................................309 16.8.2.1. L'interface TreeNode..............................................................................................................310 16.8.2.2. L'interface MutableTreeNode.................................................................................................311 16.8.2.3. La classe DefaultMutableTreeNode.......................................................................................311 16.8.3. La modification du contenu de l'arbre...............................................................................................312 16.8.3.1. Les modifications des noeuds fils...........................................................................................312 16.8.3.2. Les événements émis par le modèle........................................................................................313 16.8.3.3. L'édition d'un noeud................................................................................................................314 16.8.3.4. Les éditeurs personnalisés.......................................................................................................315 16.8.3.5. La définition des noeuds éditables..........................................................................................315 16.8.4. La mise en oeuvre d'actions sur l'arbre.............................................................................................316 16.8.4.1. Etendre ou refermer un noeud.................................................................................................316 16.8.4.2. La détermination du noeud sélectionné..................................................................................317 16.8.4.3. Le parcours des noeuds de l'arbre...........................................................................................317 16.8.5. La gestion des événements................................................................................................................318 16.8.5.1. La classe TreePath..................................................................................................................319 16.8.5.2. La gestion de la sélection d'un noeud.....................................................................................320 16.8.5.3. Les événements lies à la sélection de noeuds.........................................................................321 16.8.5.4. Les événements lorsqu'un noeud est étendu ou refermé.........................................................323 16.8.5.5. Le contrôle des actions pour étendre ou refermer un noeud...................................................324 16.8.6. La personnalisation du rendu............................................................................................................324 16.8.6.1. Personnaliser le rendu des noeuds..........................................................................................325 16.8.6.2. Les bulles d'aides (Tooltips)...................................................................................................328 16.9. Les menus....................................................................................................................................................328 16.9.1. La classe JMenuBar..........................................................................................................................331 16.9.2. La classe JMenuItem.........................................................................................................................333 16.9.3. La classe JPopupMenu......................................................................................................................333 16.9.4. La classe JMenu................................................................................................................................335 16.9.5. La classe JCheckBoxMenuItem........................................................................................................336 Développons en Java
  • 9. Table des matières 16. Le développement d'interfaces graphiques avec SWING 16.9.6. La classe JRadioButtonMenuItem....................................................................................................336 16.9.7. La classe JSeparator..........................................................................................................................336 16.10. L'affichage d'une image dans une application...........................................................................................337 17. Le développement d'interfaces graphiques avec SWT............................................................................................342 17.1. La présentation de SWT..............................................................................................................................342 17.2. Un exemple très simple...............................................................................................................................344 17.3. La classe SWT.............................................................................................................................................345 17.4. L'objet Display............................................................................................................................................345 17.5. L'objet Shell.................................................................................................................................................345 17.6. Les composants...........................................................................................................................................347 17.6.1. La classe Control...............................................................................................................................347 17.6.2. Les contrôles de base........................................................................................................................347 17.6.2.1. La classe Button......................................................................................................................348 17.6.2.2. La classe Label........................................................................................................................348 17.6.2.3. La classe Text.........................................................................................................................349 17.6.3. Les contrôles de type liste.................................................................................................................350 17.6.3.1. La classe Combo.....................................................................................................................350 17.6.3.2. La classe List...........................................................................................................................351 17.6.4. Les contrôles pour les menus............................................................................................................351 17.6.4.1. La classe Menu.......................................................................................................................351 17.6.4.2. La classe MenuItem................................................................................................................352 17.6.5. Les contrôles de sélection ou d'affichage d'une valeur.....................................................................353 17.6.5.1. La classe ProgressBar.............................................................................................................353 17.6.5.2. La classe Scale........................................................................................................................354 17.6.5.3. La classe Slider.......................................................................................................................354 17.6.6. Les contrôles de type « onglets »......................................................................................................355 17.6.6.1. La classe TabFolder................................................................................................................355 17.6.6.2. La classe TabItem...................................................................................................................356 17.6.7. Les contrôles de type « tableau »......................................................................................................356 17.6.7.1. La classe Table........................................................................................................................356 17.6.7.2. La classe TableColumn...........................................................................................................358 17.6.7.3. La classe TableItem................................................................................................................358 17.6.8. Les contrôles de type « arbre ».........................................................................................................359 17.6.8.1. La classe Tree.........................................................................................................................359 17.6.8.2. La classe TreeItem..................................................................................................................360 17.6.9. La classe ScrollBar............................................................................................................................360 17.6.10. Les contrôles pour le graphisme.....................................................................................................360 17.6.10.1. La classe Canvas...................................................................................................................360 17.6.10.2. La classe GC.........................................................................................................................361 17.6.10.3. La classe Color......................................................................................................................362 17.6.10.4. La classe Font.......................................................................................................................362 17.6.10.5. La classe Image.....................................................................................................................363 17.7. Les conteneurs.............................................................................................................................................364 17.7.1. Les conteneurs de base......................................................................................................................364 17.7.1.1. La classe Composite...............................................................................................................364 17.7.1.2. La classe Group.......................................................................................................................366 17.7.2. Les contrôles de type « barre d'outils ».............................................................................................366 17.7.2.1. La classe ToolBar...................................................................................................................366 17.7.2.2. La classe ToolItem..................................................................................................................367 17.7.2.3. Les classes CoolBar et Cooltem.............................................................................................369 17.8. La gestion des erreurs..................................................................................................................................370 17.9. Le positionnement des contrôles.................................................................................................................370 17.9.1. Le positionnement absolu.................................................................................................................371 17.9.2. Le positionnement relatif avec les LayoutManager..........................................................................371 17.9.2.1. FillLayout................................................................................................................................371 17.9.2.2. RowLayout..............................................................................................................................372 17.9.2.3. GridLayout..............................................................................................................................373 Développons en Java
  • 10. Table des matières 17. Le développement d'interfaces graphiques avec SWT 17.9.2.4. FormLayout............................................................................................................................376 17.10. La gestion des événements........................................................................................................................376 17.10.1. L'interface KeyListener...................................................................................................................377 17.10.2. L'interface MouseListener...............................................................................................................379 17.10.3. L'interface MouseMoveListener.....................................................................................................380 17.10.4. L'interface MouseTrackListener.....................................................................................................381 17.10.5. L'interface ModifyListener.............................................................................................................381 17.10.6. L'interface VerifyText()..................................................................................................................382 17.10.7. L'interface FocusListener................................................................................................................383 17.10.8. L'interface TraverseListener...........................................................................................................383 17.10.9. L'interface PaintListener.................................................................................................................384 17.11. Les boîtes de dialogue...............................................................................................................................385 17.11.1. Les boîtes de dialogue prédéfinies..................................................................................................386 17.11.1.1. La classe MessageBox..........................................................................................................386 17.11.1.2. La classe ColorDialog...........................................................................................................387 17.11.1.3. La classe FontDialog.............................................................................................................387 17.11.1.4. La classe FileDialog..............................................................................................................388 17.11.1.5. La classe DirectoryDialog.....................................................................................................389 17.11.1.6. La classe PrintDialog............................................................................................................390 17.11.2. Les boites de dialogue personnalisées............................................................................................391 18. JFace............................................................................................................................................................................393 18.1. La présentation de JFace.............................................................................................................................393 18.2. La structure générale d'une application.......................................................................................................394 18.3. Les boites de dialogue.................................................................................................................................395 18.3.1. L'affichage des messages d'erreur.....................................................................................................395 18.3.2. L'affichage des messages d'information à l'utilisateur......................................................................396 18.3.3. La saisie d'une valeur par l'utilisateur...............................................................................................398 18.3.4. La boîte de dialogue pour afficher la progression d'un traitement....................................................399 Partie 3 : Les API avancées..............................................................................................................................................403 19. Les collections..............................................................................................................................................................405 19.1. Présentation du framework collection.........................................................................................................405 19.2. Les interfaces des collections......................................................................................................................406 19.2.1. L'interface Collection........................................................................................................................407 19.2.2. L'interface Iterator.............................................................................................................................408 19.3. Les listes......................................................................................................................................................409 19.3.1. L'interface List..................................................................................................................................409 19.3.2. Les listes chaînées : la classe LinkedList..........................................................................................410 19.3.3. L'interface ListIterator.......................................................................................................................411 19.3.4. Les tableaux redimensionnables : la classe ArrayList......................................................................411 19.4. Les ensembles.............................................................................................................................................412 19.4.1. L'interface Set...................................................................................................................................412 19.4.2. L'interface SortedSet.........................................................................................................................412 19.4.3. La classe HashSet..............................................................................................................................413 19.4.4. La classe TreeSet..............................................................................................................................413 19.5. Les collections gérées sous la forme clé/valeur..........................................................................................414 19.5.1. L'interface Map.................................................................................................................................414 19.5.2. L'interface SortedMap.......................................................................................................................415 19.5.3. La classe Hashtable...........................................................................................................................415 19.5.4. La classe TreeMap............................................................................................................................416 19.5.5. La classe HashMap...........................................................................................................................416 19.6. Le tri des collections...................................................................................................................................417 19.6.1. L'interface Comparable.....................................................................................................................417 19.6.2. L'interface Comparator.....................................................................................................................417 19.7. Les algorithmes...........................................................................................................................................417 19.8. Les exceptions du framework.....................................................................................................................419 Développons en Java
  • 11. Table des matières 20. Les flux.........................................................................................................................................................................420 20.1. La présentation des flux..............................................................................................................................420 20.2. Les classes de gestion des flux....................................................................................................................420 20.3. Les flux de caractères..................................................................................................................................422 20.3.1. La classe Reader................................................................................................................................423 20.3.2. La classe Writer................................................................................................................................424 20.3.3. Les flux de caractères avec un fichier...............................................................................................424 20.3.3.1. Les flux de caractères en lecture sur un fichier.......................................................................424 20.3.3.2. Les flux de caractères en écriture sur un fichier.....................................................................425 20.3.4. Les flux de caractères tamponnés avec un fichier.............................................................................425 20.3.4.1. Les flux de caractères tamponnés en lecture avec un fichier..................................................425 20.3.4.2. Les flux de caractères tamponnés en écriture avec un fichier................................................426 20.3.4.3. La classe PrintWriter...............................................................................................................427 20.4. Les flux d'octets...........................................................................................................................................429 20.4.1. Les flux d'octets avec un fichier........................................................................................................429 20.4.1.1. Les flux d'octets en lecture sur un fichier...............................................................................430 20.4.1.2. Les flux d'octets en écriture sur un fichier..............................................................................430 20.4.2. Les flux d'octets tamponnés avec un fichier.....................................................................................432 20.5. La classe File...............................................................................................................................................432 20.6. Les fichiers à accès direct............................................................................................................................434 20.7. La classe java.io.Console............................................................................................................................436 21. NIO 2............................................................................................................................................................................437 21.1. Les entrées/sorties avec Java.......................................................................................................................438 21.2. Les principales classes et interfaces............................................................................................................438 21.3. L'interface Path............................................................................................................................................439 21.3.1. L'obtention d'une instance de type Path............................................................................................440 21.3.2. L'obtention d'éléments du chemin.....................................................................................................440 21.3.3. La manipulation d'un chemin............................................................................................................442 21.3.4. La comparaison de chemins..............................................................................................................443 21.3.5. La conversion d'un chemin...............................................................................................................444 21.4. Glob.............................................................................................................................................................445 21.5. La classe Files.............................................................................................................................................447 21.5.1. Les vérifications sur un fichier ou un répertoire...............................................................................447 21.5.2. La création d'un fichier ou d'un répertoire........................................................................................449 21.5.3. La copie d'un fichier ou d'un répertoire............................................................................................451 21.5.4. Le déplacement d'un fichier ou d'un répertoire.................................................................................453 21.5.5. La suppression d'un fichier ou d'un répertoire..................................................................................455 21.5.6. L'obtention du type de fichier...........................................................................................................456 21.6. Le parcourt du contenu de répertoires.........................................................................................................457 21.6.1. Le parcourt d'un répertoire................................................................................................................457 21.6.2. Le parcourt d'une hiérarchie de répertoires.......................................................................................460 21.6.3. Les opérations récursives..................................................................................................................462 21.7. L'utilisation de systèmes de gestion de fichiers..........................................................................................463 21.7.1. La classe FileSystems.......................................................................................................................463 21.7.2. La classe FileSystem.........................................................................................................................464 21.7.3. La création d'une implémentation de FileSystem.............................................................................464 21.7.4. Une implémentation de FileSystem pour les fichiers Zip.................................................................465 21.8. La lecture et l'écriture dans un fichier.........................................................................................................466 21.8.1. Les options d'ouverture d'un fichier..................................................................................................467 21.8.2. La lecture et l'écriture de l'intégralité d'un fichier.............................................................................468 21.8.3. La lecture et l'écriture bufférisée d'un fichier....................................................................................469 21.8.4. La lecture et l'écriture d'un flux d'octets...........................................................................................470 21.8.5. La lecture et l'écriture d'un fichier avec un channel..........................................................................471 21.9. Les liens et les liens symboliques...............................................................................................................472 21.9.1. La création d'un lien physique..........................................................................................................473 21.9.2. La création d'un lien symbolique......................................................................................................473 21.9.3. L'utilisation des liens et des liens symboliques.................................................................................474 21.10. La gestion des attributs..............................................................................................................................474 Développons en Java
  • 12. Table des matières 21. NIO 2 21.10.1. La gestion individuelle des attributs...............................................................................................474 21.10.2. La gestion de plusieurs attributs......................................................................................................475 21.10.3. L'utilisation des vues.......................................................................................................................477 21.10.4. La gestion des permissions DOS....................................................................................................478 21.10.5. La gestion des permissions Posix....................................................................................................479 21.11. La gestion des unités de stockages............................................................................................................481 21.12. Les notifications de changements dans un répertoire................................................................................482 21.12.1. La surveillance d'un répertoire........................................................................................................482 21.12.2. L'obtention des événements............................................................................................................484 21.12.3. Le traitement des événements.........................................................................................................485 21.12.4. Un exemple complet.......................................................................................................................486 21.12.5. L'utilisation et les limites de l'API WatchService...........................................................................488 21.13. La gestion des erreurs et la libération des ressources................................................................................488 21.14. L'interopérabilité avec le code existant.....................................................................................................490 21.14.1. L'équivalence des fonctionnalités entre java.io et NIO2.................................................................491 22. La sérialisation............................................................................................................................................................493 22.1. Les classes et les interfaces de la sérialisation............................................................................................493 22.1.1. L'interface Serializable......................................................................................................................493 22.1.2. La classe ObjectOuputStream...........................................................................................................494 22.1.3. La classe ObjectInputStream............................................................................................................495 22.2. Le mot clé transient.....................................................................................................................................496 22.3. La sérialisation personnalisée......................................................................................................................497 22.3.1. L'interface Externalizable.................................................................................................................497 23. L'interaction avec le réseau.......................................................................................................................................498 23.1. L'introduction aux concepts liés au réseau..................................................................................................498 23.2. Les adresses internet....................................................................................................................................499 23.2.1. La classe InetAddress........................................................................................................................499 23.3. L'accès aux ressources avec une URL.........................................................................................................500 23.3.1. La classe URL...................................................................................................................................501 23.3.2. La classe URLConnection................................................................................................................501 23.3.3. La classe URLEncoder......................................................................................................................502 23.3.4. La classe HttpURLConnection.........................................................................................................503 23.4. L'utilisation du protocole TCP....................................................................................................................504 23.4.1. La classe SocketServer......................................................................................................................504 23.4.2. La classe Socket................................................................................................................................506 23.5. L'utilisation du protocole UDP....................................................................................................................507 23.5.1. La classe DatagramSocket................................................................................................................507 23.5.2. La classe DatagramPacket................................................................................................................508 23.5.3. Un exemple de serveur et de client...................................................................................................508 23.6. Les exceptions liées au réseau.....................................................................................................................510 23.7. Les interfaces de connexions au réseau.......................................................................................................510 24. La gestion dynamique des objets et l'introspection.................................................................................................512 24.1. La classe Class............................................................................................................................................513 24.1.1. L'obtention d'un objet de type Class.................................................................................................513 24.1.1.1. La détermination de la classe d'un objet.................................................................................513 24.1.1.2. L'obtention d'un objet Class à partir d'un nom de classe........................................................513 24.1.1.3. Une troisième façon d'obtenir un objet Class.........................................................................514 24.1.2. Les méthodes de la classe Class........................................................................................................514 24.2. La recherche des informations sur une classe.............................................................................................515 24.2.1. La recherche de la classe mère d'une classe......................................................................................515 24.2.2. La recherche des modificateurs d'une classe.....................................................................................515 24.2.3. La recherche des interfaces implémentées par une classe................................................................516 24.2.4. La recherche des champs publics......................................................................................................516 24.2.5. La recherche des paramètres d'une méthode ou d'un constructeur...................................................517 24.2.6. La recherche des constructeurs de la classe......................................................................................518 Développons en Java
  • 13. Table des matières 24. La gestion dynamique des objets et l'introspection 24.2.7. La recherche des méthodes publiques...............................................................................................519 24.2.8. La recherche de toutes les méthodes.................................................................................................520 24.3. La définition dynamique d'objets................................................................................................................520 24.3.1. La création d'objets grâce à la classe Class.......................................................................................520 24.3.2. La création d'objets grâce à la classe Constructor.............................................................................521 24.4. L'exécution dynamique d'une méthode.......................................................................................................523 25. L'appel de méthodes distantes : RMI.......................................................................................................................524 25.1. La présentation et l'architecture de RMI.....................................................................................................524 25.2. Les différentes étapes pour créer un objet distant et l'appeler avec RMI....................................................524 25.3. Le développement coté serveur...................................................................................................................525 25.3.1. La définition d'une interface qui contient les méthodes de l'objet distant........................................525 25.3.2. L'écriture d'une classe qui implémente cette interface......................................................................525 25.3.3. L'écriture d'une classe pour instancier l'objet et l'enregistrer dans le registre...................................526 25.3.3.1. La mise en place d'un security manager.................................................................................526 25.3.3.2. L'instanciation d'un objet de la classe distante........................................................................527 25.3.3.3. L'enregistrement dans le registre de noms RMI.....................................................................527 25.3.3.4. Le lancement dynamique du registre de noms RMI...............................................................527 25.4. Le développement coté client......................................................................................................................528 25.4.1. La mise en place d'un security manager............................................................................................528 25.4.2. L'obtention d'une référence sur l'objet distant à partir de son nom...................................................529 25.4.3. L'appel à la méthode à partir de la référence sur l'objet distant........................................................529 25.4.4. L'appel d'une méthode distante dans une applet...............................................................................530 25.5. La génération de la classe stub....................................................................................................................530 25.6. La mise en oeuvre des objets RMI..............................................................................................................531 25.6.1. Le lancement du registre RMI..........................................................................................................531 25.6.2. L'instanciation et l'enregistrement de l'objet distant.........................................................................531 25.6.3. Le lancement de l'application cliente................................................................................................531 26. L'internationalisation.................................................................................................................................................534 26.1. Les objets de type Locale............................................................................................................................534 26.1.1. La création d'un objet Locale............................................................................................................534 26.1.2. L'obtention de la liste des Locales disponibles.................................................................................535 26.1.3. L'utilisation d'un objet Locale...........................................................................................................536 26.2. La classe ResourceBundle...........................................................................................................................536 26.2.1. La création d'un objet ResourceBundle............................................................................................536 26.2.2. Les sous classes de ResourceBundle................................................................................................537 26.2.2.1. L'utilisation de PropertyResourceBundle...............................................................................537 26.2.2.2. L'utilisation de ListResourceBundle.......................................................................................537 26.2.3. L'obtention d'un texte d'un objet ResourceBundle............................................................................538 26.3. Un guide pour réaliser la localisation..........................................................................................................538 26.3.1. L'utilisation d'un ResourceBundle avec un fichier propriétés...........................................................538 26.3.2. Des exemples de classes utilisant PropertiesResourceBundle..........................................................539 26.3.3. L'utilisation de la classe ListResourceBundle...................................................................................540 26.3.4. Des exemples de classes utilisant ListResourceBundle....................................................................541 26.3.5. La création de sa propre classe fille de ResourceBundle..................................................................543 27. Les composants Java beans........................................................................................................................................547 27.1. La présentation des Java beans....................................................................................................................547 27.2. Les propriétés..............................................................................................................................................548 27.2.1. Les propriétés simples.......................................................................................................................548 27.2.2. Les propriétés indexées (indexed properties)....................................................................................549 27.2.3. Les propriétés liées (Bound properties)............................................................................................549 27.2.4. Les propriétés liées avec contraintes (Constrained properties).........................................................551 27.3. Les méthodes...............................................................................................................................................553 27.4. Les événements...........................................................................................................................................553 27.5. L'introspection.............................................................................................................................................553 27.5.1. Les modèles (design patterns)...........................................................................................................554 Développons en Java