Il s'agit de mettre en œuvre des concepts avancés de la programmation avec la plateforme Java. Les applications particulièrement visées sont les application distribuées qui reposent sur le multithreading et l'échange d'information à travers un réseau de communication.

Attendus du Cours :
Il s'agit de pouvoir développer une application qui permet d'échanger des informations entre des machines distinctes et distantes en instanciant des sockets dans un environnement multithreads.
Un client graphique permet d'obtenir une vue de tous les échanges.

Mots Clés :
Threads, concurrence, exclusion mutuelle, worker, socket

Plan du Cours :
- Les menus (ActionMap - Input/Output Maps)

- Les threads (Définition, création, interruption - La concurrence et l'exclusion mutuelle - Les classes spécifiques - Des interfaces graphiques réactives)

- Java NIO (Tampons mémoires - Jeux de caractères - Les Channels - Connexion réseau, multiplexage, Selector - TCP/IP, SocketChannel)

- La « reflexion »
- La « serialization »
- Objets distants (java RMI)
- Utiliser du code « natif » (JNI et langage C - compatibilité des types - accéder à des champs)