Course objectives
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
Who is this course for?
Cette formation Java s’adresse aux développeurs et aux chefs de projet
Prerequisites
Développeur possédant des connaissances sur les principes de base de la programmation objet
Programme
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
Description 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.
Travaux Pratiques
50 % du temps est consacré aux Ateliers, l’IDE Eclipse est utilisé
Topics: Java

