PROGRAMMATION AVANCEE TEMPS REEL EN JAVA
(Durée 3 jours)
1/4
Le langage Java combine à la fois la puissance de la programmation objet et la
programmation concurrente. Ces caractéristiques en font un candidat de choix pour la
programmation de systèmes embarqués et des systèmes temps réel.
Public concerné
Tout informaticien non familier avec la réalisation des logiciels temps réel mais ayant une
connaissance élémentaire de la programmation Java et souhaitant l’étendre à celle de la
programmation des systèmes Java temps réel.
Pré requis : Connaissance de base de la programmation Java non concurrente ainsi que de la
programmation objet.
Objectif
A l'issue du cours, les participants connaissent et dominent l'ensemble des concepts Java
temps réel et sont capables de les mettre en pratique dans le cadre d'une programmation Java
orientée “objet” et “temps réel”.
Documentation
Support de cours (anglais),
Exercices et Corrigés (français).
Programme de la formation sur 3 jours et objectifs pédagogiques
Le contenu du cours comprend les chapitres ci-après; le texte en italique inséré à la suite de
chaque chapitre donne l’objectif pédagogique associé.
1. La programmation concurrente : processus et threads
Introduire la terminologie du temps réel, des architectures et des domaines associés.
Présenter le modèle de concurrence Java parmi les autres modèles de concurrence temps
réel.
2. Création de threads Java
En étendant la classe Thread
En implémentant l’interface Runnable
Fournir les détails de la création de thread Java avec leur mise en pratique.
Revenir sur les fondamentaux du modèle de programmation orienté objet de Java en
montrant l’importance de la programmation par composition (implémentation de
l’interface Runnable) versus la programmation par extension (sous-classage de Thread).
3. La synchronisation de threads
Paradigme d’exclusion mutuelle
Blocs « synchronized »
Méthodes d’instance synchronisées
Méthodes statiques synchronisées
PROGRAMMATION AVANCEE TEMPS REEL EN JAVA
(Durée 3 jours)
2/4
Se familiariser avec le concept de situations de compétition, leur conséquences néfastes et
comment on peut y remédier à l’aide des instructions et des méthodes synchronisées Java.
D’une façon générale, comment adresser en Java le paradigme de l’exclusion mutuelle et
du partage de ressource.
4. Le modèle mémoire Java
La visibilité des variables
La synchronisation des données partagées
L’instruction volatile
Comprendre quand et comment les modifications, d’une variable par un thread donné
deviennent visibles par les autres threads. L’objectif est de sensibiliser aux problèmes de
la concurrence aussi bien du point de vue des d’architectures processeur (gestion des
caches, ré-ordonnancement des instructions etc.) que des optimisations des compilateurs.
5. Terminaison de thread
Interruption de thread
Synchronisation sur la terminaison de thread - méthode join
Groupe de threads
Terminaison normale de threads ou sur occurrence d’exception
Montrer comment le mécanisme d’interruption Java permet de programmer la
terminaison asynchrone de threads.
6. La coopération entre threads
Paradigmes de communication asynchrone
Les méthodes wait et notify
Comprendre comment les blocs et méthodes synchronisées peuvent être utilisés avec les
méthodes wait et notify pour implémenter des moniteurs simples.
Montrer comment on peut implémenter le paradigme classique de communication
“Bounded Buffer” à l’aide du mécanisme de notification (wait/notify).
7. Traitements périodiques précis
Montrer comment construire des traitements périodiques
Présenter la ponctualité des traitements différés avec des temps relatifs versus des temps
absolus
8. Programmation par composition
Les classes entièrement synchronisées
Gestion de listes synchronisées
Sensibiliser aux bonnes pratiques de programmation de composants synchronisés et sûrs
de fonctionnement en programmation concurrente.
9. Limites du mécanisme de synchronisation Java
Présenter les risques inhérents au mécanisme de synchronisation Java : famine, inter
blocage ou hyperactivité.
PROGRAMMATION AVANCEE TEMPS REEL EN JAVA
(Durée 3 jours)
3/4
10. Les utilitaires de concurrence introduits à partir de Java 5
Les classes Lock et les conditions multiples
Les files d’attente BlockingQueue
Les collections concurrentes
Les utilitaires de synchronisation : sémaphores à compte, barrières cycliques,
compte à rebours, files synchrones, échangeurs producteurs consommateurs etc.
En portant un regard critique sur le modèle de base Java qui s’appuie sur les blocs
synchronisés (instruction synchronized) et le mécanisme de notification (wait/notify) on
introduit la bibliothèque des utilitaires de concurrence de Java 5 qui étend ce modèle,
couvre les paradigmes temps el classiques de synchronisation et permet le déploiement
de composants multi-thread sûrs de fonctionnement.
11. Les utilitaires de concurrence introduits à partir de Java 5 pour la programmation
asynchrone
Traitements asynchrones avec les abstractions Callable et Future
Les pools de threads, la structure d’accueil Executor
Présenter les concepts Java 5 pour la programmation asynchrone.
12. Ordonnancement temps réel
Priorité des threads
Contrôle de l’inversion de priorité
Stratégie d’allocation de ressource avec protocole d’héritage de priorité
Interface avec le système d’exploitation sous-jacent
Interaction des threads Java avec les threads natifs
Call-back de threads Java depuis du code C (Java Native Interface)
On présente les techniques d’ordonnancement des threads utilisées par les systèmes temps
réel (RMS, EDF etc.) ainsi que la problématique de l’inversion de priorité. On montre
comment on peut mettre en œuvre en Java les techniques d’analyse d’ordonnancement des
threads telles que RMA (Rate Monotonic Analysis).
On montre également comment les threads Java sont mis en œuvre sur les threads du
système d’exploitation sous-jacent et comment ils interagissent avec les threads natifs
(non Java) de l’application
13. Contrôle des ressources mémoire
Ramasse-miette préemptif, incrémental et ajustable
Gestion déterministe des collections d’objets
Le déterminisme du modèle d’allocation mémoire peut être un frein à la programmation
de systèmes temps el Java. Après un aperçu des différentes techniques de ramasse-
miette, cette section présente un exemple de ramasse-miette temps réel.
14. La bibliothèque Javolution
Cette section présente les concepts mis en œuvre dans la bibliothèque Javolution et qui
permettent au programmeur d’allouer et de recycler des objets en mémoire de façon
déterministe.
PROGRAMMATION AVANCEE TEMPS REEL EN JAVA
(Durée 3 jours)
4/4
15. La spécification Java temps réel RTSJ
Le modèle mémoire
Le modèle concurrence
Donner un aperçu des travaux qui sont menés dans les groupes de travail JSR 282 et 302
qui visent à définir une spécification Java temps réel et un profil applicable aux logiciels
critiques.
16. Outils et environnement d’exécution Java
Mode d’exécution Java : interprétation, JIT et AOT
Outils de mise au point et d’analyse de performance
Donner un aperçu des outils disponibles sur la structure d’accueil Eclipse pour exécuter,
mettre au point et ajuster les performances d’applications Java.
17. Références
Une liste d’ouvrage et de liens internet concernant le temps réel et la programmation
Java est donnée en référence.
Exercices et travaux pratiques
Une série d’exercices de difficulté progressive permettront aux stagiaires de s’approprier les
concepts développés pendant le cours d’une façon graduelle. La répartition du temps sera
environ des deux tiers pour les exposés magistraux et le tiers restant pour les exercices.
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !