Formation Java avancé (4 jours)

(5)*

Quatre jours pour pousser Java plus loin : concurrence et virtual threads, traitements asynchrones, performance et optimisation, sécurité avancée.

Formation Java avancé (4 jours)

Description

Cette formation Java Concurrence et Performance vous permettra de concevoir des applications Java capables de gérer efficacement le parallélisme, d’exécuter des traitements asynchrones et d’optimiser leurs performances en production.

Pendant 4 jours, vous apprendrez à :

  • Développer des applications Java capables de traiter efficacement plusieurs tâches en parallèle sans compromettre la fiabilité, avec les virtual threads de Java 21+
  • Identifier et corriger les problèmes de performance afin de rendre vos applications plus rapides et plus robustes en production
  • Concevoir des applications Java mieux structurées et observables, plus faciles à maintenir, diagnostiquer et faire évoluer

Public

Cette formation s’adresse aux développeur·se·s Java souhaitant améliorer la scalabilité, la robustesse et l’observabilité de leurs applications.

Formation IA-friendly

Cette formation étant IA friendly, les sessions sont adaptées aux développeur·se·s qui souhaitent utiliser de l'IA pour coder. Les exercices sont conçus pour tirer parti des IDEs agentiques. Le·a formateur·rice vous accompagnera sur les bonnes pratiques du développement assisté par IA.

Campus Atlas

Cette formation est éligible au dispositif Campus Atlas. Il permet aux entreprises relevant de l'OPCO Atlas de suivre des formations sélectionnées à tarifs négociés, avec une prise en charge pouvant aller jusqu'à 100% selon votre branche et votre situation. Ce dispositif s'adresse aux entreprises cotisantes/adhérentes à Atlas et à leurs salarié·e·s.
Voir la page Campus Atlas de la formation

Les objectifs

  • Mettre en œuvre les mécanismes de concurrence Java (threads, synchronisation, Executor Service, collections concurrentes)
  • Exploiter les virtual threads avec l’Executor Service pour écrire du code concurrent simple et massivement scalable
  • Choisir entre virtual threads, CompletableFuture et programmation réactive pour vos traitements asynchrones
  • Structurer une application Java modulaire en utilisant les mécanismes d’extension et d’inversion de contrôle
  • Instrumenter et observer une application Java avec JMX, logging et outils du JDK
  • Identifier et corriger les problèmes de performance grâce au profiling, au monitoring et à la maîtrise des accès concurrents aux bases de données

Pré-requis

  • Maîtriser les bases du langage Java et de la programmation orientée objet
  • Avoir déjà développé une application Java (bibliothèque, application backend ou service)
  • Être à l’aise avec les concepts fondamentaux du développement logiciel (threads, exceptions, structures de données)
  • Ordinateur portable à apporter

Le programme de la formation Java avancé (4 jours)

Jour 1 : Threading et Concurrence

  • Approfondir les techniques de synchronisation, couvrant l'utilisation de blocs synchronisés (synchronised blocks, Locks, Sémaphores, CountDownLatch, …)
  • Explorer les collections et leur utilisation dans un contexte concurrent
  • Étudier la gestion des threads (thread pools, Executor Service, ThreadLocal)
  • Virtual threads (Project Loom, Java 21+)
    • Threads plateforme vs threads virtuels : coût, ordonnancement, montée en charge
    • Thread.ofVirtual() et Executors.newVirtualThreadPerTaskExecutor() : l'Executor Service reste l'API de référence
    • Le modèle « un thread par requête » retrouvé : code bloquant, lisible et scalable
    • Pièges à connaître : pinning, synchronized vs ReentrantLock, ThreadLocal et ScopedValue
    • Quand un pool de threads plateforme reste le bon choix (tâches CPU-bound)
    • Ce que cela change dans les serveurs d'application et leurs pools de threads

