Objectifs pédagogiques
- Distinguer les aspects avancés du langage Java
- Appliquer les principaux frameworks et librairies Java
- Reconnaître le modèle de sécurité et le chargement des classes Java
- Programmer en Java dans le contexte des bases de données relationnelles
- Tester, debugger et optimiser vos applications
- Identifier les nouveautés Java.
Modalités et moyens pédagogiques
Formation délivrée en présentiel ou distanciel* (e-learning, classe virtuelle, présentiel à distance).
Le formateur alterne entre méthode** démonstrative, interrogative et active (via des travaux pratiques et/ou des mises en situation).
Variables suivant les formations, les moyens pédagogiques mis en oeuvre sont :
- Ordinateurs Mac ou PC (sauf pour les cours de l'offre Management), connexion internet fibre, tableau blanc ou paperboard, vidéoprojecteur ou écran tactile interactif (pour le distanciel)
- Environnements de formation installés sur les postes de travail ou en ligne
- Supports de cours et exercices
En cas de formation intra sur site externe à M2i, le client s'assure et s'engage également à avoir toutes les ressources matérielles pédagogiques nécessaires (équipements informatique...) au bon déroulement de l'action de formation visée conformément aux prérequis indiqués dans le programme de formation communiqué.
* nous consulter pour la faisabilité en distanciel
** ratio variable selon le cours suivi
Niveau requis
Avoir une connaissance pratique du langage Java ou avoir suivi le cours JAV-SE "Java - Les fondamentaux de la programmation".
Testez vos connaissances
Afin de vous orienter vers la formation la plus adaptée à votre niveau, passez votre test de connaissances pour évaluer vos compétences actuelles.
Temps estimé : 4 minutes.
Passer le testPublic concerné
Développeurs, architectes et chefs de projets techniques.
Programme
Jour 1 - Matin
Aspects avancés de Java
- La programmation concurrente
- Les concepts de la programmation multi-thread :
- Le modèle d'activités de Java (Runnable et Thread)
- La création / destruction des threads
- Ordonnancement des threads
- La synchronisation des threads
- Le verrouillage des méthodes et des instructions (synchronized)
- Les moniteurs
- Quelques problèmes du multi-thread
- L'interblocage (caractérisation, évitement, prévention, détection), la famine
- Les extensions du modèle introduites dans Java 5 (Callable
, Future , ExecutorService), les nouvelles collections - Le modèle Fork/Join
- Les extensions avec CompletableFuture
- Les divers outils de gestion de la concurrence :
- Les verrous partagés / exclusifs, les sémaphores, les barrières cycliques
Exemple de travaux pratiques (à titre indicatif)
- Construction d'une application multi-thread avec contraintes de concurrence
Aspects avancés : La programmation réflexive
- Les objectifs et les principes
- La découverte dynamique des informations relatives à une classe ou à un objet
- L'instanciation et l'invocation dynamique
Exemple de travaux pratiques (à titre indicatif)
- Construction d'une application utilisant la réflexivité
Jour 1 - Après-midi
Chargement et vérification des classes
- Rôle du compilateur Java
- Rôle des ClassLoader
- Les différentes zones mémoires de la JVM (Java Virtual Machine) et leur gestion par le GC (Garbage Collector)
- Hiérarchie des différents ClassLoader
- Vérification du Bytecode
- Chargement dynamique de classe
- Implémenter un ClassLoader
Exemple de travaux pratiques (à titre indicatif)
- Implémentation d'un ClassLoader chargeant des classes
Jour 2 - Matin
Accès aux bases de données relationnelles depuis Java
- Les capacités de JDBC (Java Database Connectivity)
- Les avantages des ORM (Object Relational Mapping)
- Hibernate
- Présentation et architecture
- Installation et configuration
- Persistance des classes et des attributs, associations et héritage
- Mapping objet-relationnel avec JPA (Java Persistence API)
- Présentation des EJB (Enterprise JavaBeans) Entity
- Introduction à JPA (Java Persistance API)
- Mapping objet-relationnel, rôle de la clé primaire, mapping des associations (one-to-many, many-to-one...)
- L'héritage
- JPQL (Java Persistence Query Language), le langage de requête orienté-objet
Jour 2 - Après-midi
Exemple de travaux pratiques (à titre indicatif)
- Mise en oeuvre de l'accès à une base de données relationnelle en lecture et écriture, en utilisant JDBC et JPA sur Hibernate
Jour 3 - Matin
Les frameworks Java
- Les frameworks
- D'accès aux données
- D'IHM (Interfaces Homme-Machine) serveur et client
- De gestion de composants
- Spring
- Les objectifs de Spring et de ses extensions
- Présentation de Spring Core
- Spring et l'accès aux données
- Spring et le Web, Spring MVC (Model-View-Controller)
- Les couches applicatives avec Spring
- Les frameworks de service Web
- Jersey et REST (Representational State Transfer)
- CXF et SOAP (Simple Object Access Protocol) / REST
- Les frameworks d'interface graphique
- Le framework JSF2 (JavaServer Faces 2.0)
- Les frameworks concurrents client
Exemple de travaux pratiques (à titre indicatif)
- Utilisation du framework Spring
Jour 3 - Après-midi
Tester ses applications en Java
- Test Driven Development – Découvrir les grands principes du TDD
- Cycle de développement du TDD
- Les 3A : Arrange, Act, Assert
- Remaniement de code : techniques de refactoring en TDD
- Conception émergeante
- Gestion des exceptions
- Gestion des scénarios
- JUnit – Savoir utiliser le framework JUnit pour implémenter des tests
- Tests unitaires
- Framework xUnit, implémentation Java : JUnit
- Principe d'assertions
- Alternatives à JUnit (TestNG)
- Outillage complémentaire
- Mise en oeuvre et bonnes pratiques
- TDD
- Correction des anomalies
- Gestion de la montée en charge et de la sécurité des produits
- Gestion de la performance
- Les Stress tests
Exemple de travaux pratiques (à titre indicatif)
- Utilisation de JUnit
Jour 4 - Matin
Le processus d'optimisation
- Analyser
- Coder
- Mesurer pour vérifier
- Les outils
- Profiling
- JVisualVM
- Eclipse MAT
- SoapUI
- JMeter
Exemple de travaux pratiques (à titre indicatif)
- Utilisation d'outils de profiling
Gestion mémoire et optimisation
- L'organisation de la mémoire
- Le ramasse-miettes
- Le cycle de vie des objets
- Configurer la mémoire et le GC
- Mesure de la mémoire
- Off Heap
- La gestion de la mémoire et les performances
- Les options de la JVM HotSpot pour le suivi de l'activité du GC
- Fuite de mémoire
- Fuite de ressources
- Optimiser l'utilisation de la mémoire
- Optimiser l'occupation mémoire
Exemple de travaux pratiques (à titre indicatif)
- Utilisation des outils d'optimisation mémoire
Jour 4 - Après-midi
Nouveautés Java
- Lambda fonctions
- Streams et Streams parallèles
- La gestion des modules
Exemple de travaux pratiques (à titre indicatif)
- Développement d'une application utilisant les Lambdas, Streams et Modules
Le contenu de ce programme peut faire l'objet d'adaptation selon les niveaux, prérequis et besoins des apprenants.
Modalités d’évaluation des acquis
- En cours de formation, par des études de cas ou des travaux pratiques
- Et, en fin de formation, par un questionnaire d'auto-évaluation