Optimisation Java, multi-threading et gestion de mémoire (niv.2) Présentation de la formation : Durée : 2 jours Toutes les applications Java utilisent les mécanismes avancés de la plateforme Java. Que vous développiez des applications de type web, client riche, et même mobile avec Android, vous serez confronté à des problématiques de multithreading, de performance, et de consommation mémoire. Prix 2015 Interentreprises : 1250€ HT De la même manière, la maîtrise complète de nombreux frameworks nécessite de comprendre le fonctionnement de la plateforme et de son mécanisme de chargement dynamique des classes. Code stage : JMT La compréhension de ces mécanismes vous apportera souvent la clé pour comprendre le fonctionnement de vos applications et optimiser leurs performances. Public : Développeur et chef de projet technique Prérequis : Maîtrise du langage Java Pédagogie : 60% de travaux pratiques Objectifs : L’objet de cette formation est de maîtriser par la pratique les concepts et fonctionnalités avancées parmi lesquelles : • • • Comment fonctionne le multi-threading • Savoir utiliser les outils de base de Java pour gérer les threads et la concurrence d’accès • Savoir utiliser les composants de plus haut niveau du JDK 5 pour gérer le multi-threading • Comprendre comment et depuis où sont chargées les classes d’une application • • Comprendre la façon dont la JVM gère sa mémoire • • Éviter les fuites mémoires Savoir quand utiliser le multi-threading et quand l’éviter Connaître les bonnes pratiques pour éviter les pièges comme les deadlocks ou la corruption mémoire • • • Comprendre le fonctionnement des Garbage Collector générationnels Utiliser les APIs de références pour gérer la mémoire et interagir avec le Garbage Collector • • Programme détaillé : • • Introduction au multi-threading Threads et processus Changements de contexte et conséquences Threads et Java Effets et dangers du parallélisme Accès concurrent Race condition La synchronisation en Java -- Le mot-clé synchronized, la règle d’or ------- • -------- Synchronized et méthode statique Barrière mémoire Erreurs classiques Le mot-clé volatile Les dangers liés à la synchronisation Deadlock et comment les éviter Autres dangers de la synchronisation Coordination des threads : mécanismes de bas niveau -- Wait, notify, sleep -- Interruption, join -- Interruption et IO -- Thread démon -- Shutdown hook Thread safety et bonnes pratiques de développement -- Immuabilité -- Les pièges à éviter -- Immuabilité effective -- Publications propres -- Objets mutables, Encapsulation, Confinement Abstractions de plus haut niveau -- Collections synchronisées, collections concurrentes -- Atomics -- Lock, Sémaphore -- CountDownLatch -- BlockingQueue -- Pooling de threads Les ClassLoaders -- Hiérarchie des ClassLoaders -- Le ClassLoader dans JEE -- Charger une ressource -- Utiliser et créer son propre ClassLoader Le fonctionnement du Garbage Collector -- Différents types de gestion mémoire -- Le rôle du Garbage Collector -- Fonctionnement du Garbage Collector -- Garbage Collectors générationnels -- Garbage Collector et fuites mémoires APIs de référence -- Références et interraction avec le Garbage Collector -- Gestion de caches -- Fuites mémoires -- Finalisation des objets : améliorations & performances Sessions Paris : 15 – 16 jan, 25 – 26 juin, 10 – 11 oct, Lyon : 4 – 5 juin, 15 – 16 oct 5 – 6 fév, Grenoble : 26 – 27 mars, Toulouse : 9 – 10 juil, 11 – 12 mai, 24 – 25 sept Inscription et informations : // JAVA & FRAMEWORKS [email protected] Paris 01 56 56 71 00 / Région 04 72 33 78 30 10 – 11 déc 3 – 4 déc