Conçue par Douglas MBIANDOU, cette formation vous permettra d’appréhender par la pratique les nouveautés des version 8 et 9 de Java, avec un focus sur les technologies caractéristiques de java 8 (expressions lambdas , Streams, Optional) et la nouvelle approche de la modularité spécifique à java 9 .
Notre + : les notions sont mises en oeuvre dans le contexte d’une application Java SE ou Java EE en couche : présentation + domaine + Service + Dao mettant en oeuvre les fraeworks Spring et Hibernate.
Objectifs pédagogiques
Utiliser le nouveau système de Modules Java 9
Migrer de votre code vers Java 9
Utiliser les expressions lambda
Utiliser les Streams et les ParallelStreams
Utiliser les Streams avec les Expressions Lambdas
Utiliser les opérateurs -> (lambda) et :: (référence de méthode)
Exploiter les possibilités de la programmation fonctionnelle
Connaître la nouvelle API de gestion des dates et du temps
Communiquer avec du code Javascript
Travailler avec le Optional pour limiter NullPointerException
Travaux pratiques (70%)
Des exercices et travaux pratiques permettront de mettre en oeuvre les concepts abordés.
Participants
Concepteurs, développeurs, responsables de projets Java.
Prérequis
Pratique du développement Java, connaissance de Java 5, 6 ou 7
Durée
4 jours
Dates 2018
13-16 février (Paris)
20-23 février (Lyon)
6-9 mars (Abidjan)
27-30 mars (Paris)
10-13 avril (Dakar)
5-8 juin (Paris)
12-15 juin (Lyon)
26-29 juin (Douala)
16-19 oct (Paris)
23-26 oct (Lyon)
20-23 nov (Casa)
Tarifs
1990 HT par personne
Pour les formation ‘intra’ (dans votre entreprise) , nous contacter.
PROGRAMME DETAILLE FORMATION
Synthèse des nouveautés de Java 8 et 9
Encapsulation de packages Java 9 : les Modules
Migration de votre code vers Java 9
Les expressions lambda.
Méthodes par défaut des interfaces
Comprendre les interfaces fonctionnelles
Manipuler des collection avec les streams.
La nouvelle API de gestion des dates et des heures.
La possibilité d’exécuter du code JavaScript avec Java 8 Nashorn.
Introduction Système de Module Java 9
L’importance des Modules
Modularité du JDK 9
Chantier historique : compact1 à 4
Travailler avec des modules
Les services Java 9
Bonnes pratiques (Patterns)
fichier module.info
Migration vers Java 9
Migration sans le système de Modules
Migration vers les Modules
Migrer vos applications Spring / Hibernate
Migrez vos Libraries
Outil : jdeps
Les expressions lambda
Améliorer la concision, lisibilité du code
Classe anonyme imbriquée
L’opérateur Lambda ->
Interface fonctionnelle
Manipuler des collections
API java.util.function.
Mise en oeuvre dans une couche Service et Dao
Les Streams
Nouveau : java.util.Stream, java.util.ParallelStream
Créer un Stream à partir d’une collection Java
Différence entre collection et Stream
Source, fonction intermédiaire, fonction terminale
fonction intermédiaires : filter(), sort(), distinct()
fonctions terminales : collect(), count, foreach()
Mise en oeuvre dans une couche Dao
Les Streams Parralles
Exploiter tous les processeurs de votre machine
Rappel sur le framework Fork/join
Personnaliser le découpage avec Spliterator
Comparaison de performance
recommandation : Benchmark systématique !
Mise en oeuvre dans une couche Service
Le conteneur ‘Optional’
Marre des NullPointerException !
Du code plus propre, plus lisible , plus maintenable
of : Créer un Optional à partir d’un objet existant non null
ofNullable : Créer un Optional à partir d’un objet existant potentiellement null
Récupérer le contenu : get(), map()…
Refactoring de code
Mise en oeuvre dans une couche Dao
Intégration Java / Javascript
Nashorm, le moteur ECMAScript-262 de Java 8.
Appeler une méthode Javascript à partir de Java
La méthode eval() du moteur
Appeler un script Javascript (.js) externe
Utilisation de la ligne de commande jjs.
Appeler du code Java depuis un script JavaScript.
Mise en oeuvre dans une couche Service
Nouvelle API Date et Time
Le problème de GregorianCalendar,
L’alternative JodaTime
La JSR 310.
java.time.Instant et java.time.Duration.
java.time.LocalDate, java.time.LocalTime, java.time.LocalDateTime.
Mise en oeuvre dans une couche Service
Multithread
L’API Concurrent : les Executor
Les différents types d’Executor
Interfaces Runnable, Future, Callable
Expressions Lambda et Multithread
Nouveautés Java 8 : ComposableFuture
Orchestrer vos taches asynchrones !
Pools de threads
Mise en oeuvre dans une couche Service