|
LES COLLECTIONS (ASPECTS AVANCÉS)
RappelObjectifs des collections, description du framework. Les implémentations génériques, actions atomiques et méthodes complexes, les interfaces : Collection, List, Set, Map. Comparaisons tableaux / collections. Les collections concrètes : ArrayList, HashMap, LinkedList, HashSet, SortedSet, TreeSet, HashMap, SortedMap, TreeMap...
Aspects avancésParcours des collections, les itérateurs unidirectionnels et bidirectionnels. Les algorithmes complexes : recherche, tri, inversion, comparaison. Les collections et la gestion des threads. L'apport de Java 5 pour la gestion des collections : les génériques, « autoboxing » et « auto-unboxing » des types primitifs, les boucles... Performance des collections. Introduction à l'API Jakarta Commons. Travaux pratiques : manipulation des aspects avancés des collections.
LE MODÈLE JAVA BEANSObjectifs et enjeux des Java Beans, présentation de la spécification, syntaxe, propriétés. Sérialisation, manipulation dynamique, introspection. Meta-modèle Java, manipulation de la classe d'un objet, méthodes de la classe java.lang.Class, packages, constructeurs, modificateurs, méthodes, attributs. Travaux pratiques : création de JavaBeans. Instanciation de ces objets de manière classique, puis via réflexion.
LES ENTRÉES / SORTIESLa bibliothèque java.io, source, types de flux, spécialisation des flux, les flux filtres. La classe java.io.File, lecture d'un fichier, écriture dans un fichier, concaténation de fichiers, sérialisation d'objets. L'API NIO (New I/O). Travaux pratiques : impact de l'utilisation d'un buffer sur les performances en lecture/écriture.
|
LES THREADSDéfinition et objectifs des threads en Java, la classe Thread, l'interface Runnable. Cycle de vie d'un thread, synchronisation de threads, lock, réentrance des verrous, ordonnancement des threads, gestion des priorités, groupe de threads. Les classes Timer et TimerTask, les threads et la gestion des collections, les threads et les bibliothèques natives, les threads et les interfaces utilisateurs, les threads démons. Introduction à l'API de concurrence, développée par Doug Lea et intégrée à J2SE 5. Travaux pratiques : mise en place et synchronisation d'un producteur/consommateur.
JDBC (ASPECTS AVANCÉS)Rappel sur la mise en oeuvre d'une requête avec JDBC. Support des transactions, correspondance des types Java/SQL, gestion des exceptions, performances. Principales options et paramètres d'optimisation des requêtes SQL. Travaux pratiques : accès à une base de données. Création de requêtes retournant des objets ou des listes.
INTERNATIONALISATIONPrincipe de localisation, définition de la « locale », externalisation des ressources, gestion des formats (dates, nombres, devises, messages), formats personnalisés, gestion du singulier et du pluriel, conversion de format, le standard Unicode, manipulation de caractères.
JAVA LOGGINGObjectifs de Java Logging. Étude des niveaux de traces et des méthodes du composant de logging associé. Étude des handlers et des formatters. Internationalisation des traces. Bonnes pratiques des logs. Travaux pratiques : mise en place des traces dans chaque bloc try/catch. Internationalisation des traces créées précédemment.
OPTIMISATION DES PERFORMANCESFonctionnement des classloaders. Travaux pratiques : création d'un classLoader et chargement de classes à partir de ce classLoader. Étude de la machine virtuelle et du garbage collector. Bonnes pratiques de développement pour optimiser le code. Introduction au profiling. Travaux pratiques : étude empirique des bonnes pratiques permettant de limiter la taille des objets dans la JVM.
|