Objectifs pédagogiques / Compétences visées
- 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.
Niveau requis
Avoir une connaissance pratique du langage Java ou avoir suivi le cours JAV-SE "Java - Les fondamentaux de la programmation".
Public 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
Certification (en option)
- Prévoir l'achat de la certification en supplément
- L'examen (en français) sera passé le dernier jour, à l'issue de la formation et s'effectuera en ligne
- Il s'agit d'un QCM dont la durée moyenne est d'1h30 et dont le score obtenu attestera d'un niveau de compétence
- La certification n'est plus éligible au CPF depuis le 31/12/2021, mais permettra néanmoins de valider vos acquis
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 ou une certification (M2i ou éditeur)