Formation : Java programmation avancée
Se former
avec ORSYS
- Renseignements :
- Durée : 5 Jours
- Type : En centre (inter)
- Diplômant : Non
- Prix H.T. € :
2150.00
- Objectifs :
- Ce cours a un double objectif. D'une part, approfondir certains aspects avancés et parfois relativement complexes du langage (les inner classes, les types génériques, les annotations, le chargement des classes, la sécurité interne à la JVM). D'autre part, présenter un panorama synthétique des principales librairies concernant les thèmes suivants : la gestion des threads, les communications via le réseau, l'administration et la supervision des applications. Ce cours insiste par ailleurs sur les techniques associées à leur bonne utilisation.
- Public visé :
- Développeurs, Ingénieurs, chefs de projets proches du développement
- Pré-requis :
- Ce cours de niveau avancé est destiné à des participants connaissant déjà le langage Java et qui programment régulièrement.
- Quelques aspects avancés du langage
Cette partie du présente essentiellement les éléments nouveaux du langage. Elle insiste sur les points les plus intéressants mais aussi les plus complexes, à savoir les types génériques et les annotations.
- 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).
- Les varargs (jdk1.5).
- L'auto-boxing, auto-unboxing (jdk1.5).
- Les types énumérés (jdk1.5). L'utilisation et la 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 : le type ? 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 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). Les objectifs et les 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.
Travaux pratiques
Utilisation des types génériques et des annotations.
La programmation concurrente
- La programmation concurrente est un aspect important du langage : elle offre une solution élégante et efficace à de nombreux problèmes difficiles à résoudre autrement (en particulier la construction de serveurs performants). Cette forme de programmation comporte cependant des pièges. On étudie le plus courant d'entre eux : 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 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, ....
Travaux pratiques
Construction d'une application concurrente avec synchronisation et résolution d'interblocage.
La programmation des communications distantes
- Le langage propose de nombreuses librairies de communication. On présente les plus utilisées et 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.
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.
L'administration et la supervision
- L'administration et la supervision des applications prennent une importance de plus en plus grande. JMX est le standard qui semble s'imposer aujourd'hui dans le monde Java, en particulier grâce à son modèle simple mais puissant mais aussi grâce à sa nature peu intrusive.
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 oeuvre 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
La sécurité et le chargement de classes
On aborde ici des 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.
- Travaux pratiques
Ce cours illustre les éléments présentés par une série de travaux pratiques réalisés sous Eclipse 3.1.
31/03/2008 au 04/04/2008 (75)
26/05/2008 au 30/05/2008 (75)
22/09/2008 au 26/09/2008 (75)
24/11/2008 au 28/11/2008 (75)