[{"data":1,"prerenderedAt":45},["ShallowReactive",2],{"course-java-perfectionnement-et-outillage":3,"highlight-java-sealed interface Pai":44},{"id":4,"name":5,"slug":6,"location":7,"targetAudienceFormatMarkdown":8,"prerequisitesFormatMarkdown":9,"objectivesFormatMarkdown":10,"descriptionFormatMarkdown":11,"teachingMethodsFormatMarkdown":12,"teachingResourcesFormatMarkdown":13,"evaluationMethodsFormatMarkdown":14,"accessibilityFormatMarkdown":15,"accessMethodsFormatMarkdown":16,"minimumParticipants":7,"maximumParticipants":7,"duration":17,"reference":18,"trainerType":7,"updated_at":19,"created_at":20,"price":21,"organizationMode":22,"theme":25,"code":29,"tags":34,"metadata":35},"/api/courses/0b544c27-b298-11f1-a993-d8ca06000363","Java : perfectionnement et outillage","java-perfectionnement-et-outillage",null,"Développeurs Java confirmés souhaitant moderniser leurs pratiques.","Pratique régulière de Java et maîtrise de la programmation objet.","Exploiter les apports récents de Java (records, pattern matching, threads virtuels) et industrialiser les builds avec Maven.","--day1--\n\n## Évolutions du langage\n\n-   Panorama des versions LTS 17, 21 et 25 ; records ; classes scellées ; pattern matching pour switch et instanceof ; text blocks.\n\n--break--\n\n## Streams et fonctionnel avancé\n\n-   Collecteurs personnalisés ; opérations parallèles et limites ; API Optional maîtrisée ; composition de fonctions ; nouveaux gatherers.\n\n--day2--\n\n## Concurrence classique\n\n-   Threads, exécuteurs, pools ; synchronisation et visibilité mémoire ; CompletableFuture ; collections concurrentes.\n\n--break--\n\n## Threads virtuels\n\n-   Modèle de concurrence structurée ; threads virtuels et cas d'usage ; migration d'un code bloquant ; mesures et pièges observés.\n\n--day3--\n\n## Performance et mémoire\n\n-   Modèle mémoire de la JVM ; ramasse-miettes et choix du collecteur ; profilage (JFR, async-profiler) ; diagnostic de fuites.\n\n--break--\n\n## Qualité et API modernes\n\n-   API HTTP client ; sérialisation ; gestion fine des exceptions ; tests avancés (paramétrés, doublures).\n\n--day4--\n\n## Maven en profondeur\n\n-   Cycle de vie, phases, plugins ; gestion des dépendances et conflits ; projets multi-modules ; profils et propriétés.\n\n--break--\n\n## Industrialiser le build\n\n-   Publication d'artefacts et versionnement ; intégration dans une chaîne CI ; analyse de qualité ; atelier de mise en place complète.","Présentiel, distanciel, hybride","Les supports pédagogiques sont remis aux stagiaires sous format numérique et/ou papier selon les modalités de la formation.\n\nIls comprennent des supports de cours, des présentations, des fiches pratiques, des études de cas, des exercices applicatifs ainsi que des QCM d’entraînement selon la formation. (adapté au choix du formateur)\n\nLes formations s’appuient sur des moyens techniques adaptés : ordinateurs, logiciels professionnels, connexion internet, écran ou vidéoprojecteur, ainsi que des outils collaboratifs et de visioconférence pour les formations à distance.\n\nL’ensemble des supports pédagogiques est accessible pendant et après la formation afin de favoriser l’appropriation et la mise en pratique des compétences acquises.","En amont de la formation, un recueil des besoins permet de récolter des informations sur le stagiaire et ses attentes. L’évaluation se fait en cours de formation, par des études de cas ou des travaux pratiques. En fin de formation, par un questionnaire d’auto-évaluation et/ou un examen.\n\nUn suivi de qualité est effectué grâce à nos sessions en groupe restreint (entre 2 et 9 participants maximum). Le stagiaire émargera par demi-journée et recevra une attestation de formation.","Nous informons l’ensemble de nos clients et stagiaires que nous sommes dans la capacité d’adapter les sessions selon les handicaps et les situations spécifiques. Nous nous engageons à répondre à toutes vos demandes sous un délai de 48h ouvré.","Si l’une de nos formations vous intéresse, contactez-nous au +33 4 93 65 34 24 ou à l’adresse mail contact@m2g-intellect.fr. Selon votre besoin et vos attentes, nous organiserons un échange téléphonique avec le formateur pressenti afin d’adapter la formation et ses modules, puis nous vous adresserons un devis.\n\nLes dates de la formation seront à convenir sous 30 jours maximum.","28.00","L1-DEV-04","2026-09-18T09:45:10+00:00","2026-09-17T15:02:32+00:00","2510.00",{"id":23,"name":24},"/api/organization_mode_types/6","HYBRID",{"id":26,"name":27,"slug":28},"/api/themes/0ac148c3-b298-11f1-a993-d8ca06000363","Développement logiciel informatique et web","developpement-logiciel-informatique-et-web",{"id":30,"label":31,"domain":32},"/api/training_specialities/163","326 - Informatique, traitement de l’information, réseaux de transmission des données",{"label":33},"32 - Communication et information",[],{"desc-accroche":36,"Description":37,"icon-color":38,"icon-name":39,"code-langage":40,"code-snippet":41,"courte-description":42,"titre-accroche":43},"Exploitez les apports récents du langage : records, pattern matching sur types scellés, API Stream avancée, threads virtuels, et structurez vos projets multi-modules avec Maven.","Cette formation s'adresse à des développeurs Java confirmés qui veulent tirer parti des évolutions récentes du langage plutôt que de rester sur des habitudes datant de Java 8. Elle couvre les records pour des porteurs de données immuables, le pattern matching sur instanceof et switch combiné aux types scellés pour des traitements exhaustifs et sûrs, l'API Stream avancée (collectors personnalisés, traitement parallèle) et les threads virtuels pour de la concurrence à haut débit sans la lourdeur des pools classiques. Le volet outillage couvre l'industrialisation des builds avec Maven : gestion des dépendances et de leurs versions, cycle de vie, projets multi-modules, plugins de qualité et de couverture de tests, intégrés dans une base de code réaliste plutôt que dans un squelette minimal. Elle s'adresse aux développeurs Java confirmés souhaitant moderniser leurs pratiques.","#E76F00","mdi:language-java","java","sealed interface Paiement permits CarteBancaire, Virement {}\n\nrecord CarteBancaire(String numero, Montant montant) implements Paiement {}\nrecord Virement(String iban, Montant montant) implements Paiement {}\n\nstatic String traiter(Paiement p) {\n    return switch (p) {\n        case CarteBancaire cb -> \"CB \" + cb.montant();\n        case Virement v -> \"Virement \" + v.montant();\n    };\n}","Formation de perfectionnement Java : records, pattern matching, threads virtuels, Stream avancé et industrialisation des builds avec Maven sur une base de code réelle.","Modernisez vos pratiques Java avec records, pattern matching et threads virtuels, et industrialisez vos builds avec Maven.","\u003Cpre class=\"hljs\">\u003Ccode class=\"language-java\">\u003Cspan class=\"hljs-keyword\">sealed\u003C/span> \u003Cspan class=\"hljs-keyword\">interface\u003C/span> \u003Cspan class=\"hljs-title class_\">Paiement\u003C/span> \u003Cspan class=\"hljs-keyword\">permits\u003C/span> CarteBancaire, Virement {}\n\n\u003Cspan class=\"hljs-keyword\">record\u003C/span> \u003Cspan class=\"hljs-title class_\">CarteBancaire\u003C/span>\u003Cspan class=\"hljs-params\">(String numero, Montant montant)\u003C/span> \u003Cspan class=\"hljs-keyword\">implements\u003C/span> \u003Cspan class=\"hljs-title class_\">Paiement\u003C/span> {}\n\u003Cspan class=\"hljs-keyword\">record\u003C/span> \u003Cspan class=\"hljs-title class_\">Virement\u003C/span>\u003Cspan class=\"hljs-params\">(String iban, Montant montant)\u003C/span> \u003Cspan class=\"hljs-keyword\">implements\u003C/span> \u003Cspan class=\"hljs-title class_\">Paiement\u003C/span> {}\n\n\u003Cspan class=\"hljs-keyword\">static\u003C/span> String \u003Cspan class=\"hljs-title function_\">traiter\u003C/span>\u003Cspan class=\"hljs-params\">(Paiement p)\u003C/span> {\n    \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-keyword\">switch\u003C/span> (p) {\n        \u003Cspan class=\"hljs-keyword\">case\u003C/span> CarteBancaire cb -&gt; \u003Cspan class=\"hljs-string\">&quot;CB &quot;\u003C/span> + cb.montant();\n        \u003Cspan class=\"hljs-keyword\">case\u003C/span> Virement v -&gt; \u003Cspan class=\"hljs-string\">&quot;Virement &quot;\u003C/span> + v.montant();\n    };\n}\u003C/code>\u003C/pre>",1789717714328]