- ACN_ATLAS
- Cours pratique
- Informatique
- Oracle
Formation Java Avancé, perfectionnement
JVM, MULTI-THREADING, ENTRÉES/SORTIES, JDBC, JPA, LAMBDAS, STREAMS, MODULES

- Durée
- 4 jours
- Niveau
- Avancé
- Modalités
- Présentiel / Distanciel
Description de la formation Java Avance
Cette formation permet aux personnes ayant suivi une première initiation à Java d’approfondir leurs connaissances du langage afin d’intégrer directement une équipe projet.
La formation commence par détailler le fonctionnement de la JVM (Java Virtual Machine) afin que le développeur puisse diagnostiquer des problèmes de performances liés à la conception de son programme et à l'utilisation des objets Java. Vous apprendrez à concevoir une application multi-threadée et à synchroniser ses threads tout en évitant la corruption de données.
Vous apprendrez également à utiliser le langage Java pour manipuler les données qu’elles se présente dans une base de données (API JDBC), sous forme de fichiers/répertoires avec les API Nio.2 ou encore sous forme de flux de données avec la mise en œuvre de l'API Stream. Enfin vous saurez utiliser Java dans un contexte professionnel en structurant vos projets avec des modules et en industrialisant la production de votre application avec des outils comme Gradle (génération de .jar) ou Maven (gestion de projet Java).

