3 jours (21 heures)
Formation certifiante - Code CNCP : 2231 - Certif Info : 94013
- Présentiel
- Blended - Learning
- FOAD / E-learning tutoré
Objectifs
- 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
Prérequis
Connaissances élémentaires de la programmation en Java « Java : les fondamentaux »
Vous n’avez pas les prérequis nécessaires pour la formation Java avancé ? Contactez nous pour étudier ensemble un parcours sur mesure et garantir ainsi la réussite de votre projet
Intervenants
Les contenus pédagogiques sont synchronisés sur les évolutions techniques grâce à notre équipe d’intervenant experts et professionnels du secteur enseigné. Les formateurs qui interviennent pour animer les formations ont une double compétence : compétence informatique et compétence métier (Banque, Assurance, Administration, Santé, Transport).
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
Une attestation d’assiduité sera délivrée après la validation de toutes les compétences de ce module.
POUR TOUTE DEMANDE DE RENSEIGNEMENT OU DE DEVIS