Mises en pratique :

  • Créer le projet “fil rouge”
  • Gérer les écritures simultanées de tâches dans un fichier
  • Lancer des tâches de manière asynchrone
  • Comparer la montée en charge d’un pool de threads plateforme et de virtual threads
  • Découvrir la gestion des fils dans un serveur d’application

Jour 2 : Échanges Inter-Applicatifs

  • Utiliser les CompletableFuture pour chaîner des traitements asynchrones et paralléliser des appels : l'essentiel de l'API, et le code existant à savoir maintenir.
  • Paralléliser plusieurs appels distants avec un Executor Service de virtual threads (invokeAll, invokeAny, timeouts, annulation) et retrouver du code séquentiel lisible.
  • Situer la programmation réactive (Reactive Streams, API Flow) : ce qu'elle apporte encore, et les cas où les virtual threads la rendent superflue.
  • Choisir son modèle : CompletableFuture, programmation réactive ou virtual threads — critères de décision et stratégies de migration d’un code existant.
  • Étudier la journalisation en abordant la manière de suivre et d'analyser les activités de l'application.

Mises en pratique :

  • Lister les tâches selon certains critères de manière non bloquante
  • Paralléliser plusieurs appels distants avec un Executor Service de virtual threads et gérer l’annulation
  • Utiliser les logs pour afficher les informations d’exécution

Jour 3 : Extensions Applicatives

  • Approfondir la gestion des dépendances et des concepts modulaires pour organiser efficacement les composants de l'application et favoriser la réutilisation.
  • Explorer l'Inversion de Contrôle en utilisant le Service Loader pour découpler les composants.
  • Comprendre la programmation par aspect en étudiant comment séparer et gérer les préoccupations transversales dans le code.
  • Appréhender l'instrumentation du code en utilisant javaagent et l'API Instrument pour apporter des modifications au bytecode et intercepter les comportements.
  • Découvrir la collecte de données à des fins de profiling et de surveillance, en utilisant des outils comme Java Management Extensions (JMX)

Mises en pratique :

  • Logguer toutes les entrées/sorties de méthodes utilisant la programmation par aspect
  • Suivre la consommation mémoire de l’application avec les outils du JDK

Jour 4 : Performance, bases de données, sécurité et ouverture vers l’IA

  • Accès aux données et concurrence
    • JDBC vs R2DBC
    • Transactions, verrous, accès concurrents
  • Performance et optimisation
    • Profiling, benchmarks, tuning JVM
    • Identification des points chauds
  • Sécurité avancée
    • Modèle de sécurité Java
    • ClassLoaders et isolation
  • Java et IA : panorama pragmatique
    • Enjeux d’intégration de l’IA côté Java
    • Appels à des services d’inférence
    • Gestion des performances, latence et scalabilité
    • Cas d’usage réalistes en environnement Java existant
  • Veille et nouveautés Java

Mises en pratique :

  • Connexion à une base PostgreSQL avec JDBC/R2DBC
  • Évaluation des performances des accès concurrents
  • Suivi mémoire & CPU en conditions réelles d’utilisation

Télécharger le programme

Thématiques de cette formation

Formateur

Anthony MONTEIRO

Anthony MONTEIRO

Anthony Monteiro est formateur en développement Java et mobile (Android & iOS), reconnu pour sa capacité à faire progresser durablement les développeurs qu’il accompagne. Ingénieur de formation, il a très tôt occupé un rôle de référent et de mentor au sein de ses équipes : celui vers qui l’on se tourne quand une explication claire, structurée et rassurante fait la différence.

Après plusieurs expériences en entreprise et dans l’enseignement supérieur, Anthony a choisi de se consacrer entièrement à la formation, avec une conviction forte : un bon formateur n’impose pas un savoir, il crée les conditions de l’autonomie. Ses formations sont pensées pour permettre aux stagiaires de comprendre, pratiquer et surtout continuer seuls après la session. Attentif aux rythmes et aux profils, il adapte en permanence son accompagnement pour répondre aux besoins concrets des participants.