Objectifs pédagogiques
À l'issue de cette formation Java Avancé, vous serez en mesure de :
- Maîtriser les aspects avancés du langage Java
- Comprendre comment appliquer les principaux Framework et librairies Java
- Comprendre le modèle de sécurité et le chargement des classes Java
- Savoir programmer en Java dans le contexte des bases de données relationnelles
- Savoir tester, débugger et optimiser ses applications
- Appréhender les nouveautés Java
Objectifs opérationnels
Savoir utiliser les fonctions avancées du langage Java dans les projets de développement d’applications.
Programme
Contenu du cours, module par module
12 modules
- Débugging et profiling d’applications
- Rôle du débugging, fonctionnalités incluses dans les IDES
- Notions de breakpoint, conditional breakpoint, exception breakpoint watchpoint, step filtering
- Exécution en pas à pas, observation des variables, modification
- Suspension et reprise de l’exécution d’un thread
- Les profilers disponibles, optimisation CPU, mémoire, I/O
Travaux pratiques
Description : Recherche et correction de bugs dans une application fournie
- Rappels sur les interfaces
- Principe des records
- Record vs classe immuable
- Classes internes static, membre, locale, anonyme
- Accès aux membres, création d’instances
- Classes et interfaces scellées
Travaux pratiques
Description : Mise en œuvre de records, de classes internes, méthodes génériques dans une application
- Types génériques : classes, interfaces et records
- Méthodes génériques
- Principe du type erasure
- Utilisation du caractère ? (wildcard)
- Passage de paramètres génériques aux méthodes
- Héritage et généricité
Travaux pratiques
Description : Mise en œuvre de classes et interfaces génériques, de méthodes génériques dans une petite application
- Principe et rôle d’une annotation
- Attributs obligatoires et optionnels
- Cibles d’une annotation
- Annotations personnalisées
- Annotations multiples
Travaux pratiques
Description : Mise en œuvre d’annotations personnalisées dans une petite application
- Concepts et spécificités du multithreading par rapport à la programmation « traditionnelle »
- États d'un thread
- Synchronisation des threads
- Intérêt du pattern Immutable
- Les threads virtuels
- Gestion des mutex avec les interfaces Lock et Condition
- Pools de threads
- Les apports du framework Executor (invocation, ordonnancement, exécution, contrôle)
- Le package java.util.concurrent
- Les classes Atomic, les collections concurrentes
Travaux pratiques
Description : Écriture d’une application client/serveur en Java. Correction d’une corruption de données dans une application
- Impédance mismatch et limtes de JDBC
- JPA et Hibernate
- Classes Entité et EntityManager, Flush de session
- Mapping simple
- Mapping des associations
- Objets embarqués
- Persistance des objets et cascading
- Langage de Requête : JPQL, API Criteria, EntityGraph
Travaux pratiques
Description : Mise en œuvre des API JDBC pour le développement d’un DAO (Data Access Object)
- Les nouvelles classes java.nio.file.Files et java.nio.file.Path
- Gestion des liens symboliques
- Manipulation de chemins, parcours de répertoires et d'arborescences
- Accès aux attributs d'un fichier
- Notification des changements dans un répertoire
- Gestion des archives Jar/zip
- Entrées/sorties asynchrones
Travaux pratiques
Description : Parcours d’arborescences pour copie/suppression de fichiers
Synchronisation de répertoires entre arborescences
- Comprendre les principes de la programmation fonctionnelle
- Syntaxe des classes internes anonymes
- Notion d’interface fonctionnelle
- Anatomie d'une expression Lambda
- Simplifier les expressions lambdas avec les références de méthodes
- Mise en œuvre des interfaces fonctionnelles : Consumer, Supplier, Predicate, Function
- Gestion des exceptions
Travaux pratiques
Description : Remplacement de classes internes anonymes par des expressions lambda
Mise en œuvre d’interfaces fonctionnelles de la bibliothèque
Simplification d’expressions lambdas par des références de méthodes
- Objectif de l’API Stream
- Obtention et sortie d’un stream
- Opérations intermédiaires et terminales
- Mise en œuvre des méthodes forEach, map, filter, findFirst
- Principe de l’évaluation paresseuse
- Intérêt de la la classe Optional
- Réductions avec reduce et collect
- Interface Collector et classe Collectors
- Autres méthodes : limit, skip, sorted, min, max, distinct, allMatch, anyMatch, noneMatch, count
- Streams sur fichiers et répertoires
- Streams parallèles, précautions d’usage
Travaux pratiques
Description : Utilisation de nombreux streams séquentiels et parallèles sur tableaux et collections
Comparaison de performances entre streams séquentiels et parallèles
- Principe et intérêt des modules
- Modularité du JDK
- Nouvelle organisation de la documentation des API Java
- Format du descripteur de module : les directives
- Utilisation des modules
- Gestion des dépendances entre modules, la commande jdeps
- Intérêt du module-path
- Notions de modules anonymes et modules automatiques
- Mise en œuvre de services entre modules
- Fichiers jar modulaires
- Problématique des migrations : approches bottom-up et top-down
Travaux pratiques
Description : Découpage d'une application en modules
Mise en œuvre de modules anonymes et automatiques
Mise en œuvre de services
Migration d'une application avec mise en œuvre des modules
- La commande jlink pour créer une image exécutable
- La commande jpackage
Travaux pratiques
Description : Création d’une image exécutable pour une petite application
Création d’un installeur à partir de cette image exécutable
- Rôle et intérêt d’un outil build
- Différences Gradle/Maven
- Structure des projets,
- Résolution des dépendances et dépôts d’artefacts
- Comparaison framework/librairie, le pattern IoC
- Configuration des frameworks : XML, Java, auto-configuration
Travaux pratiques
Description : Création d’un projet Maven faisant appel aux API Spring
Travaux pratiques
L’approche pédagogique est inductive et centrée sur l’expérimentation. Chaque notion avancée (multithreading, Stream, JPA, modularité…) est introduite par une mise en situation ou une problématique métier à résoudre. Par exemple, on explique comment le développeur Java doit se « débrouiller » pour gérer run flux de données sans l’API Stream et ensuite seulement le confort qu’elle apporte, permettant ainsi de mieux retenir le concept. Le déroulé est ponctué d'ateliers pratiques plutôt isolés pour favoriser leurs assimilations car chaque concept est assez technique même s’il est toujours replacé globalement dans une application professionnelle. Des quiz quotidiens de validation des acquis et de régulations pédagogiques sont proposés (synthèses journalières, reformulations collectives). La formation cherche aussi à s’ouvrir au maximum sur le contexte professionnel en utilisant les outils classiques que l’on rencontre dans tous les projets Java. A nouveau on invite les participants à réfléchir sur la difficulté de construction et de maintenance d’’une application Java dans un « vrai » projet (avec plusieurs développeurs, un projet partagé, de l’inertie dans le déploiement et des risques d’erreurs, du paramétrage, etc.) pour introduire naturellement les outils et frameworks rencontrés sur le terrain.
Programme mis à jour le 15/12/2025
Public concerné
Ce cours s’adresse aux développeurs Java, chargés de développement ou chefs de projets proches du développement possédant une connaissance préalable de Java et souhaitant élargir leurs compétences en vue de participer à des projets de développement d’applications Java élaborés.
La formation intéressera également les développeurs cherchant à rafraîchir des concepts vus lors d'une précédente formation Java suivie il y a plusieurs mois ou disposant d’une pratique effectuée sur une version antérieure de Java.

