Maîtrise avancée de la programmation en Java
Programme
L’introspection et réflexion
- Les classes Class, Method, …
- Manipuler dynamiquement des objets
- Créer une instance
- Modifier un attribut
- Invoquer une méthode
Comprendre la JVM (Machine Virtuelle)
- Comprendre le GC et la gestion de la mémoire
- Les différents algorithmes de GC
- Modifier les paramètres de lancement
- Comprendre les ClassLoader
- Stratégie de chargement des classes
- Ecriture d’un ClassLoader
Gestion des flux
- Les entrées/sorties
- Sérialisation/désérialisation d’objets
- Les modifieurs Java et leurs impacts
- L’API NIO : Buffer, Channel, …
- L’API NIO2 : WatchService, …
Multi-tâche et accès concurrents
- Rappels sur les Thread
- Le parallélisme avancé (Futur, Executor, …)
- Le framework Fork/Join
- Les collections synchronisées : BlockingQueue, ConcurrentMap, …
- Les objets atomiques utilisant les principes CAS
- La gestion des verrous
Les annotations
- Création
- Exploitation au runtime
- Exploitation par le compilateur
JMX
- Présentation de l’architecture
- Les différents types de MBean
- Les services d’un agent JMX
- Les notifications
- Le monitoring d’une JVM
Service Provider Interface
- Présentation
- Exposition de services
- Consommation de services (ServiceLoader)
AOP avec AspectJ
- Présentation
- Définition d’un aspect
- Tissage à la compilation/au chargement