Objectifs
- Maîtriser les concepts les plus avancés afin de tirer profit de toute la puissance du langage Java.
- Étudier les modèles de Cursus Métier que l'on retrouve habituellement dans les applications Java.
- Optimiser ses développements en Java et développer des applications n-tiers.
Prérequis
- Connaissance du langage Java et de la programmation objet.
Contenu du programme
Quelques aspects avancés du langage :
- Les inner classes, Les classes anonymes
- La redéfinition covariante des méthodes
- Les nouvelles boucles for
- Les import static, Les varargs
- L'auto-boxing, auto-unboxing
- Les types énumérés : Utilisation et définition
- Les types génériques : L'utilisation et la définition de types génériques simples
- les types génériques et les tableaux
- La généricité et la relation de sous-typage
- Le mécanisme d'effacement et ses conséquences
- Les types génériques à l'exécution, les types génériques et l'instanciation
- Les méthodes génériques : L'utilisation simultanée des types génériques et non génériques
- Les annotations : Objectifs et principes
- Les annotations prédéfinies (@override, @deprecated, @suppress§Warnings)
- La définition de nouvelles annotations : Les méta-annotations (@Retention, @Target,@Documented, @Inherited)
- L'utilisation réflexive des annotations à l'exécution
- Les inner classes, Les classes anonymes
La communication par invocation de méthode distante : RMI :
- Les principes généraux
- Les 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
La programmation concurrente :
- La programmation concurrente : l'interblocage
- Définitions relatives à la programmation concurrente : les threads, La création/destruction des threads, Ordonnancement des threads
- La synchronisation des threads, Le verrouillage des méthodes et des instructions (synchronized), Les moniteurs
- Principes méthodologiques pour la Cursus Métier d'applications multithreadées
- Les problèmes posés par la programmation multithread, le problème de l'interblocage, (caractérisation, évitement, prévention, détection), le problème de la famine
- La librairie concurrente de JDK1.5., Les nouvelles collections, Les nouveaux outils de synchronisation, les verrous partagés/exclusifs, les sémaphores, les barrières cycliques
La programmation des communications distantes :
- Le langage propose de nombreuses librairies de communication, on présente les plus utilisées et les plus représentatives en insistant sur leurs particularités et leurs domaines d'application
La communication par socket :
- Rappels sur les principaux concepts réseaux
- La programmation en mode non connecté (par datagram), le modèle peer to peer
- La communication en mode connecté (par stream)
- Le modèle client/serveur, Serveur séquentiel vs serveur concurrent, utilisation de la sérialisation
- La librairie nio, Les buffers, Channels, Les sélecteurs et leur utilisation