Formation Java : Concurrence et Performance

Maîtrisez la concurrence Java, l’asynchrone et l’optimisation des performances pour concevoir des applications robustes et scalables.

Formation Java : Concurrence et Performance

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é
  • 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)
  • Développer des traitements asynchrones avec CompletableFuture et les principes de programmation réactive
  • 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 et au monitoring
  • Gérer l’accès concurrent aux bases de données et optimiser les performances applicatives

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 : Concurrence et Performance

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)
  • Comprendre les mécanismes de gestion des threads dans les serveurs d'application

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
  • Découvrir la gestion des fils dans un serveur d’application

Jour 2 : Échanges Inter-Applicatifs

  • Explorer l'utilisation des CompletableFuture pour créer des chaînes de traitement asynchrones, gérer les tâches futures et effectuer des opérations parallèles.
  • Approfondir les concepts de programmation réactive, en explorant la spécification Reactive Streams, l'API Flow et R2DBC.
  • Parcourir les techniques pour créer, surveiller et gérer des processus système à partir d'applications Java.
  • É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
  • 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

Formateurs

Guillaume DROUET

Guillaume est développeur depuis 10 ans et spécialisé dans le monde des APIs WEB. Il a travaillé en tant que consultant et formateur en ESN puis en startup dans la région Lilloise.

Aujourd'hui, il est freelance et intervient en tant que tech lead chez ses clients où il les conseille au quotidien sur des problématiques de qualité du code, d'architecture et de performance applicative.

Il aime partager et apprendre via différents axes, c'est pour cela que il donne des formations en parallèle de ses missions. A ce titre, il est également vacataire à l'Université depuis 2014.

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

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é...)
  • 9h30 : 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
  • 18h : fin de la journée

8 raisons de participer à une formation Human Coders

  • Satisfaction client élevée : Un taux de statisfaction de 4,6/5 depuis 2012 (sur 1810 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 : 225 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