JAVA AVANCÉ
Formation certifiante - Code CPF 94 013 - 3 jours (21 heures)
Formations en présentiel
Formations Blended - Learning
Formations E-learning Tutoré
Présentiel
Blended - Learning
E-learning tutoré
A l'issue de la formation, les stagiaires seront capables de :
- Développer une application complexe en Java
- Comprendre les notions liées à la machine virtuelle (JVM),
- Savoir modifier le comportement d’une machine virtuelle
- Réaliser une application multi-tâches et temps réel
- Sécuriser correctement son application
- Comprendre les design patterns et leur utilisation pratique
- Comprendre Java et les tests unitaires et leur utilisation pratique
- Utiliser une base de données avec Java
- Gérer l’API Date/Time
- Mise en œuvre d’une API Stream pour la manipulation des flux de données
La formation Java avancé est accessible à toute personne ayant des connaissances élémentaires de la programmation en Java.
Des exercices, des études de cas, des QCM et des tours de table permettent au formateur d’évaluer l’atteinte des objectifs ainsi que la progression du stagiaire à différents moments de la formation.
La validation de toutes les compétences requises est obligatoire pour l’obtention d’un BADGE ou d’un Certificat. L'obtention du Certificat est validé par la réalisation et la présentation d'un projet devant un jury.
- Développeurs informatiques
- Ingénieurs d’étude
- Architecte système et logiciel
- Consultants et chefs de projets proches du développement
- Tout développeur ou informaticien souhaitant développer des applications et des services WEB avec JAVA J2EE
PROGRAMME DE FORMATION
JAVA AVANCÉ
Syntaxes avancés du langage
- Les « import static »
- Autoboxing et auto-unboxing des types primitifs
- Les types génériques
- Amélioration des boucles avec les collections
- Introspection et réflexion
- Méthodes à nombre d’arguments variable
- Annotations : utilisation, création
Comprendre la JVM (Machine Virtuelle)
- Chargement des classes, Classloader, classpath
- Comprendre comment fonctionne le garbage collector et la gestion de la mémoire, forcer un garbage
- Optimiser l’utilisation de la mémoire, modifier les paramètres de lancement
- Comprendre le class loader
- Modifier la stratégie de chargement des classes : ecriture d’un class loader
- Piloter la JVM via API
Gérer les accès concurrents
- Définition d’un thread
- Concepts et spécificités du multithreading par rapport à la programmation « traditionnelle »
- Créer et manipuler les threads
- Synchroniser les threads sur un objet moniteur
- Interfaces Lock et Condition
- Pools de threads
- Les apports du framework Executor (invocation, ordonnancement, exécution, contrôle)
- Le package java.util.concurrent
- Exemple de temps réel
- Bonnes et mauvaises pratiques
Annotations
- Programmation orientée aspect et Java
- Le modèle Annotations
- Types d’annotations
- Annotations intégrées
- Annotations vs. Descripteurs (XML)
Atelier cas pratique
La sécurité en Java
- Les contextes : standalone, applet, serveur Java EE
- Les API de sécurité (JAAS, JCE, JSSE)
- La configuration
- Cryptographie et PKI
- Signer une applet java
Introduction aux Design Patterns
- Programmation par interfaces
- Introduction aux design patterns du GoF (Gang Of Four)
- Les documentations de référence
- Pattern Singleton
- Pattern Factory
- Pattern Decorator
- Pattern Observer
- Pattern Proxy
- Architecture MVC
- Architectures n-tier
Accéder à une base de données relationnelle avec JDBC
- Architecture et types de pilotes JDBC
- Charger le pilote et récupérer une connexion à la base de données
- Exécuter des requêtes SQL, requêtes paramétrées
- Exploitation des résultats
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 JUnit5, assertions, annotations
- Cycle de vie d’exécution d’un test
- Données de tests
- Suite de tests
Nouvelle API Date/Time
- La gestion du temps «classique» et sa lourdeur de manipulation en Java (jour, mois, année, heure, minutes, sec.)
- Les concepts de temps machine et temps humain avec la nouvelle API
- La gestion du temps machine avec java.time.Instant et java.time.Duration
- Le temps humain avec java.time.LocalDate, java.time.LocalTime, java.time.LocalDateTime
Atelier cas pratique
Notion de persistance objet
- Principes
- Data Transfer Object
- Exemple d’Hibernate
Gestion de flux d’entrées/sorties
- Flux binaires, encodages
- Sérialisation/désérialisation d’objets
- Les modifieurs Java et leurs impacts
Architecture à objets distribués : RMI (Remote Method Invocation)
- Présentation
- Appel de méthodes d’un objet distant (TCP-IP)
- Appel de méthodes d’un objet distant (RMI)
- Annuaire d’objets : RMIRegistry
- Interface Remote
- Le compilateur rmic
- Stub et skeleton
- Construction du client et du serveur
- Introduction à CORBA et IIOP
Réseaux en Java
- Le modèle de référence OSI
- Protocoles réseau
- La classe Socket
- La classe Server Socket
- Connexion via des objets URL
- HTTP et autres serveurs TCP
- Clients et serveurs Datagram
- Sockets sans blocage
- Multi-Threading dans les serveurs
Mise en œuvre de l’API Stream pour la manipulation des flux de données
- 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éduction avec reduce et collect
- Interface Collector et classe Collectors
- Autres méthodes : limit, skip, sorted, min, max, distinct, allMatch, anyMatch, noneMatch, count
- Streams parallèles, précautions d’usage
Atelier cas pratique

Allez plus loin
Développez vos compétences
Financement avec le CPF via
le site MonCompteFormation

POUR TOUTE DEMANDE DE RENSEIGNEMENT OU DE DEVIS