quelques aspects avancés du langage :
- les inner classes. les classes anonymes.
- la redéfinition covariante des méthodes (jdk1.5).
- les nouvelles boucles for (jdk1.5).
- les import static (jdk1.5).
- l'auto-boxing, auto-unboxing (jdk1.5). les varargs (jdk1.5).
- les types énumérés (jdk1.5). utilisation et définition.
- les types génériques (jdk1.5). l'utilisation et la définition de types génériques simples.
- la généricité et la relation de sous-typage.
- les types génériques à l'exécution, les types génériques et l'instanciation, les types génériques et les tableaux.
- les méthodes génériques. l'utilisation simultanée des types génériques et non génériques.
- les annotations (jdk1.5 et jdk1.6). principes. les annotations prédéfinies (@override, @deprecated, @generated...).
- la définition de nouvelles annotations.
- les méta-annotations (@retention, @target, @documented, @inherited). l'utilisation réflexive des annotations..
- support du wildcard dans le classpath (jdk1.6).
- nouveautés sur les collections (jdk1.5 et jdk1.6) : les queues, les concurrentmap...
la programmation concurrente :
- 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 conception 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 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 versus serveur concurrent. utilisation de la sérialisation.
- la librairie nio. les buffers, channels. les sélecteurs et leur utilisation.
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 communication par messages : jms :
- les principes généraux de la communication par messages.
- les concepts de jms, les interfaces et les classes correspondantes.
- les différentes formes de messages.
- la communication en mode point à point.
- la communication en mode publish/subscribe.
la sécurité et le chargement de classes :
- les aspects avancés et moins connus de la jvm.
- les mécanismes liés à la jvm pour assurer la sécurité.
- le modèle de sécurité de jdk1.2 : les permissions, les politiques, les domaines de sécurité.
- le gestionnaire de sécurité et le contrôleur d'accès.
- les mécanismes de chargement de classes.
- le développement de chargeurs de classes spécifiques.
présentation de jmx (java management extension) :
- la distinction entre l'application à administrer et l'application d'administration.
- les concepts de jmx : mbean, mbeanserver, agent, connector.
- les api jmx.
- la mise en œuvre des différentes catégories de mbeans (standard, dynamiques, model).
- l'utilisation des adaptateurs et des connecteurs.
- les consoles d'administration.
la programmation réflexive :
- objectifs et principes.
- le chargement de classes. l'objet class.
- découverte dynamique des informations (propriétés et méthodes) relatives à une classe ou à un objet.
- instanciation dynamique.
- invoquer une méthode.
- la réflexivité des annotations en java 5.