Public
Développeurs, ingénieurs, chefs de projets proches du développement.
Pré-requis
Bonnes connaissances du langage Java.
Objectifs
- Implémenter la programmation concurrente avec l'utilisation de threads.
- Appliquer diverses techniques de communication telles que Socket, RMI, et JMS.
- Administrer une application Java via JMX et surveiller la JVM.
- Utiliser la programmation réflexive et basée sur les annotations.
Programme
Jour 1: Programmation Concurrente (2h30)
- Concepts de la programmation multithread
- Modèle d'activités de Java (Runnable et Thread)
- Création/destruction des threads, ordonnancement
- Synchronisation des threads, verrouillage des méthodes (synchronized)
- Problèmes du multithread: interblocage, famine
- Extensions Java.5 (Callable
, Future , ExecutorService) - Modèle Fork/Join de Java 7, extensions Java 8 (CompletableFuture)
- Outils de gestion de la concurrence: verrous, sémaphores, barrières cycliques
- Travaux pratiques: Construction d'une application multithread Jour 2: Communication par Socket (2h30)
- Rappels sur les concepts réseaux
- Communication en mode connecté
- Modèle client/serveur, serveur séquentiel vs concurrent
- Programmation en mode non connecté (Peer to Peer)
- Travaux pratiques: Programmation client-serveur (séquentiel et concurrent) Jour 3: Communication par Invocation de Méthode Distante: RMI (2h30)
- Principes généraux des ORB (Object Request Broker)
- Modèle RMI (concepts, interfaces, classes de base)
- Service de nommage
- Processus de développement client/serveur
- Contraintes de sécurité et de chargement de classes
- Travaux pratiques: Programmation avec RMI Jour 4: Communication par Messages: JMS, Administration des Applications: JMX, Programmation Réflexive, Panorama des Extensions (2h30)
- Communication par messages: principes généraux, modèle de base, modes point à point et publish/subscribe
- Administration des applications avec JMX: concepts, MBeans, MBeanServers, console d'administration
- Programmation réflexive: objectifs, principes, instanciation et invocation dynamique, réflexivité et annotations
- Panorama des extensions Java 5 à...: types (génériques, énumérations, autoboxing/autounboxing, records), lambda-expressions, interfaces fonctionnelles, streams de Java 8, modules de Java 9
- Travaux pratiques: Mise en place d'une couche d'administration-supervision, programmation réflexive, exploration des extensions Java Modalités pratiques
- Travaux pratiques: Construction progressive d'une application en Java
- Modalités d'évaluation: Évaluation continue via QCM, mises en situation, travaux pratiques. Test de positionnement en amont et en aval pour valider les compétences acquises.
