FORMATION Optimisation et Profiling des applications JAVA
Objectifs de la formation Java optimisation
Cette formation Java Optimisation de 3 jours, destinée à des développeurs ayant une bonne connaissance du langage Java, permet d'acquérir les compétences nécessaires pour profiler et donc optimiser les applications Java. Le stage commence par présenter les concepts fondamentaux du langage (gestion de la mémoire, mécanisme d'exécution) ainsi que l’infrastructure intrinsèque permettant le monitoring d'une application. Le stage se poursuit avec des recommandations de codage influençant grandement les performances d'une application. Enfin, la dernière partie se concentre sur l'outillage nécessaire pour détecter les bottlenecks ou fuite mémoire d'une application.
A qui s'adresse la formation Java optimisation
Cette formation Java optimisation s’adresse à tout développeur, chef de projet ou architecte impliqués dans la réalisation d’applications Java et plus particulièrement J2EE.
Pré-requis :
Connaissance de Java
Travaux pratiques :
Utilisation de Jprofiler, l’IDE Eclipse
Contenu de la formation Java optimisation
L'environnement Java SE 5
Concepts fondamentaux : ClassLoader, JIT, GC, Gestionnaire d'exceptions, ...
JVMTI (Java Virtual Machine Tools Interface)
Outil pour le profiling : javap, ...
Le byte code
Utilisation du désassembleur javap
Notions de pile et de tas (Stack & Heap)
Mécanisme de déclarations : variables locales et attributs
Appels de méthodes en assembleur
Le garbage collector
Aspects fondamentaux
Tâches du garbage collector : libération et défragmentation
Les différents algorithmes utilisés
Monitorer l'activité du GC
Collectes mineures et collectes majeures
Paramétrage du GC
Gestion de la taille des Heap (-Xmx, -Xms, XX:NewRatio, -XX:SurvivorRatio, ...)
Libération incrémentale des ressources
Utilisation multi-threadées du garbage collector
Bonnes pratiques
Généralités
Coût d'invocation de getter/setter
Fonctionnement de l'instruction switch
Limitation d'instances temporaires
Utilisation des chaînes de caractères
Gestion des I/O
Les collections et tableaux
Choisir les bons algorithmes et les bonnes implémentations
Collection synchronisées ou non (Vector vs ArrayList, ...)
Les différentes techniques de parcours d'une collection
Utilisation de tableaux Java typés , Accès indexés aux valeurs
Traitements des valeurs de types primitifs
Utilisation d'un pool d'instance
Implémentation d'un pool d'instances
Utilisation d'un pool d'instances
Applications multithreadées
Monitoring via JVMTI sur l'utilisation des threads
Le package java.util.concurrent
Utilisation de pool de threads
Optimisation et profiling des applications
Problématique
Support de Java SDK pour le profiling (JVMTI)
L'outil HProf de SUN, différences entre les versions disponibles
Mécanisme de HProf, interactions entre la JVM et HProf, incidence sur l'exécution
Démarrage et différentes options disponibles de HProf
Panorama de l'offre
Présentation de l'outil JProfiler
Atelier : Profiling d'une application de gestion des contacts avec JProfiler
Outils de monitoring et profiling
La JConsole
Présentation du modèle JMX (Java Monitoring eXtensions)
Démarrage d'une JVM supportant le monitoring
Lancement et attachement de la Jconsole
Les différentes possibilités de la JConsole
Java Visual VM
Présentation
Profilling de type CPU
Profilling de type Memory
TPTP (Test and Performance Tool Platform)
Rappel sur l'utilisation de plugin Eclipse
Présentation du plugin TPTP
Test de détection de fuite de mémoire
Mesure de performances d'une application Java
Taux de couverture de code
Développement d'agents JVMTI
Concepts fondamentaux de JVMTI
Les différentes versions l'interface JVMTI
Les évènements JVMTI
Codage d'agents JVMTI
Traquer l'activité du ClassLoader
Traquer l'activité en termes d'allocations dynamiques
Traquer l'activité en termes d'appels de méthodes
Atelier : Développement d'un agent JVMTI traçant les appels de méthodes
Formation JVMTI
-Formation Profiling Java
-Formation Jconsole - Java Visual VM







22-24 rue du Président Wilson 92300 Levallois-Perret Tél.: 33 (0)1 43 34 90 94 Fax : 33 (0)1 43 34 90 95