Java avancé - Versions 8 et plus - Comprendre et appréhender les nouveautés du langage Java à partir de la version 8

Résumé

Cette formation permet d'appréhender les principales nouveautés apportées à partir de la version 8 du langage Java au travers de mises en pratique.

Cette formation est dispensée par un Architecte Solutions de plus de 10 ans d'expérience.

Prix

1800 € HT

Durée

21h (3 jours)

Effectifs

2 à 10 personnes

Prérequis

  • Bonnes connaissances du langage Java (fondamentaux) et pratique du développement Objet

Objectifs

  • Exploiter les principaux apports des versions de la Java Development Kit (JDK) à partir de la 8
  • Exploiter des lambda expressions en passant par les streams et l'API DateTime
  • Gérer des modules en passant par les étapes d'une migration réussie
  • Connaître les améliorations apportées au langage au fil des versions
  • Utiliser les bases du langage Java avec une meilleure productivité

Public cible

  • Développeur Java
  • Architecte
  • Chef de projet technique

Moyens pédagogiques

Support de cours, cours magistral, tour de table, atelier et mise en pratique

Prochaines sessions

  • Aucune session plannifiée pour l'instant

Programme détaillé

  • Journée 1:
    • Rappels des apports en programmation concurrente (JDK 7 et plus)
      • Le package java.util.concurrent
      • Les facilités apportées pour le multi-threading et la programmation parallèle
      • Le Fork and Join
      • Exemple de mise en pratique du pattern Fork and Join
    • Les lambda en Java (JDK 8 et plus)
      • S'approcher de lambda sans Java 8
      • Les lambda expressions
      • Les interfaces fonctionnelles
      • Liste des interfaces fonctionnelles
      • Paramètres d'une lambda expression
      • Cas d'utilisation des lambda expressions
      • Les références de méthode dans les lambda expressions
      • Exemples de mise en pratique
    • Les streams (JDK 8 et plus)
      • Présentation générale des streams
      • Créer des streams
      • Opérations intermédiaires sur les streams
      • Opérations terminales
      • Exemples de mise en pratique
    • L'API DateTime (JDK 8 et plus)
      • Classes importantes de DateTime
      • Utilisation de DateTime
      • Exemples de mise en pratique avec exploitation de l'API DateTime
  • Journée 2:
    • Le système de modules (JDK 9 et plus)
      • Architecture et modularité dans le JDK 9
      • La déclaration des modules (Requires, Exports, Uses, Provides, With, Opens)
      • Les mots réservés
      • Exemples des classes d'applications modularisées
      • Le fichier module-info.java
      • Le graphe de dépendances
      • Le lancement d'une application à partir des modules
      • Le packaging des modules et les JAR
      • L'export d'un package pour l'utiliser ailleurs
      • L'encapsulation forte et l'accessibilité
      • Exemples de mise en pratique
    • JShell (JDK 9 et plus)
      • Introduction à JShell
      • Exécuter et tester du code à la volée
      • Exemples de mise en pratique avec utilisation de l'outil JShell
    • L'API Optional (JDK 9 et plus)
      • Les méthodes (or(), ifPresent(), ifPresentOrElse(), stream())
      • Exemples de mise en pratique avec utilisation de l'API Optional
    • L'API Process (JDK 9 et plus)
      • Gestion des process lancés
      • L'interface ProcessHandle
      • Exemples de mise en pratique avec création d'un outil d'administration des process lancés
  • Journée 3:
    • Autres apports de la JDK 9
      • Améliorations des streams Java 8
      • L'API HTTP 2
      • Nouvelles collections
      • Les Reactive Streams, les streams asynchrones
      • Méthodes privées d'interface
      • L'API CompletableFuture
      • Exemples de mise en pratique avec utilisation des Reactive Streams
    • Apports de la JDK 10
      • Inférence de type de variables locales
      • Améliorations dans les API existantes
    • Apports de la JDK 11
      • Inférences de type pour les lambda expressions
      • Simplification des run de programmes
      • Améliorations dans les classes String, StringBuilder et StringBuffer
      • Améliorations des Predicate Java 8
      • Classes imbriquées et visibilité des attributs
      • Suppression des modules JEE, JavaJX et CORBA
      • Exemples de mise en pratique avec utilisation des fonctionnalités apportées par la JDK 11
    • Apports des JDK 12, 13 et 14
      • Le switch comme instruction
      • Les outils apportés par la JDK 12
      • Exemples de mise en pratique avec utilisation des fonctionnalités apportées par les JDK 12, 13 et 14