Extrême Java
Référence : XJAVA
Durée : 4 jours (28 heures)
Maîtriser les concepts fondamentaux du langage Java ne suffit pas pour régler certains problèmes. Seule une compréhension approfondie de sa structuration et de ses concepts permet d'en faire un meilleur usage. Un développeur Java chevronné doit savoir faire usage de ces techniques.
A l'issue de la formation "Extrême Java" vous aurez une vision plus claire de la gestion de la mémoire par la JVM. Vous pourrez mettre en place des outils de profiling pour visualiser les points bloquants de vos applications, vous aurez des pistes pour l'optimisation de votre code. Vous aurez une vue d'ensemble de la programmation multi-tâche, multi-coeur et de la programmation par aspects (AOP). Vous saurez manipuler le Bytecode et utiliser les solutions de Scripting supportées par la JVM.
Travaux pratiques :
Au travers du déroulement itératif d'un projet, vous utiliserez des techniques moins connues de programmation Java comme la gestion poussée des Threads, l'introspection du code avec les annotations ou le Scripting. Vous implémenterez l'injection de comportements en utilisant l'AOP, les proxies dynamiques et la manipulation de Bytecode.
Vous allez apprendre à :
- Programmer multi-tâche en Java
- Sécuriser une application Java
- Comprendre la gestion de la mémoire
- Tirer parti des possibilités de réflexion du langage
- Manipuler et analyser le Bytecode
- Utiliser le Scripting
- Exploiter la programmation par aspects
- Comprendre l'évolution du langage Java
- Analyser le comportement d'une application Java et en accroître les performances
Méthode pédagogique :
60% de travaux pratiques
Audience :
Développeurs Java expérimentés
Pré-requis :
- Solide expérience pratique du langage de programmation Java
Programme :
- Programmation multi-tâches
- Concepts liés au multi-tâche
- Programmer avec des Threads
- Problèmes spécifiques au multi-tâche
- Problèmes de conception associés
- Concepts avancés
- Programmer sur un processeur multi-coeur
- Impact sur les performances
- Entrées / sorties
- Flux d'objets et sérialisation avancée
- Nouvelles entrées / sorties (NIO)
- Encodage des flux de caractères
- Gestion de la mémoire
- Modèle de mémoire Java
- Garbage collection, spécifications et algorithmes
- Options de la JVM
- Objets références
- Pools d'objets
- Réflexion
- Vue d'ensemble
- Introspection de classes
- Manipuler des objets, des tableaux
- Manipuler le Bytecode
- Utiliser Javassist
- Contraintes de sécurité
- Proxies dynamiques
- ClassLoaders et manipulation de classes au chargement
- Scripting
- Interprétation et typage dynamique
- Valeur ajoutée des langages de script
- Normalisation : JSR 223 et API ScriptEngine
- BeanShell, JavaScript, Python, Groovy
- Sécurité Java
- Problématiques et principes de sécurité
- Sécurité de niveau langage et de la JVM
- API de sécurité (JAAS, JCE, JSSE)
- Annotations Java 5
- Principe des annotations
- Annotations prédéfinies
- Définir ses propres annotations
- Processeurs d'annotations (Metadata Driven Development)
- Exemples d'utilisation
- Mises en garde
- Nouveautés Java
- Apports du JDK 1.5
- JDK 1.6 et nouveautés du JDK 1.7
- Programmation par aspects (AOP)
- Principes de l'AOP
- Programmer par aspects
- Les tisseurs d'aspects Java
- Les aspects dans le profiling
- Profiling et optimisation
- Stratégie d'optimisation
- Techniques d'optimisation
- Optimisations par le compilateur et la JVM, JIT
- Coût des opérations Java
- Diagnostics et profiling