La programmation concurrente
- Les concepts de la programmation multithread : le modèle d’activités de Java (Runnable et Thread).
- La création/destruction des threads. Ordonnancement des threads.
- La synchronisation des threads. Le verrouillage des méthodes et des instructions (synchronized). Les moniteurs.
- Quelques problèmes du multithread : l'interblocage (caractérisation, évitement, prévention, détection), la famine.
- Les extensions du modèle introduites dans Java.5 (Callable<T>, Future<T>, ExecutorService. Les nouvelles collections.
- Le modèle Fork/Join de Java 7. Les extensions de Java 8 (CompletableFuture).
- Les divers outils de gestion de la concurrence : les verrous partagés/exclusifs, les sémaphores, les barrières cycliques.
Travaux pratiques
Construction d'une application multithread avec contraintes de concurrence.
La communication par socket
- Rappels sur les principaux concepts réseaux.
- La communication en mode connecté.
- Le modèle client/serveur. Serveur séquentiel versus serveur concurrent. Utilisation de la sérialisation.
- La programmation en mode non connecté. Le modèle Peer to Peer.
Travaux pratiques
Programmation de l'étude de cas en mode client-serveur (séquentiel et concurrent).
La communication par invocation de méthode distante : RMI
- Les principes généraux des ORB (Object Request Broker).
- Le modèle RMI (les concepts, les interfaces classes de base).
- Le service de nommage.
- Le processus de développement du client et du serveur.
- Les contraintes de sécurité et de chargement de classes.
Travaux pratiques
Programmation de l'étude de cas à l'aide de RMI.
La communication par messages : JMS
- Les principes généraux de la communication par messages.
- Le modèle de base (les concepts de JMS, les interfaces et les classes).
- Les différentes formes de messages.
- La communication en mode point à point.
- La communication en mode publish/subscribe.
Travaux pratiques
Programmation de l'étude de cas à l'aide de JMS.
L’administration des applications : JMX
- Le modèle JMX (Java Management eXtension) : les concepts, les interfaces et les classes correspondantes.
- Les MBeans et MBeanServers.
- La mise en place d’une couche d’administration.
- La console d'administration (JConsole).
- La communication à l’aide des adaptateurs et des connecteurs.
Travaux pratiques
Mise en place d'une couche d'administration-supervision pour l'étude de cas.
La programmation réflexive
- Les objectifs et les principes.
- La découverte dynamique des informations relatives à une classe ou à un objet.
- L’instanciation et l’invocation dynamique.
- La réflexivité et les annotations en Java 5.
Travaux pratiques
Programmation de l'étude de cas en mode client-serveur (séquentiel et concurrent).
Un panorama des extensions de Java 5 à...
- Les types : les génériques, les énumérations, l’autoboxing/autounboxing, les records.
- Les lambda-expressions, les interfaces fonctionnelles.
- Les streams de Java 8.
- Les modules de Java 9.