3 jours (21 heures)

Formation certifiante - Code CNCP : 2231 - Certif Info : 94013

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É

Jour 1

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

Jour 2

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 

Jour 3

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