Formation Le développement Java
10 JoursDescription de la formation Java
Cette formation Java représente un cursus progressif de 10 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 3 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
Compétences visées – Objectif opérationnel :
L’objectif de cette formation est de développer des applications avec le langage Java et de maintenir le code associé.
Objectifs pédagogiques :
À l’issue de cette formation, vous aurez acquis les connaissances et les compétences nécessaires pour :
- Utiliser Eclipse et comprendre les apports d’un IDE (Integrated Development Environment)
- Maîtriser la syntaxe Java et savoir appliquer les concepts objets au langage Java
- Mettre en œuvre l’héritage et le polymorphisme
- Gérer les exceptions
- Gérer les dates et le temps avec l’API Date/Time
- Utiliser les expressions Lambda, les références de méthodes
- Mettre en œuvre l’API Stream pour la manipulation des flux de données
- Connaître le fonctionnement de la JVM (Java Virtual Machine)
- Comprendre les bases des Design Patterns
- Effectuer une programmation parallèle
- Accéder aux bases de données
- Accéder au système de gestion de fichiers avec Nio.2
- Réaliser des tests unitaires
À qui s’adresse cette formation ?
Public :
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
Contenu du cours Java
Présentation de Java 8
Historique, caractéristiques, JDK, JRE, versions
Rôle de la machine virtuelle
Déclinaisons : Java SE, Java EE, Java ME
Applications
ATELIERS
Installation du JDK 8 et du JRE 8
Outils de développement
Utilisation du compilateur du JDK
Prise en main d’Eclipse
Debugging
ATELIERS
Création d’un programme simple avec un éditeur, compilation puis exécution avec les outils du JDK 8
Installation d’Eclipse et création d’un projet, exécution normale puis exécution à l’aide du debugger
Java, fondamentaux
Types primitifs, variables, opérateurs
Branchements conditionnels, switch, boucles
Conversions de type, tableaux
ATELIERS
Création de programmes simples avec mise en œuvre de variables de différents types
Calculs avec opérateurs, branchements conditionnels et boucles
Classes, objets, relations entre objets
Packages, classes, objets, constructeurs, méthodes, spécificateurs d’accès
Membres 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
ATELIERS
Création d’une application avec classes en relation d’association, de composition, d’héritage
Mise en œuvre du polymorphisme
Les exceptions
Hiérarchie des classes d’exception
Exceptions contrôlées et non-contrôlées
Mécanisme try-catch, rôle de finally, try-with-ressources
Propagation d’exceptions
ATELIERS
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
Les traitements sur les chaînes de caractères
Manipulation de chaînes avec String et StringBuilder, Scanner, StringTokenizer
Utilisation des expressions régulières avec Pattern et Matcher
Formatage des chaînes de caractères
ATELIERS
Utilisation de StringBuilder pour modifier une chaîne de caractères
Analyse d’exemples avec Pattern et Matcher
Les collections et la généricité
Choix d’un type de collection: List, Set, Queue, Map
Intérêt de la généricité
Redéfinition des méthodes equals et hashCode
Parcours de collections avec itérateur, boucle for-each
Classes ArrayList, HashSet, TreeSet, HashMap
ATELIERS
Remplacement d’un tableau java par une collection ArrayList dans un projet
Les flux d’entrées-sorties
Flots d’octets, de caractères
Manipulation de fichiers en lecture/écriture
Manipulation de répertoires
Bufferisation des données
Sérialisation d’objets
ATELIERS
Ecriture/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
La nouvelle API pour la gestion du temps et des dates
API des packages java.time et java.time.format
Parsing et formatage des dates
ATELIERS
Saisie de dates, affichage en français, calculs
Introduction aux expressions Lambda
Classes internes anonymes, expressions lambdas
Interfaces java 8
Interfaces fonctionnelles
ATELIERS
Remplacement de classes internes anonymes par des lambdas
Création de lambdas avec Consumer, Supplier et Predicate
Déploiement d’applications
Principe du déploiement
Création/utilisation de librairies jar
Création/utilisation de jar exécutables
ATELIERS
Création avec Eclipse d’une librairie pour utilisation dans un projet
Déploiement d’une application au moyen d’un fichier jar exécutable
Fonctionnement de la JVM
Chargement des classes, Classloader, classpath
Gestion de la mémoire, le garbage collector
Le multithreadings, support de Java pour la gestion des threads
Le modèle de sécurité de Java
La réflexion, les annotations
Les outils d’inspection, debugger, surveillance, traces
ATELIERS
Exécution d’exemples pédagogiques illustrant les concepts présentés
Java et les design patterns
Introduction aux design patterns, les documentations de référence
Pattern singleton
Patter Factory
Pattern Decorator
Pattern Builder
Pattern Proxy
ATELIERS
Implémentation des 5 patterns les plus répandus
Java et les tests unitaires
Présentation, intérêt
Automatisation et intégration des tests dans le processus de builds, l’exemple de Maven
Mise en œuvre avec Junit4, assertions, annotations
Cycle de vie d’exécution d’un test
Données de tests
Suite de tests
ATELIERS
Création de tests Junit pour tester des classes
Mise en œuvre d’une suite de tests
Java et les bases de données
Historique de l’accès aux données via Java, présentation de JDBC
L’API JDBC, Connection, Statement, ResultSet
Problématique de l’ORM et introduction à JPA
Configuration JPA, l’exemple d’Hibernate
Mapping basique, API de l’EntityManager, les transactions
Mapping de l’héritage
Mapping des associations, lazy-loading et cascading
Le langage JPQL
L’API criteria
Les transactions longues
ATELIERS
Mise en œuvre de JPA avec Hibernate pour rendre persistants des beans entités
Utilisation du langage de requêtes JPQL pour rechercher des beans entités
Mise en œuvre de l’héritage et d’associations unidirectionnelles et bidirectionnelles
Introduction aux Framework Java
Notion de framework et de conteneur
Vue d’ensemble et cas d’utilisation
Le pattern IoC et l’injection de dépendances
Indépendance vis à vis des implémentations
Spring Core et l’injection de dépendance
Exemple basique
ATELIERS
Mise en place de l’IDE
1ère configuration de Spring, Tests via JUnit
Découverte de l’API Spring
Les beans, BeanFactory et ApplicationContext
Mode singleton ou prototype, cycles de vie des beans
Gestion des propriétés, notions de collaborators
Méthodes d’injection de dépendances
Annotations et Autowiring
Définition de bean abstrait, gestion de l’héritage
ATELIERS
Différents types de configuration Spring, utilisation des différentes annotations
L’IoC et les tests
Isolation des classes à tester et Mock Objects
Distinction tests unitaires et test d’intégration
Les apports de Spring pour les tests
Indépendance vis à vis des outils de tests
Injection des données de test
Mécanisme de cache pour l’accélération des tests
Rollback des transactions
ATELIERS
Création de mock Objetcs, configuration Spring de Test, mise en place d’une suite de tests
L’IoC et les architectures multi-tiers
Présentation architecture multi-tiers,
Séparation claire des différentes couches
Injection de services métiers, gestion des transactions, les choix possibles pour l’implémentation
Couche de persistance et accès aux données : Exemple de Spring Data JPA
Tests unitaires des différentes couches, tests d’intégration
ATELIERS
Application multi-tiers complète, utilisation de services POJO, EJB ou Rest, Implémentation JPA avec Hibernate
Travaux Pratiques
50 % du temps est consacré aux Ateliers, l’IDE Eclipse est utilisé