FAQ

Pas tout à fait. Elle reprend le tronc de Java avancé (concurrence, asynchrone, modularité, instrumentation) sur quatre jours au lieu de trois. Elle y ajoute les virtual threads, le choix entre virtual threads, CompletableFuture et programmation réactive, puis un quatrième jour sur les accès aux données, le profiling, le tuning de la JVM et la sécurité.

Il faut maîtriser les bases de Java et de la programmation orientée objet, et avoir déjà développé une application Java (bibliothèque, application backend ou service). Si votre pratique est plus récente, Java Intermédiaire peut servir de marche.

Vous comparerez la montée en charge d'un pool de threads classique et de virtual threads, paralléliserez des appels distants avec gestion de l'annulation, évaluerez les performances d'accès concurrents à une base PostgreSQL avec JDBC et R2DBC, et suivrez la mémoire et le CPU en conditions réelles.

Seulement sous forme de panorama le dernier jour : intégration de l'IA côté Java, appels à des services d'inférence, latence et scalabilité. Pour construire une application avec un LLM, la formation Spring AI y est dédiée.

Nos formations sont éligibles à plusieurs dispositifs de financement, selon votre situation. Human Coders est certifié Qualiopi, ce qui permet la prise en charge par des organismes comme Pôle emploi, votre OPCO ou encore le CPF (Compte Personnel de Formation) pour certaines formations.

Pour en savoir plus, veuillez consulter notre page : Comment financer votre formation ?

Oui, la formation peut être proposée en présentiel ou en distanciel. Pour les inter-entreprises, les modalités (présentiel ou à distance) sont fonction de la session.

Nous pouvons organiser des sessions à d'autres dates ou dans d'autres villes (Bordeaux, Lille, Lyon, Marseille, Montpellier, Nantes, Nice, Paris, Strasbourg, Toulouse...)

Les formations se déroulent toujours en petit groupe de 3 à 6 stagiaires. Nous souhaitons que les formateurs et formatrices puissent passer un maximum de temps avec chacun·e.

Voici une journée type :

  • 9h : vous êtes accueillis par votre formateur·rice autour d'un petit déjeuner (croissants, pains au chocolat, jus de fruit, thé ou café...)
  • 9h : la formation commence
  • 12h30 : pause de midi. Le·a formateur·rice mangera avec vous. C'est l'occasion d'avoir des discussions plus informelles.
  • 14h : reprise de la formation
  • 17h30 : fin de la journée

8 raisons de participer à une formation Human Coders

  • Satisfaction client élevée : Un taux de satisfaction de 4,6/5 depuis 2012 (sur 1976 sessions réalisées). 99% des participants se disent satisfaits de nos formations
  • Approche pédagogique unique : Des formations en petit groupe, des formateurs passionnés et expérimentés, de véritables workshops... (Plus d'infos sur notre manifeste)
  • Catalogue de formations complet : 278 formations au catalogue, de quoi vous accompagner sur tout vos projets
  • Écosystème dynamique : Nous accompagnons les dev depuis 14 ans avec des initiatives comme Human Coders News, les Human Talks, le podcast ou encore notre serveur Discord
  • Financement facilité : Organisme certifié Qualiopi, indispensable pour que vous puissiez obtenir des aides au financement via votre OPCO
  • Références clients prestigieuses : De nombreux clients qui nous font confiance depuis des années
  • Accompagnement sur mesure : Nous vous proposons un accompagnement personnalisé par nos consultants pour vous aider dans vos projets au-delà de la formation
  • Valorisation professionnelle : Remise d'un diplôme, d'une attestation et d'une certification, suivant les formations effectuées, que vous pourrez afficher sur vos CV et réseaux sociaux

* Nombre de personnes ayant répondu au questionnaire de satisfaction sur cette formation depuis 2012