- Cours pratique
- Informatique
- Oracle
Formation Maîtriser le développement Java

- Durée
- 9 jours
- Niveau
- Fondamental
- Modalités
- Distanciel
Description de la formation Developpement Java
Cette formation Java Développement représente un cursus progressif de 9 jours visant à vous rendre autonome dans l'utilisation du langage Java et des frameworks incontournables que sont Hibernate et Spring. Vos solides compétences Java vous permettront d’être opérationnel tout en ayant acquis les bonnes pratiques du développement d'applications Java dans un contexte professionnel avec les outils de génie logiciel «vraiment» utilisés au quotidien.
Un premier module permet de vous familiariser avec l’IDE Eclipse pour mettre en œuvre les concepts objets de Java (Packages, Héritage, Interface, Classe abstraite, Exceptions). Les APIs de base (Collections, I/O, String, Date) sont explicitées en profondeur. Les participants sont également familiarisés avec les règles de nommage, le déploiement d’applications Java, l'accès à la documentation et les modernités de Java 8.
Le second module permet de présenter la persistance des données en Java (Hibernate/JPA) et de consolider votre connaissance de Java (fonctionnement interne de la JVM), tout en professionnalisant vos développements (outils de diagnostics de bugs, test unitaire avec Junit, intégration avec Maven, design patterns couramment utilisés).
Dans la dernière partie de la formation vous apprenez à utiliser Spring. Ce framework facilite et structure le développement ainsi que les tests en proposant un portefeuille complet de solutions aux développeurs. Spring s'appuie principalement sur l'intégration de trois concepts clés : l'inversion de contrôle (IoC) ou injection de dépendance, la programmation orientée aspect et une couche d'abstraction qui permet d'intégrer d'autres frameworks (comme Hibernate vu précédemment) et bibliothèques avec une plus grande facilité.
Attention, cette formation est composée de deux modules, les dates indiquées sont celles du premier module de 5 jours. Pour connaitre les dates des modules suivants, contactez notre service commercial.

