Java optimisation
Objectifs de la formation
Optimiser le code Java d'une application pour en améliorer les performances
Maîtriser les outils d'aide à l'optimisation
Optimiser le fonctionnement de la machine virtuelle
Optimiser l'utilisation des librairies standards
Mettre en oeuvre des Design Patterns significatifs
Contenu du cours
» Méthodologie et outils pour l'optimisation
Les éléments impliqués dans l'optimisation.
Le choix d'un environnement d'exécution performant.
Les éléments de la méthodologie.
Outils de profiling et de visualisation de la mémoire. Outils de tests et d'aide (findBugs, CheckStyle...).
Le choix du compilateur et de la JVM.
Travaux pratiques
Utilisation des profilers hprof et jmp. Utilisation de JUnit. Profiling d'une application simple.
» L'optimisation et le langage
Identifier les vraies sources d'inefficacité.
Connaître les bons usages qui les évitent.
L'optimisation et la gestion des objets, les évaluations, les tests.
Travaux pratiques
Démonstrations de l'amélioration des performances de l'application.
» L'optimisation et les librairies standard
La manipulation des Strings. Les classes Collections.
Travaux pratiques
Démonstrations de l'amélioration des performances de l'application témoin par une meilleure manipulation des Strings et des Collections.
» L'optimisation et quelques Design Patterns
L'utilisation des interfaces et des classes abstraites.
L'utilisation de fabriques.
L'utilisation d'adaptateurs, décorateurs, proxies.
Travaux pratiques
Design Patterns pour l'optimisation des applications.
» L'optimisation et les I/O
Le choix des bonnes classes de Stream.
L'optimisation de la sérialisation.
L'optimisation spécifique aux IO réseaux.
Travaux pratiques
Amélioration des performances de l'application témoin par une meilleure gestion des IO.
» L'optimisation et le multithreading
Le modèle d'activité de Java.
La synchronisation des threads.
L'optimisation des Threads.
Travaux pratiques
Démonstrations de l'optimisation des Threads.
» L'optimisation et la gestion de la mémoire
Les principes généraux des GC (principaux algorithmes, collaboration avec l'allocateur).
L'organisation de la mémoire des principales JVM.
La saturation mémoire (cause, diagnostic, solutions).
Les évolutions Java6 : le Garbage Collector.
Travaux pratiques
Utilisation d'outils de visualisation de la mémoire, de l'activité du GC.

