Miura Conseil Store

Aller au contenu »

Bienvenue sur notre boutique magento

Votre panier est vide.

Java, optimisation

Introduction

- Les éléments intervenant dans l'optimisation et les actions correspondantes.
- Le choix d'un environnement d'exécution performant.
- Les outils d'aide à l'optimisation.
- Comparaison avec C++.

Méthodologie pour l'optimisation et quelques outils associés

L'optimisation des performances est souvent présentée comme une activité principalement basée sur l'usage d'astuces. En fait une approche méthodologique rigoureuse et systématique existe qui par ailleurs conduit souvent à une amélioration de la conception. On présente ici cette méthodologie ainsi que les outils associés. Le reste de la session met en pratique cette méthodologie.
- Les éléments de la méthodologie.
- Quelques outils associés : jmp, hprof, Eclipse TPTP, junit.
_ Travaux pratiques : Utilisation des profilers hprof et jmp. Utilisation de junit. Profiling d'une application simple.

L'optimisation et l'environnement d'exécution

- Le choix du compilateur.
- Le choix de la JVM.

L'optimisation et le langage

Une approche objective du langage Java relativise montre que la plupart des problèmes de performances ne sont pas liés au langage lui-même mais à une mauvaise utilisation du langage (en particulier une mauvaise gestion des objets et des évaluations). Il est donc important de savoir identifier les vraies sources d'inefficacité et de connaître les bons usages qui les évitent.
- L'optimisation et la gestion des objets.
- L'optimisation et les évaluations.
- L'optimisation et les tests.
- L'optimisation et les nouveautés de Java5.
_ Travaux pratiques : Suite d'optimisation d'une application par une meilleure gestion des objets, des évaluations et des tests.

L'optimisation et les librairies standard

- La manipulation des String.
- Les classes « Collection ».
_ Travaux pratiques : Suite d'optimisation d'une application par une meilleure manipulation des Strings.

L'optimisation et quelques Design Patterns

L'obtention de performances impose souvent de s'adapter aux caractéristiques d'un environnement donné. La flexibilité et la configurabilité des applications sont donc parfois un facteur important, dont le traitement reste encore aujourd'hui très ad hoc. Il existe pourtant des techniques connues et éprouvées qui permettent d'augmenter la flexibilité. On présente d'une part, les solutions architecturales génériques et d'autre part, celles spécifiques à Java.
- L'utilisation des interfaces et des classes abstraites.
- L'utilisation de fabriques.
- L'utilisation d'adaptateurs, décorateurs, proxies.
- Les lanceurs d'application.
_ Travaux pratiques : Application de Design Patterns à l'optimisation de l'application.

L'optimisation et les I/O

Une programmation médiocre des IO peut avoir un effet désastreux sur les performances. Il est important d'en connaître le fonctionnement général et les facteurs sur lesquels agir.
- La bufferisation, l'encodage des données.
- Le choix des bonnes classes de Stream.
- L'optimisation de la sérialisation.
- Les classes du package java.nio.
- L'optimisation spécifique aux IO réseaux.
_ Travaux pratiques : Optimisation des IO de l'application.

L'optimisation et le multithreading

Cette formation n'aborde pas la programmation multithread dans toute sa généralité. Elle se limite à l'utilisation des threads au problème de l'optimisation des IO (en particulier des IO réseau).
- Le modèle d'activité avant Java5.
- Rappels programmatiques (création, ordonnancement, synchronisation des activités).
- Le modèle d'activité de Java5.
- La nouvelle API.
- Les threads et l'optimisation.
_ Travaux pratiques : Utilisation des threads pour l'optimisation des IO de l'application.

L'optimisation et la gestion de la mémoire

Un paramétrage du Garbage Collector adapté aux caractéristiques d'une application peut se manifester par une amélioration des performances. Il est donc important d'en connaître le fonctionnement. Par ailleurs certaines applications manipulent des objets de grande taille ou de très nombreux objets. Il est nécessaire de connaître les techniques adaptées à ce type de problème.
- Les principes généraux des GC (principaux algorithmes, collaboration avec l'allocateur).
- L'organisation de la mémoire des principales JVM.
- Le GC de la JVM de Sun (fonctionnement et paramétrage).
- Le GC de la machine d'IBM (fonctionnement et paramétrage).
- L'impact des finalize sur les performances.
- La saturation mémoire (cause, diagnostic, solutions).
- Les références faibles : SoftReference, WeakReference, PhantomReference (concepts et utilisation).
- Les files de références.
_ Travaux pratiques : Utilisation de SoftReference pour un cache d'objets de grande taille.

L'optimisation et l'utilisation de librairies C et C++

L'utilisation de code C ou C++ dans une application Java est une solution possible à des problèmes locaux de performances. On présente rapidement l'interface JNI prévue à cet effet.
- Les principes généraux de JNI : les étapes du développement.
- L'API JNIEnv.
- JNI et les performances.

Laisser un commentaire
Google+