Objectifs pédagogiques
À l'issue de cette formation Java Développement, vous aurez acquis les connaissances et les compétences nécessaires pour :
- Maîtriser son environnement de développement (IDE Java)
- Maîtriser la syntaxe Java
- Savoir appliquer les concepts de la programmation orientée objet au langage Java (classes, méthodes, encapsulation, héritage, constructeur, polymorphisme, classe abstraite, interfaces, relations entre classes, etc.)
- Mettre en œuvre les principales fonctions des API standards (Collections, I/O, JDBC, Streams, …)
- Connaître les spécificités des différentes versions de Java
- Comprendre le fonctionnement de la JVM
- Savoir utiliser les API NIO.2 pour manipuler les fichiers, liens symboliques et répertoires
- Programmer en Java dans le contexte des bases de données relationnelles
- Développer une application Java multitâches en utilisant les threads
- Utiliser les expressions lambdas
- Mettre en œuvre l’API Stream
- Mettre en œuvre les modules de Java 11
- Débugger une application
Objectifs opérationnels
Développer des applications avec le langage Java et de maintenir le code associé.
Programme
Contenu du cours, module par module
23 modules
- Historique, caractéristiques, Rôle de la machine virtuelle
- Déclinaisons : Java SE, Java EE, Java Embedded
- Les outils fournis par le JDK
- Les évolutions de Java : Java 8, Java11+
- Importance des LTS (Long Term Support)
- Licence Oracle et alternative avec OpenJDK
Travaux pratiques
Description : Installation du JDK 11. Récupération de HelloWorld.java. Commandes de compilation
- Les apports d’un IDE : Compilation automatique, refactoring, automatisation de tâches
- Les IDEs Java les plus répandus : Eclipse, IntelliJ
- Prise en main d’Eclipse : Notion de perspective, de Vue, Préférences, MarketPlace
- Créer un projet dans Eclipse. Organisation des sources et des classes
- Exécuter une application, Configuration des exécutions
- Debugging : La perspective de Debug
Travaux pratiques
Description : Création d’un projet Java, Récupération de HelloWorld.java. Visualisation des propriétés du projet, répertoire de compilation, Version JDK. Exécution, exécution en mode DEBUG, breakpoint
- Types primitifs, variables, opérateurs
- Branchements conditionnels, switches, boucles
- Conversions de types, tableaux
- Déduction du type des variables locales avec var
Travaux pratiques
Description : Création de programmes simples avec mise en œuvre de variables de différents types, Calculs avec opérateurs, branchements conditionnels et boucles.
- Packages, classes, objets, constructeurs, méthodes, spécificateurs d’accès
- Cycle de vie d'un objet en mémoire, instanciation d’objet avec new
- Comprendre le mot clé static
- Surcharge de méthodes
- Les énumérations
- Relations de composition, associations, héritage
- Polymorphisme, classes abstraites, interfaces, conversions entre objets
- La classe Object et ses méthodes
- Les classes enveloppes
Travaux pratiques
Description : Création d’une application avec classes en relation d’association, de composition, d’héritage, Mise en œuvre du polymorphisme.
- Hiérarchie des classes d’exceptions
- Exceptions contrôlées et non contrôlées
- Mécanisme try-catch, rôle de finally, try-with-ressources
- Propagation d’exceptions, récupération de Stack Trace
Travaux pratiques
Description : Mise en place d’une gestion d’exceptions avec try-catch-finally dans une application. Utilisation du try-with-resources. Propagation d’exceptions contrôlées et non-contrôlées.
- Principe du déploiement
- Création/utilisation de librairies jar
- Création/utilisation de jar exécutables
- Les commandes jlink et jpackage du JDK
Travaux pratiques
Description : Déployer une application à l’aide d’un fichier jar ordinaire puis à l’aide d’un jar exécutable
- Qu’est-ce que la généricité ? Son intérêt et son usage dans les collections
- L’interface Collection, ses principales sous-interfaces : List, Set, Queue
- L’interface Map
- Les principales classes d’implémentation : ArrayList, HashSet, TreeSet, HashMap
- Redéfinition des méthodes equals et hashCode
- Parcours de collections avec itérateur, boucle for-each
Travaux pratiques
Description : Remplacement d’un tableau Java par une collection ArrayList dans un projet. Parcours des éléments. Utilisation d’un TreeSet, d’une HashMap
- Principales classes du package java.io
- Distinction flux d’octets, de caractères
- Application aux fichiers, au réseau
- Opérations de lecture/écriture sur les fichiers.
- Manipulation de répertoires
- Bufferisation des données Sérialisation d’objets
- Présentation des API du package java.nio
Travaux pratiques
Description : Écriture/lecture dans un fichier texte, puis un fichier binaire. Manipulation de répertoires avec File. Désérialisation d’objets présents dans un fichier.
- Le modèle de JDBC, ses principes généraux
- Rôle du driver
- Rappels sur les bases de données relationnelles et SQL
- Correspondance entre types SQL et Java
- Se connecter à un SGBD via JDBC
- Exécuter des requêtes de sélection, de mise à jour
- L’utilisation des PreparedStatement
- Concepts de transaction, délimiter une transaction via JDBC
- Notion de pool de connexions
Travaux pratiques
Description : Mise en place du Driver PostgreSQL dans Eclipse. Ecriture d’une classe DAO offrant les opérations CRUD sur un objet du domaine Simple. Ecriture d’un Main faisant usage de la classe DAO.
- 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
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 (lazy)
- Intérêt de la classe Optional
- Spécificités des traitements Big Data
Travaux pratiques
Description : Utilisation de streams séquentiels sur tableaux et collections
- Les modules : rôle et principe
- Nouvelle syntaxe du switch
- Les blocs de texte
- Pattern matching avec instanceof
- Les records
- Les classes et interfaces scellées
Travaux pratiques
Description : Quizz de validation et exemples de code commentés par le formateur
- Le modèle de sécurité de Java
- Chargement des classes, rôle du Bootstrap Class Loader
- Mettre en œuvre son propre class loader
- Vérification de la structure d’un fichier .class par le class-file verifier
- Gestion de la mémoire, les différents garbage collectors
- Origines du Out Of Memory Error
- Utilisation de l’outil visualvm
- Principe et rôle d’un Security Manager
- Format des fichiers .policy
Travaux pratiques
la détection de deadlocks
Mise en œuvre d’un SecurityManager pour protéger l’accès aux fichiers du système
- Classes internes static, membre, locale, anonyme
- Accès aux membres, création d’instances
- Passage de paramètres génériques aux méthodes
- Méthodes génériques
- Principe et rôle d’une annotation
- Attributs obligatoires et optionnels
- Cibles d’une annotation
- Annotations personnalisées
- Annotations multiples
Travaux pratiques
- 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
- 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
Correction d’une corruption de données dans une application
- Historique de l'accès aux données en Java, présentation de JDBC
- Correspondance entre types SQL et Java
- Rôle du driver
- L'API JDBC, Connection, Statement, ResultSet
- Requêtes paramétrées avec PreparedStatement
- Appel de procédure stockées avec CallableStatement
- Utilisation de l’API RowSet
- Gestion des transactions
- Notion de pool de connexions
- Problématique de l'ORM et introduction à JPA
Travaux pratiques
- 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
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
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
Comparaison de performances entre streams séquentiels et parallèles
- Principe et intérêt des modules
- 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
- Modularité du JDK
- Nouvelle organisation de la documentation des API Java
- Fichiers jar modulaires
- Problématique des migrations : approches bottom-up et top-down
Travaux pratiques
Mise en œuvre de modules anonymes et automatiques
Mise en œuvre de services
Migration d'une application avec mise en oeuvre des modules
- Évolution du switch
- Blocs de texte
- Rôle et intérêt des records
- Classes et interfaces scellées
- La commande jlink
- La commande jpackage
- Rôle et intérêt de Maven
- Structure d’un projet Maven
- Constitution d’un POM
- Résolution des dépendances
- Comparaison framework/librairie
- Présentation de JUnit pour les tests unitaires
- Présentation de Hibernate/JPA pour l’accès aux bases de données relationnelles
- Présentation de Spring pour l’injection de dépendances
Travaux pratiques
- Rôle du débugging
- Présentation de l’outil de débugging dans l’IDE
- Notions de breakpoint, conditional breakpoint, watchpoint, step filtering
- Exécution en pas à pas, observation des variables, modification
- Suspension et reprise de l’exécution d’un thread
Travaux pratiques
Travaux pratiques
50 % du temps est consacré aux Ateliers, l'IDE Eclipse est utilisé
Programme mis à jour le 09/12/2025
Public concerné
Cette formation Java s'adresse aux développeurs et aux chefs de projet