Prérequis
Les participants à cette formation possèdent obligatoirement une expérience préalable en programmation Java accompagnée de connaissances des bases de données relationnelles et du SQL. Ces connaissances, utilement transverses à toute la formation, leur permettront plus particulièrement de mieux appréhender les concepts associés à la persistance des données avec JPA.
La formation Java les fondamentaux (JJDC) est un prérequis idéal pour tirer pleinement profit de cette formation.
J’évalue mes connaissances pour vérifier que je dispose des prérequis nécessaires pour profiter pleinement de cette formation en faisant le test de prérequis.
Faire le testFinancement
Cette formation peut être prise en charge par votre entreprise, seule ou avec l’appui de son opérateur de compétences. Nous fournissons le devis et les pièces attendues par l’OPCO.
4,5/5
54 avis
« Mon avis sur le contenu du stage : "Formateur extrêmement technique, un véritable expert. Par contre, j'ai souvent attendu que mon partenaire de formation ai terminé ses exercices pour pouvoir continuer le cours." Mon avis sur le formateur : "Comme dit précédemment, rien à redire sur le formateur, que ce soit niveau relationnel ou technique. Le fait de maîtriser parfaitement son domaine lui permet de nous rendre simple des situations complexes. Un modèle de pédagogie !" Mon avis sur la salle de formation : "Formation suivie en ligne" Ce que j'ai le plus apprécié : "Toujours à l'heure ! Cela devient une denrée rare de nos jours." Ce que j'ai le moins apprécié : "S'il y a eu un point un peu gênant durant ces 3 jours, ce sont les échos que nous avions quand nous parlions au formateur. Denis, prenez un micro-casque :)" »
PEREZ FabriceLA POSTE « Mon avis sur le contenu du stage : "Une formation Java très complète, accompagnée de supports de cours de qualité et d’exercices pratiques pour appliquer les connaissances acquises" Mon avis sur le formateur : "Bien que la formation se soit déroulée à distance, le formateur a su l’adapter pour la rendre à la fois pertinente et interactive" Ce que j'ai le plus apprécié : "Le formateur a pris le temps de trouver des solutions et d’adapter sa formation pour contourner les problèmes techniques que nous avons rencontrés" Ce que j'ai le moins apprécié : "Malheureusement, la sécurité mise en place par notre organisation nous a empêchés de profiter pleinement de cette formation en bloquant l’accès aux différents supports fournis par le formateur" »
CAAGIRC ARRCO « Mon avis sur le contenu du stage : "Pour ma part, cette deuxième partie de formation a abordé beaucoup de sujets que je connaissais déjà, je n'ai donc pas appris grand chose. Cependant, je tiens à souligner la qualité des TP et des supports cohérents avec des problématiques réelles." Mon avis sur le formateur : "Très bonne initiative le rappel des éléments de la veille à chaque début de cours, cela permet de se remettre petit à petit dans le bain" »
BA
Les avis figurant ci-dessus sont issus des fiches d’évaluation que remplissent les participants à la fin de la formation. Ils sont ensuite publiés automatiquement si les personnes ont explicitement accepté que nous les diffusions.
Formations liées
- Java sans connaître l'objetRéf. JSCO5 joursFondamental
- Java, les fondamentauxRéf. JJDC5 joursFondamentalProchaine session : 12 oct.3 050 €
- Quarkus : bâtir une architecture microservices avec QuarkusRéf. DAMQ3 joursIntermédiaireProchaine session : 26 oct.2 090 €
- SOAP Web Services - Mise en oeuvre avec Jakarta EERéf. SWES3 joursIntermédiaireProchaine session : 14 déc.