Maîtriser le développement d'applications java performantes et robustes
Programme
La performance
- Définition
- La performance pour tous
- Les éléments composant la performance
- La performance perçue
- La performance au démarrage
- Impact dans les couches d’une application
- Performance et architecture
- La notation « grand O »
Le processus d’optimisation
- Analyser
- Coder
- Mesurer pour vérifier
Benchmarking
- Mesure de temps
- Les pièges
- Le benchmarking
- Les microbenchmarks
- JMH
- Recommandations
Les outils
- Profiling
- JVisualVM
- Eclipse MAT
- SoapUI
- JMeter
Les principaux soucis de performance
- Les bottlenecks
- Les origines
L’utilisation efficace des API
- API Collections
- L’utilisation des wrappers
- La méthode hashCode()
Gérer les entrées sorties
- L’utilisation des classes à bon escient
- La sérialisation
- La sérialisation personnalisée
- Les échanges réseau
Les accès à la base de données
- Nombre excessif de requêtes
- Mauvaise configuration de la persistance
- Lectures de données importantes et/ou superflues
- Configuration du pool de connexions
La gestion de la mémoire
- L’organisation de la mémoire
- Le ramasses-miettes
- Le cycle de vie des objets
- Configurer la mémoire et le GC
- Mesure de la mémoire
- Off Heap
- La gestion de la mémoire et les performances
- Les options de la JVM HotSpot pour le suivi de l’activité du GC
- Fuite de mémoire
- Fuite de ressources
Optimiser l’utilisation de la mémoire
- Optimiser l’occupation mémoire
- Optimiser les instanciations
Parallélisation
- Les apports de la parallélisation
- La mise en œuvre
- Les API
- Le framework Fork/Join
- Race condition et contention
- Les deadlocks
- Obtenir et exploiter un threaddump
- Les streams parallèles
Les légendes urbaines
- Java est lent
- La concaténation de chaînes
- Augmenter la taille du heap
- Le cache comme LA solution
- 64 bits vs 32 bits
L’importance de la JVM et de la version de Java
- Choisir la JVM
- Configurer la JVM
- La version de Java utilisée
La performance n’est pas que technique
- Les raisons non techniques des mauvaises performances
- Prise en compte dans le SDLC (Software Development Live cycle)
- Mesurer la performance en continue
- Monitoring