Prérequis
Développeur possédant des connaissances sur les principes de base de la programmation objet, la formation Conception et Programmation objet (Réf DIPO) est un pré requis idéal pour tirer pleinement profit de ce stage.
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 avis
« Mon avis sur le contenu du stage : "Une partie base de java et hibernate/jpa très bien enseignée et intégrée grâce aux TPs. La partie Spring un peu plus floue de mon ressenti du fait de la largeur du framework et des exemples/TPs moins concrets" Mon avis sur le formateur : "Très bon pédagogue avec une expérience solide dans le domaine informatique en général et de bonnes compétences techniques. De plus une bonne animation du cours." »
AB « Mon avis sur le contenu du stage: Très bonne formation, même si elle est un peu limitée temporellement pour tout voir en profondeur. Mon avis sur la salle de formation: Le problème du vidéo-projecteur et des compatibilité de versions entre Eclipse et certains plugins a fait diminuer mon appréciation du matériel. »
BJ « Mon avis sur le contenu du stage : "Bon support de cours pour la session sur JAVA et Spring" Mon avis sur le formateur : "Yann et Jacques sont très compétents et avec une très bonne maîtrise technique de leur sujet" Ce que j'ai le plus apprécié : "La qualité des 2 formateurs" »
Yvan
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
- Mockito : Tests unitaires et mocking en JavaRéf. MOCK1 jourIntermédiaireProchaine session : 17 nov.950 €
- Nouveautés Java 21 et Java 25Réf. JN18252 joursFondamentalProchaine session : 7 déc.1 590 €
- Optimisation et Profiling des applications Java avec JProfilerRéf. JPOJ3 joursIntermédiaireProchaine session : 9 nov.2 090 €
- Programmation pratique avec ScalaRéf. SCAL3 joursIntermédiaireProchaine session : 7 déc.2 190 €