Image de NordWood Themes

Nouveautés de Java 8 à Java 11

Description de la formation

Java 8 a apporté des améliorations significatives au langage. Vous découvrirez les expressions lambda et exploiterez les possibilités de la programmation fonctionnelle. Vous apprendrez à faire interagir du code JavaScript avec du code Java et découvrirez de nouvelles API.

Java 9, sorti en septembre 2017, apporte des changements significatifs au développement et déploiement d'applications Java avec les modules, qui permettent d'améliorer les performances et la sécurité.

Java 10, sorti en mars 2018, démarre un nouveau cycle de sortie des versions de Java.
Il simplifie également la déclaration des variables par la déduction automatique de type

Java 11, sorti en septembre 2018, est une LTS (Long Term Support) et bouleverse les habitudes par l'aspect commercial lié aux licences Oracle.

Objectifs

Plus concrètement, cette formation sur les nouveautés Java 8 (et plus) vous apportera les connaissances et compétences nécessaires pour :

  • S'intéresser aux principes de la programmation fonctionnelle

  • Maîtriser les expressions lambda et les références de méthodes

  • Mettre en oeuvre les Streams pour manipuler des flux de données

  • Utiliser les méthodes par défaut des interfaces

  • Comprendre la nouvelle API Date&Time (JSR 310)

A qui s'adresse cette formation

Public :

Cette formation Java 8 (et plus) s'adresse aux développeurs et chefs de projets maitrisant les versions antérieures de Java (6 et 7).

 

Prérequis :

La bonne maîtrise de Java 6 ou 7 est indispensable.

Contenu du cours

Interfaces Java 8

Méthodes par défaut
Méthodes statiques
Implémentation d'interfaces Java 8

Travaux pratiques

Mise en œuvre d'interfaces Java 8
 

Expressions Lambda, références de méthodes

Comprendre les principes de la programmation fonctionnelle
Syntaxe des classes internes anonymes
Notion d’interface fonctionnelle
Anatomie d'une Expression Lambda
Simplifier les expressions lambdas avec les références de méthodes
Mise en œuvre des interfaces fonctionnelles : Consumer, Supplier, Predicate, Function

Travaux pratiques

Remplacement de classes internes anonymes par des expressions lambda
Mise en œuvre d’interfaces fonctionnelles de la bibliothèque
Simplification d’expressions lambdas par des références de méthodes

 

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 oeuvre 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

Travaux pratiques

Utilisation de nombreux streams séquentiels sur tableaux et collections
Mise en œuvre de streams parallèles
Comparaison de performances entre streams séquentiels et parallèles

 

Nouvelle API Date et Time (JSR 310) de Java 8

La gestion du temps « classique » et sa lourdeur de manipulation en Java (jour, mois, année, heure, minutes, secondes)
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.

Travaux pratiques

Utilisation de la nouvelle API de gestion des dates et temps pour manipuler un calendrier (recherche de jour selon des critères fins).
Analyse de chaînes de caractères pour conversion en dates
Calcul différentiel sur le temps (heure/minutes/secondes)

 

JavaScript et Nashorn

Présentation de Nashorn, le moteur d'exécution de code JavaScript
Exécution de code Javascript avec jjs
Exécution de code Javascript depuis Java
Exécution de code Java depuis JavaScript

Travaux pratiques

Démonstration de l'exécution de code JavaScript
 

Améliorations des API et autres nouveautés Java 8

Les nouveautés du client riche JavaFX
Les évolutions de l’API JDBC
Déploiement d’applications avec les profils compacts

Travaux pratiques

Analyse d'une IHM JavaFX en tout Java
Analyse d'une IHM JavaFX avec vues en FXML

 

Nouveautés de Java 9

Les modules

Notion de module
Format du descripteur de module
Utilisation des modules
Gestion des dépendances entre modules
Intérêt du module-path
Notions de modules anonymes et modules automatiques
Mise en œuvre de services
Modularité du JDK 9
Nouvelle organisation de la documentation des API Java
Problématique des migrations

Travaux pratiques

Découpage d'une application en trois modules
Mise en œuvre de modules anonymes et automatiques
Mise en œuvre de services

Fichiers Jar

Fichiers jar modulaires
Fichiers jar multi-versions
Création d'archives au format Jmod
Déploiement d'applications Java
Rôle du linker Java Jlink

Travaux pratiques

Création de fichiers jar modulaires pour servir de librairies
Création de fichiers jar multi-versions pour servir de librairies
Création d'une image exécutable avec Jlink

Autres nouveautés

Exécution de scripts Java avec JShell
Mise à jour de l'API Process
Méthodes privées dans les interfaces
Méthodes de fabrique pour les collections
Nouvelles méthodes dans l'API Stream
Amélioration de l'instruction try-with-resource
Annotation @SafeVarargs
La nouvelle API de StackWalking
L'API VarHandle
Programmation réactive avec l'API Flow

Travaux pratiques

Exécution de scripts JShell
Contrôle par une application Java de l'exécution de processus
Échange de messages entre producteur et consommateur via l'API Flow

 

Nouveautés de Java 10

Nouvelle gestion des versions de Java
Déduction du type des variables locales
Nouvelles méthodes de fabrique pour les collections
Nouvelles méthodes dans la classe Collectors
Nouvelle méthode dans la classe Optional
Nouvelles méthodes dans la classe Objects

Travaux pratiques

Mise en œuvre du mot-clé var dans une application
 

Nouveautés de Java 11

Commercialisation du JDK 11 par Oracle
Conséquences du Long Term Support d'Oracle
JDK11 d'Oracle vs Open JDK 11
Utilisation de var dans les lambdas
Standardisation du nouveau client HTTP
Exécution directe d'un fichier source
Suppression des modules JavaFX, Java EE et CORBA

Travaux pratiques

Utilisation de var dans quelques expressions lambdas
Mise en œuvre d'un client http
Exécution directe d'un fichier source

TechnoWide

3 rue du Golf

Parc Innolin

CS 60073

33701 MERIGNAC CEDEX

Bordeaux

  • LinkedIn Social Icon