SlideShare une entreprise Scribd logo
1  sur  218
Télécharger pour lire hors ligne
29/10/2015
1
Formation Java8
Formation Les nouveautés Java 8 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
2
Plan
• Présentation de votre formateur
• Qu’est ce que c’est Java8 ?
• Présentation de votre formation
• Le plan de la formation
Formation Les nouveautés Java 8 alphorm.com™©
• Publics concernés
• Prérequis de la formation
29/10/2015
3
Présentation du formateur
• Fabien Brissonneau
• Email : fabien.brissonneau@gmail.com
• Consultant Concepteur et Formateur
• Missions d’architecture, de conception , de réalisation logicielles
• Fondateur de eiXa6
Formation Les nouveautés Java 8 alphorm.com™©
• Actuellement en mission sur un projet de gestion
• Mes références :
Mon profil Viadeo : http://fr.viadeo.com/fr/profile/fabien.brissonneau
Mon profil LinkedIn : http://fr.linkedin.com/pub/fabien-brissonneau/65/902/92a/
Mon profil Alphorm : http://www.alphorm.com/formateur/fabien-brissonneau
29/10/2015
4
Mes formations sur alphorm
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
5
Qu’est-ce que Java8?
• La nouvelle version de Java8 sortie en 2014
• Une révolution dans la syntaxe
• L’apparition de nouveau concepts
• Une nouvelle façon de programmer en Java ?
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
6
Plan de la formation
• La nouvelle syntaxe
• Les interfaces fonctionnelles
• Le langage
• Les streams
• Les collections
• Les outils
• JavaFX
Formation Les nouveautés Java 8 alphorm.com™©
• Les dates et l’internationalisation
• Concurrence et réseau
29/10/2015
7
Publics concernés
• Cette formation s’adresse à des développeurs
• Connaître Java est nécessaire, ne pas être dérouté par sa syntaxe
• Nous ne reviendrons pas sur les concepts du langage
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
8
Prérequis de la formation
• Savoir lire du code Java
• Avoir des rudiments sur les interfaces graphiques
• Et … du courage comme toujours !
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
9
Les outils nécessaires
• Le SDK Java8
• L’outil Netbeans est utilisé en interface de développement
• La présentation sera faite sous Windows 8
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
10
Les autres formations dév sur Alphorm
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
11
Are you ready ? ☺
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
12
Expressions lambdas
La nouvelle syntaxe
Formation Les nouveautés Java 8 alphorm.com™©
Expressions lambdas
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
13
Plan
• La syntaxe des expressions lambdas
• Usage des expressions lambdas
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
14
La syntaxe des expressions lambdas
• La liste des paramètres
Le type est optionnel
Les parenthèses peuvent être omises
• La ->
• Le corps de la fonction
Formation Les nouveautés Java 8 alphorm.com™©
• Le corps de la fonction
Sans {} s’il y a une seule expression
Avec {} sinon
29/10/2015
15
Usage des expressions lambdas
• Le besoin d’expressions courtes
• L’expression de prédicat
Une fonction courte qui retourne true ou false
• La fourniture d’un consommateur
Formation Les nouveautés Java 8 alphorm.com™©
Une fonction qui accept une donnée
29/10/2015
16
Ce qu’on a couvert
• La syntaxe des expressions lambdas
• Usage des expressions lambdas
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
17
EL et classes
La nouvelle syntaxe
Formation Les nouveautés Java 8 alphorm.com™©
EL et classes
anonymes
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
18
Plan
• Créer une fonction de rappel
• Créer une classe anonyme
• Utiliser une expression lambda
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
19
Créer une fonction de rappel
• En Java, on ne peut pas créer une fonction en dehors d’une classe
• Parfois, nous avons besoin du seul traitement
• Il faut créer alors une classe pour profiter de ses seules fonctions
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
20
Créer une classe anomyne
• Une classe anonyme est une classe interne
• Nous nous débarrassons de l’obligation de déclarer une classe
• La classe anonyme a un accès privilégié à la classe englobante
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
21
Utiliser une expression lambda
• La plus courte des expressions
• Pas de classe à déclarer
• Focalisée sur le traitement à mettre en place
• Correspond à une interface à une seule méthode
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
22
Ce qu’on a couvert
• Créer une fonction de rappel
• Créer une classe anonyme
• Utiliser une expression lambda
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
23
Les limites des
La nouvelle syntaxe
Formation Les nouveautés Java 8 alphorm.com™©
Les limites des
expressions lambdas
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
24
Plan
• Les variables locales
• Les captures
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
25
Les variables locales
• Les variables d’une expression lambda n’ont pas d’espace propre
• Les collisions sont donc fréquentes
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
26
Les captures
• Une expression lambda accède
• Aux variables locales
• Aux variables attributs de la classe
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
27
Ce qu’on a couvert
• Les variables locales
• Les captures
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
28
Les méthodes par
La nouvelle syntaxe
Formation Les nouveautés Java 8 alphorm.com™©
Les méthodes par
défaut des interfaces
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
29
Plan
• Les problèmes
• Les méthodes par défaut
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
30
Les problèmes
• Une interface peut déclarer plusieurs méthodes
• Une classe qui implémente une interface doit fournir un corps de
méthode pour chaque méthode de l’interface
• Une interface propose parfois des méthodes qui n’intéressent pas la
classe fille
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
31
Les méthodes par défaut
• Une implémentation fournit dans l’interface
• Pas obligatoire de la redéfinir
• Devrait correspondre à un traitement vrai pour toutes les
implémentations de cette interface
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
32
Ce qu’on a couvert
• Les problèmes
• Les méthodes par défaut
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
33
Les références de
La nouvelle syntaxe
Formation Les nouveautés Java 8 alphorm.com™©
Les références de
méthodes
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
34
Plan
• Le problème
• La solution nouvelle
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
35
Le problème
• En Java, les adresses de variables ou de fonctions ne sont pas
manipulables
• Avant la version 8, les méthodes ne sont donc pas référençables
Contrairement aux objets, instanciés
• Pour déclencher une méthode particulière, il faut référencer un objet
Formation Les nouveautés Java 8 alphorm.com™©
• Pour déclencher une méthode particulière, il faut référencer un objet
• D’où l’obligation de fournir un objet pour déclencher dessus une
méthode
29/10/2015
36
La solution nouvelle
• Il est possible de référencer une méthode
• Conforme à une signature particulière
• Peut être une méthode d’instance ou une méthode statique
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
37
Ce qu’on a couvert
• Le problème
• La solution nouvelle
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
38
Les SAM
Les interfaces fonctionnelles
Formation Les nouveautés Java 8 alphorm.com™©
Les SAM
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
39
Plan
• Définition
• Exemples de SAM
• Les SAM et les expressions lambdas
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
40
Définition
• Single Abstract Method
• Une interface avec une seule méthode déclarée
• Une interface qui existe POUR cette méthode
• Lorsqu’on l’utilise, on cherche essentiellement à traiter la méthode
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
41
Exemple de SAM
• Les interfaces à une seule méthode existent en nombre en Java
• Pour l’ihm
ActionListener : gestion du clic bouton
• Pour le tri
Formation Les nouveautés Java 8 alphorm.com™©
Comparable : fourniture d’un ordre
• …
29/10/2015
42
Les SAM et les expressions lambdas
• Une SAM peut être avantageusement remplacée
• Pas besoin de créer une classe
• L’expression lambda se substitue à la méthode
• Doit être conforme à la signature
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
43
Ce qu’on a couvert
• Définition
• Exemples de SAM
• Les SAM et les expressions lambdas
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
44
@FunctionalInterface
Les interfaces fonctionnelles
Formation Les nouveautés Java 8 alphorm.com™©
@FunctionalInterface
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
45
Plan
• Définition
• Cas d’erreur
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
46
Définition
• Une interface fonctionnelle
Propose une seule méthode
Existe pour cette méthode
Peut être utilisée via une lambda expression
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
47
Usage des interfaces fonctionnelles
• Définit une signature pour la méthode qu’elle propose
Les types et nombres de paramètres de la méthode seront respectés
• Définit un type pour des passages de paramètres
Un traitement peut imposer comme argument un objet conforme
• Définit un type pour des références de méthodes
Formation Les nouveautés Java 8 alphorm.com™©
• Définit un type pour des références de méthodes
Il est possible de créer des variables références de méthodes
29/10/2015
48
Cas d’erreur
• Une interface fonctionnelle
• Possède une seule méthode et non plusieurs
• Impose les types de paramètres de sa fonction
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
49
Ce qu’on a couvert
• Définition
• Cas d’erreur
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
50
Function
Les interfaces fonctionnelles
Formation Les nouveautés Java 8 alphorm.com™©
Function
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
51
Plan
• L’interface Function<T,R>
• L’interface UnaryOperator<T>
• L’interface BiFunction<T,U,R>
• L’interface BinaryOperator<T>
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
52
L’interface Function<T,R>
• Une interface fonctionnelle
• Qui accepte un paramètre et retourne une valeur
• La méthode fonctionnelle est apply telle que : R r = apply(T t)
• Autres méthodes implémentées par défaut :
Formation Les nouveautés Java 8 alphorm.com™©
andThen(after) : applique la fonction courante puis celle en argument
compose(before) : applique d’abord l’argument puis la courante
identity() : retourne l’argument
29/10/2015
53
L’interface UnaryOperator<T>
• Sous interface de Function<T,R>
• La méthode apply retourne le même type que celui du paramètre
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
54
L’interface BiFunction<T,U,R>
• Une interface fonctionnelle
• Qui accepte deux paramètres et retourne une valeur
• La méthode fonctionnelle est apply telle que : R r = apply(T t, U u)
• Autres méthodes implémentées par défaut :
Formation Les nouveautés Java 8 alphorm.com™©
andThen(after) : applique la fonction courante puis celle en argument
29/10/2015
55
BinaryOperator<T>
• Sous interface de BiFunction<T,U,R>
• Les types T,U,R sont les mêmes
• Le type du retour est donc le même que ceux des paramètres
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
56
Ce qu’on a couvert
• L’interface Function<T,R>
• L’interface UnaryOperator<T>
• L’interface BiFunction<T,U,R>
• L’interface BinaryOperator<T>
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
57
Predicate
Les interfaces fonctionnelles
Formation Les nouveautés Java 8 alphorm.com™©
Predicate
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
58
Plan
• L’interface Predicate<T>
• L’interface BiPredicate<T,U>
• L’interface DoublePredicate
• L’interface IntPredicate
Formation Les nouveautés Java 8 alphorm.com™©
• L’interface LongPredicate
29/10/2015
59
L’interface Predicate<T>
• Représente une fonction qui prend un T
• Et retourne un booléen
• La méthode fonctionnelle est test telle que boolean b = test(T t)
• Autres méthodes avec implémentations :
Formation Les nouveautés Java 8 alphorm.com™©
and( Predicate p) : compose avec un AND court-circuit
negate() : retourne la négation logique
or(Predicate p) : compose avec un OR coucrt-circuit
isEqual(Object o) : test l’égalité
29/10/2015
60
L’interface BiPredicate<T,U>
• Interface fonctionnelle Predicate pour 2 paramètres
• La méthode fonctionnelle est test telle que boolean b = test(T t, U u)
• Autres méthodes implémentées :
and( BiPredicate) : compose AND
Formation Les nouveautés Java 8 alphorm.com™©
negate() : la négation logique
or(BiPredicate) : compose OR
29/10/2015
61
L’interface DoublePredicate
• Interface fonctionnelle
• La méthode fonctionnelle est test
• Mais le paramètre est forcément un double
• Mêmes méthodes implémentées par défaut que Predicate
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
62
L’interface IntPredicate
• Interface fonctionnelle
• La méthode fonctionnelle est test
• Mais le paramètre est forcément un int
• Mêmes méthodes implémentées par défaut que Predicate
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
63
L’interface LongPredicate
• Interface fonctionnelle
• La méthode fonctionnelle est test
• Mais le paramètre est forcément un long
• Mêmes méthodes implémentées par défaut que Predicate
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
64
Ce qu’on a couvert
• L’interface Predicate<T>
• L’interface BiPredicate<T,U>
• L’interface DoublePredicate
• L’interface IntPredicate
Formation Les nouveautés Java 8 alphorm.com™©
• L’interface LongPredicate
29/10/2015
65
Supplier
Les interfaces fonctionnelles
Formation Les nouveautés Java 8 alphorm.com™©
Supplier
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
66
Plan
• L’interface Supplier<T>
• L’interface BooleanSupplier
• L’interface DoubleSupplier
• L’interface IntSupplier
Formation Les nouveautés Java 8 alphorm.com™©
• L’interface LongSupplier
29/10/2015
67
L’interface Supplier<T>
• Interface fonctionnelle typée par le résultat attendu
• La méthode fonctionnelle est get telle que T resultat = get()
• Aucune méthode supplémentaire
• Pas d’impératif sur l’unicité des productions
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
68
L’interface BooleanSupplier
• Interface fonctionnelle représentant la production de booléens
• La méthode fonctionnelle est getAsBoolean()
Telle que : boolean b = getAsBoolean()
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
69
L’interface DoubleSupplier
• Interface fonctionnelle représentant la production de double
• La méthode fonctionnelle est getAsDouble()
Telle que : double res = getAsDouble()
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
70
L’interface IntSupplier
• Interface fonctionnelle représentant la production de int
• La méthode fonctionnelle est getAsInt()
Telle que : int res = getAsInt ()
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
71
L’interface LongSupplier
• Interface fonctionnelle représentant la production de long
• La méthode fonctionnelle est getAsLong()
Telle que : long res = getAsLong()
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
72
Ce qu’on a couvert
• L’interface Supplier<T>
• L’interface BooleanSupplier
• L’interface DoubleSupplier
• L’interface IntSupplier
Formation Les nouveautés Java 8 alphorm.com™©
• L’interface LongSupplier
29/10/2015
73
Consumer
Les interfaces fonctionnelles
Formation Les nouveautés Java 8 alphorm.com™©
Consumer
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
74
Plan
• L’interface Consumer<T>
• L’interface DoubleConsumer
• L’interface IntConsumer
• L’interface LongConsumer
Formation Les nouveautés Java 8 alphorm.com™©
• L’interface ObjDoubleConsumer<T>
• L’interface ObjIntConsumer<T>
• L’interface ObjLongConsumer<T>
29/10/2015
75
L’interface Consumer<T>
• Interface fonctionnelle consommant des objets T
• La méthode fonctionnelle est accept telle que accept(T t)
• Travaille par effet de bords
• Autre méthode implémentée par défaut
Formation Les nouveautés Java 8 alphorm.com™©
andThen(Consumer ) : compose la production en chaînant l’autre
29/10/2015
76
L’interface DoubleConsumer
• Interface spécialisée pour les double
• La méthode fonctionnelle accept(double) ne prend que double
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
77
L’interface IntConsumer
• Interface spécialisée pour les int
• La méthode fonctionnelle accept(int) ne prend que int
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
78
L’interface LongConsumer
• Interface spécialisée pour les long
• La méthode fonctionnelle accept(long) ne prend que long
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
79
L’interface ObjDoubleConsumer<T>
• Interface fonctionnelle acceptant 2 paramètres
• La méthode accept est la méthode fonctionnelle
• Avec un paramètre objet T et un double
• Est telle que accept(T t, double d)
Formation Les nouveautés Java 8 alphorm.com™©
• Pas de retour
• Travaille par effets de bords
29/10/2015
80
L’interface ObjIntConsumer<T>
• Interface fonctionnelle acceptant 2 paramètres
• La méthode accept est la méthode fonctionnelle
• Avec un paramètre objet T et un int
• Est telle que accept(T t, int d)
Formation Les nouveautés Java 8 alphorm.com™©
• Pas de retour
• Travaille par effets de bords
29/10/2015
81
L’interface ObjLongConsumer<T>
• Interface fonctionnelle acceptant 2 paramètres
• La méthode accept est la méthode fonctionnelle
• Avec un paramètre objet T et un long
• Est telle que accept(T t, long d)
Formation Les nouveautés Java 8 alphorm.com™©
• Pas de retour
• Travaille par effets de bords
29/10/2015
82
Ce qu’on a couvert
• L’interface Consumer<T>
• L’interface DoubleConsumer
• L’interface IntConsumer
• L’interface LongConsumer
Formation Les nouveautés Java 8 alphorm.com™©
• L’interface ObjDoubleConsumer<T>
• L’interface ObjIntConsumer<T>
• L’interface ObjLongConsumer<T>
29/10/2015
83
Les annotations
Le langage
Formation Les nouveautés Java 8 alphorm.com™©
Les annotations
répétables
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
84
Plan
• La base
• Les annotations classiques
• Les annotations répétables
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
85
La base
• Une annotation est déclarée avec @interface
• Une annotation possède des propriétés
• Les propriétés peuvent posséder des valeurs par défaut
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
86
Les annotations classiques
• Une annotation s’applique lors de la déclaration d’une classe, champ,
méthode, …
• Une annotation peut aussi s’appliquer lors de l’utilisation du type
• Une seule annotation est d’un type donné par usage
• Les informations véhiculées par l’annotation sont disponibles après la
Formation Les nouveautés Java 8 alphorm.com™©
• Les informations véhiculées par l’annotation sont disponibles après la
génération javadoc aussi
• Une annotation peut se voir restreindre à certains usages, et peut être
disponible ou pas runtime
29/10/2015
87
Les annotations répétables
• Une annotation répétable peut être utilisée plusieurs fois sur le même
élément
• Pour accéder à cette capacité :
Annoter l’annotation avec @Repeatable
Déclarer une annotation pour « contenir » l’annotation répétable
Formation Les nouveautés Java 8 alphorm.com™©
Déclarer une annotation pour « contenir » l’annotation répétable
29/10/2015
88
Ce qu’on a couvert
• La base
• Les annotations classiques
• Les annotations répétables
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
89
La réflexion sur
Le langage
Formation Les nouveautés Java 8 alphorm.com™©
La réflexion sur
paramètres
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
90
Plan
• La réflexion en Java
• Les limites de la réflexion
• La réflexion sur les paramètres
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
91
La réflexion en Java
• La classe est le descripteur des objets
• Les objets connaissent leur classe
• Trouver via un objet les caractéristiques de sa classe
• Concerne les membres en particuliers
Formation Les nouveautés Java 8 alphorm.com™©
• Permet :
D’invoquer une méthode sans écrire directement l’appel
De découvrir les champs d’un objet
…
29/10/2015
92
Les limites de la reflexion
• Eventuel problème de performance
• La perte de contrôle de type lors de la compilation
• Si on accède aux membres par leurs noms, problème de refactoring
• Jusqu’en Java 8, impossible de trouver les noms des paramètres
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
93
La réflexion sur les paramètres
• En Java8, il est possible de récupérer les noms
• Auparavant, il fallait contourner
Utiliser les annotations
• Ne pas oublier de compiler avec l’otpion javac : -parameters
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
94
Ce qu’on a couvert
• La réflexion en Java
• Les limites de la réflexion
• La réflexion sur les paramètres
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
95
Les optional
Le langage
Formation Les nouveautés Java 8 alphorm.com™©
Les optional
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
96
Plan
• Le problème
• La classe Optional<T>
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
97
Le problème
• En Java, seules les références peuvent être nulles
• Les types primitifs ne supportent pas la valeur nulle
• Comment exprimer l’absence de valeur ?
• Eviter de déterminer une valeur remarquable
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
98
La classe Optional<T>
• Encapsule une valeur de type T
• Cette valeur peut être absente
• Méthodes :
Retourne la valeur avec get()
Formation Les nouveautés Java 8 alphorm.com™©
Teste la présence avec isPresent()
Construit avec of(T), ofNullable(T)
Récupère la valeur avec : orElse(), orElseGet(), orElseThrow()…
29/10/2015
99
Ce qu’on a couvert
• Le problème
• La classe Optional<T>
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
100
Les classes java.util.stream
Les streams
Formation Les nouveautés Java 8 alphorm.com™©
Les classes java.util.stream
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
101
Plan
• L’interface BaseStream<>
• L’interface Stream<T>
• Les interfaces spécialisées
• Les interfaces Stream.Builder
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
102
L’interface BaseStream<>
• Interface de base de toutes les interfaces Stream
• Les streams sont des séquences d’éléments qui supportent des
opérations agrégées
• Les méthodes :
Fermeture : close()
Formation Les nouveautés Java 8 alphorm.com™©
Fermeture : close()
Parallélisme : parallel(), isParallel()
En séquence : sequential()
Itération : iterator(), spliterator()
Libérer la contrainte d’ordre : unordered()
29/10/2015
103
L’interface Stream<T>
• Sous-interface de BaseStream
• Manipule des objets Java
• Obtenu à partir d’une source (tableau, collection, fonction, canal IO…)
• Permet de construire un pipeline, la source n’est consommée que si
nécessaire et lors de l’application d’une opération terminale
Formation Les nouveautés Java 8 alphorm.com™©
nécessaire et lors de l’application d’une opération terminale
• Les opérations attendent de interfaces fonctionnelles, non nulles, non
interférentes et en général sans état
• Un Stream est opéré une seule fois.
• Exécution séquentielle ou parallèle
29/10/2015
104
Les interfaces spécialisées
• DoubleStream, IntStream, LongStream
• Ce sont des spécialisations de Stream pour les primitives
• Des méthodes permettent de récupérer des objets au lieu des primitives
• Cohérent avec les Double/Int/LongSupplier-Consumer…
Formation Les nouveautés Java 8 alphorm.com™©
• Méthodes par exemple du DoubleStream :
map(DoubleUnaryOperator),
mapToInt(DoubleToIntFunction),
mapToLong(DoubleToLongFunction),
mapToObj(DoubleFunction)
29/10/2015
105
Les interfaces Stream.Builder
• Existent aussi sur DoubleStream, IntStream et LongStream
• Permet de créer un Stream et de le modifier avant d’appliquer les
opérations
• Le Stream sera généré lors de l’appel de build()
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
106
Ce qu’on a couvert
• L’interface BaseStream<>
• L’interface Stream<T>
• Les interfaces spécialisées
• Les interfaces Stream.Builder
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
107
Les opérations sur Streams
Les streams
Formation Les nouveautés Java 8 alphorm.com™©
Les opérations sur Streams
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
108
Plan
• Méthodes intermédiaires
• Méthodes terminales
• La classe Collectors
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
109
Méthodes intermédiaires
• Méthode distinct : retourne un Stream dont les éléments sont distincts
• Méthode filter (Predicate) : … dont les éléments correspondent au
prédicat
• Méthode flatMap (Function) : … dont les éléments sont remplacés par
les éléments du Stream fournit par la fonction
Formation Les nouveautés Java 8 alphorm.com™©
• Méthode limit (long) : … limité en nombre d’éléments
29/10/2015
110
Méthodes intermédiaires
• Méthode map(Function) : … dont les éléments sont l’application de la
fonction à chaque élément
• Méthode peek(Consumer) : … dont les éléments sont les mêmes, mais
la fonction est appliquée à chaque élément
• Méthode skip(long) : … dont les éléments sont ceux qui restent
lorsqu’on a éliminé les premiers
Formation Les nouveautés Java 8 alphorm.com™©
lorsqu’on a éliminé les premiers
• Méthode sorted() : … dont les éléments sont triés selon l’ordre naturel
29/10/2015
111
Méthodes terminales
• Méthode allMatch (Predicate) : retourne vrai si chaque élément vérifie le
prédicat
• Méthode anyMatch(Precicate) : retourne vrai si l’un des éléments vérifie
le prédicat
• Méthode findAny() : retourne un Optional qui représente un des
éléments du Stream
Formation Les nouveautés Java 8 alphorm.com™©
éléments du Stream
• Méthode findFirst() : retourne un Optional qui représente le premier
élément du Stream
29/10/2015
112
Méthodes terminales
• Méthode noneMatch(Predicate) : retourne vrai si aucun élément ne
vérifie le prédicat
• Méthode forEach(Consumer) : applique la fonction sur chacun des
éléments
• Méthode reduce(BinaryOperator) : réduit les éléments en les
accumulant grâce à la fonction fournie, retourne un Optional
Formation Les nouveautés Java 8 alphorm.com™©
accumulant grâce à la fonction fournie, retourne un Optional
29/10/2015
113
La classe Collectors
• Une classe de service dans java.util.stream
• Fournit des réductions
Formation Les nouveautés Java 8 alphorm.com™©
• Méthodes : averaging(), counting(), groupingBy(), joining(),
partitioningBy(), summing(), toMap(), toSet()…
29/10/2015
114
Ce qu’on a couvert
• Méthodes intermédiaires
• Méthodes terminales
• La classe Collectors
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
115
Les Streams parallèles
Les streams
Formation Les nouveautés Java 8 alphorm.com™©
Les Streams parallèles
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
116
Plan
• Obtention de Streams parallèles
• Les effets du parallèlisme
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
117
Obtention de Streams parallèles
• Les Streams peuvent être séquentiels ou parallèles
• Les Streams parallèles peuvent être traités en parallèles par plusieurs
threads
• La plupart des méthodes produisent par défaut des Streams séquentiels
• Pour créer un Stream parallèle à partir d’une collection, utiliser la
Formation Les nouveautés Java 8 alphorm.com™©
• Pour créer un Stream parallèle à partir d’une collection, utiliser la
méthode parallelStream()
• Pour convertir un Stream séquentiel en parallèle, utiliser parallel()
• Pour convertir un Stream parallèle en séquentiel, utiliser sequential()
29/10/2015
118
Les effets du parallèlisme
• Paralléliser doit être plus rapide, efficace
• Mais cette efficacité supposée peut être réduite : par les contraintes
d’ordonnancement du Stream, par l’ordre des opérations…
• Des accès concurrents peuvent produire des résultats malheureux
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
119
Ce qu’on a couvert
• Obtention de Streams parallèles
• Les effets du parallèlisme
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
120
Les classes de dates
Les dates
Formation Les nouveautés Java 8 alphorm.com™©
Les classes de dates
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
121
Plan
• Les objectifs de l’API Date
• Les classes LocalDate et LocalTime
• Les classes de zones
• Les classes Period et Duration
Formation Les nouveautés Java 8 alphorm.com™©
• Les chronologies
29/10/2015
122
Les objectifs de l’API Date
• Un nouveau package apparaît : java.time
• Les classes sont « immutable value », donc pas de problèmes avec le
multi threading
• Les classes représentent correctement le domaine, donc pas de
confusion
Formation Les nouveautés Java 8 alphorm.com™©
La classe java.util.Date ne possédait pas de zone
• Des chronologies différentes de ISO-8601 sont possibles
29/10/2015
123
Les classes LocalDate et LocalTime
• Ce sont des classes qui représentent date et heure sur le poste courant
• Il existe aussi LocalDateTime
• Le contexte de zone n’existe pas
• Méthodes de création : now, of, from, parse
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
124
Les classes LocalDate et LocalTime
• La classe la « modification » des données se fait avec with
• Les « ajusteurs », certains standards et sinon à écrire soi-même
Formation Les nouveautés Java 8 alphorm.com™©
• Possibilités de tronquer les infos
29/10/2015
125
Les classes de zones
• Une zone peut être représentée par une chaîne de caractères
• La classe ZoneId sert à garder cette information
Formation Les nouveautés Java 8 alphorm.com™©
• ZonedDateTime est une date/heure avec les informations de zone
• OffsetDateTime est une date/heure avec l’offset (de zone UTC)
• OffsetTime est une heure avec l’offset
29/10/2015
126
Les classes Period et Duration
• La classe Period représente une durée en jour-mois-année et non un
point dans le temps
• La classe Duration représente des durées en heures, etc plus précis que
Formation Les nouveautés Java 8 alphorm.com™©
• La classe Duration représente des durées en heures, etc plus précis que
Period
29/10/2015
127
Les chronologies
• Un package java.time.chrono
• Une interface Chronology, représentant un système calendaire
• Des classes implémentant cette interface : IsoChronology,
JapaneseChronology,…
• Ce sont des factories pour des ChronoLocalDate (interface)
Formation Les nouveautés Java 8 alphorm.com™©
• Ce sont des factories pour des ChronoLocalDate (interface)
Méthodes dateNow(), dateNow(..), date(…)
• Classes implémentant ChronoLocalDate :
LocalDate, JapaneseDate,…
29/10/2015
128
Ce qu’on a couvert
• Les objectifs de l’API Date
• Les classes LocalDate et LocalTime
• Les classes de zones
• Les classes Period et Duration
Formation Les nouveautés Java 8 alphorm.com™©
• Les chronologies
29/10/2015
129
La gestion du temps
Les dates
Formation Les nouveautés Java 8 alphorm.com™©
La gestion du temps
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
130
Plan
• La gestion du temps local
• La gestion du temps zoné
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
131
La gestion du temps local
• La classe LocalDate
Les constantes MAX et MIN
• Les méthodes
Création de LocalDateTime : atTime, …
Getters : getDayOfMonth()…
Formation Les nouveautés Java 8 alphorm.com™©
Getters : getDayOfMonth()…
Informations sur le mois, l’année …
Date maintenant
Modifications : minus, plus, withXXX
29/10/2015
132
La gestion du temps zoné
• La classe ZonedDateTime
• Les créateurs of, now, …
• Les modificateurs plus, minus, with, …
• Temps restant : until
Formation Les nouveautés Java 8 alphorm.com™©
• Travail sur offset : getOffset()
29/10/2015
133
Ce qu’on a couvert
• La gestion du temps local
• La gestion du temps zoné
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
134
Le format date et heure
Les dates
Formation Les nouveautés Java 8 alphorm.com™©
Le format date et heure
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
135
Plan
• Le package java.time.format
• La classe DateTimeFormatter
• La classe DateTimeFormatterBuilder
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
136
Le package java.time.format
• Fournit des classes pour afficher et parser des dates
• La classe DateTimeFormatter est suffisante pour la plupart des cas
• Pour les situations complexes, on utilisera DateTimeFormatterBuilder
• Les classes du package ne supportent pas des arguments null
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
137
La classe DateTimeFormatter
• Cette classe proposent de formatter des dates en chaînes de caractères
ou de lire une chaîne en date
• Utilise des constantes prédéfinies
• Utilise des motifs prédéfinis
• Utilise des styles prédéfinis
Formation Les nouveautés Java 8 alphorm.com™©
• Utilise des styles prédéfinis
29/10/2015
138
La classe DateTimeFormatterBuilder
• Le builder de base des DateTimeFormatter
• Il permet de faire apparaître les éléments suivants :
Valeur, Fraction, Text
OffsetId/Offset, ZoneId, ZoneText
ChronologyId, ChronologyText
Formation Les nouveautés Java 8 alphorm.com™©
ChronologyId, ChronologyText
Literal
Nested et Optional
• Chaque élément peut être arrangé avec des espaces/caractères avant et
après
29/10/2015
139
Ce qu’on a couvert
• Le package java.time.format
• La classe DateTimeFormatter
• La classe DateTimeFormatterBuilder
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
140
Les chronologies
Les dates
Formation Les nouveautés Java 8 alphorm.com™©
Les chronologies
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
141
Plan
• Le package java.time.chrono
• Manipuler les chronologies
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
142
Le package java.time.chrono
• Décrit les classes de chronologies
• L’interface Chronology : représente un système calendaire
• Il est possible d’ajouter de nouveaux calendriers en créant une
implémentation Chronology, ChronoLocalDate et Era.
• Chronology fonctionne comme une factory
Formation Les nouveautés Java 8 alphorm.com™©
• Chronology fonctionne comme une factory
29/10/2015
143
Manipuler les chronologies
• Trouver les chronologies disponibles
• Créer une date : dateNow, date, dateYearDay…
• Manipuler des ChronoLocalDate et des ChronoPeriod
• Obtenir des ChronoZonedDateTime
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
144
Ce qu’on a couvert
• Le package java.time.chrono
• Manipuler les chronologies
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
145
L’internationalisation
Les dates
Formation Les nouveautés Java 8 alphorm.com™©
L’internationalisation
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
146
Plan
• Les dates selon les chronologies
• Les possibilités de DateTimeFormatter
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
147
Les dates selon les chronologies
• Chaque chronologie a sa propre représentation
• Un style de date et d’heure
FormatStyle (FULL, LONG, MEDIUM, SHORT)
• Un style décimal
Formation Les nouveautés Java 8 alphorm.com™©
DecimalStyle (STANDARD)
• Méthode of(Locale)
• …
29/10/2015
148
Les possibilités de DateTimeFormatter
• Méthodes ofLocalizedDate, Time
• Des formatters prédéfinis : BASIC_ISO_DATE, …
• Des méthodes de construction : ofPattern(…)
« yyyy MM dd »
Formation Les nouveautés Java 8 alphorm.com™©
Format à découvrir dans la documentation
29/10/2015
149
Ce qu’on a couvert
• Les dates selon les chronologies
• Les possibilités de DateTimeFormatter
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
150
Package java.util.concurrent
La concurrence
Formation Les nouveautés Java 8 alphorm.com™©
Package java.util.concurrent
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
151
Plan
• Les nouvelles classes et interfaces
• La classe ConcurrentHashMap
• Le package java.util.concurrent.atomic
• La classe ForkJoinPool
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
152
Les nouvelles classes et interfaces
• CompletableFuture.AsynchronousCompletionTask : marque les tâches
crées par les méthodes async
• CompletionStage<T> :
• CompletableFuture<T> : une Future qui peut être terminée
• ConcurrentHashMap.KeySetView<T> : une vue de la map en set
Formation Les nouveautés Java 8 alphorm.com™©
• ConcurrentHashMap.KeySetView<T> : une vue de la map en set
• CountedCompleter<T> : une ForkJoinTask avec une action de
terminaison lors de la levée d’un trigger
• CompletionException : exception levée lors de l’accomplissement d’une
tâche
29/10/2015
153
La classe ConcurrentHashMap
• Nouvelles méthodes ajoutées
• Dues à la gestion de Streams et l’apparition des lambdas
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
154
Le package java.util.concurrent.atomic
• La classe DoubleAccumulator : maintenir une variable double
• La classe DoubleAdder : maintenir une somme initialement à 0
• La classe LongAccumulator
• La classe LongAdder
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
155
La classe ForkJoinPool
• Un ajout d’une méthode commonPool()
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
156
Ce qu’on a couvert
• Les nouvelles classes et interfaces
• La classe ConcurrentHashMap
• Le package java.util.concurrent.atomic
• La classe ForkJoinPool
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
157
La classe StampedLock
La concurrence
Formation Les nouveautés Java 8 alphorm.com™©
La classe StampedLock
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
158
Plan
• La classe StampedLock
• Usages de StampedLock
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
159
La classe StampedLock
• Dans le package java.util.concurrent.locks
• Un verrou fonctionnant en 3 modes
Mode écriture : bloque sur un accès exclusif. Retourne un « stamp »
Mode lecture : bloque sur un accès non exclusif
Mode lecture optimiste : retourne un « stamp » non null quand le verrou
Formation Les nouveautés Java 8 alphorm.com™©
Mode lecture optimiste : retourne un « stamp » non null quand le verrou
n’est pas en accès exclusif
29/10/2015
160
Usages du StampedLock
• Utiles pour le développement de composants thread-safe
• Ils ne sont pas réentrants
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
161
Ce qu’on a couvert
• La classe StampedLock
• Usages de StampedLock
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
162
java.net.URLPermission
La concurrence
Formation Les nouveautés Java 8 alphorm.com™©
java.net.URLPermission
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
163
Plan
• Le package java.net
• La classe java.net.URLPermission
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
164
Le package java.net
• Package des classes et interfaces utilisées pour les accès réseau
• Une section bas niveau
Adresses, sockets, interfaces
• Une section haut niveau
Formation Les nouveautés Java 8 alphorm.com™©
URIs, URLs,Connexions
29/10/2015
165
La classe URLPermission
• Représente la permission d’accéder à une ressource
• Les constructeurs ont besoin
Du nom : l’url
De l’action : méthode et entêtes
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
166
Ce qu’on a couvert
• Le package java.net
• La classe java.net.URLPermission
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
167
Le tri parallèle
Les collections
Formation Les nouveautés Java 8 alphorm.com™©
Le tri parallèle
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
168
Plan
• La classe Arrays
• Différence entre sort() et parallelSort()
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
169
La classe Arrays
• Du package java.util
• Contient des méthodes utilitaires pour les tableaux
• Contient des méthodes de création de tableaux
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
170
Différences entre sort() et parallelSort()
• La méthode sort s’applique à toute sorte d’éléments
• Avec indexes
• Avec comparateurs
• Le tri en parallèle divise explicitement le tableau en répartissant les
morceaux (split) sur des threads différents
Formation Les nouveautés Java 8 alphorm.com™©
morceaux (split) sur des threads différents
29/10/2015
171
Ce qu’on a couvert
• La classe Arrays
• Différence entre sort() et parallelSort()
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
172
Encodage Base64
Les collections
Formation Les nouveautés Java 8 alphorm.com™©
Encodage Base64
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
173
Plan
• La classe java.util.Base64
• Usages de l’encodage
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
174
La classe java.util.Base64
• Constituée de méthodes statiques
• Ne pas passer de paramètres null
• Les types supportés sont :
Basic : utilise l’alphabet de la table 1, aucun ajout
Formation Les nouveautés Java 8 alphorm.com™©
URL safe : utilise l’alphabet de la table 2, aucun ajout
MIME : utilise la table 1, ajout de rn
• Méthode getEncoder(), getDecoder()…
29/10/2015
175
Usages de l’encodage
• Base64 est un codage de l’information
• Défini comme encodage MIME
• Parce que les protocoles ont été prévus pour transmettre des messages
en texte seulement
• Provoque en général une augmentation du volume des données
Formation Les nouveautés Java 8 alphorm.com™©
• Provoque en général une augmentation du volume des données
29/10/2015
176
Ce qu’on a couvert
• La classe java.util.Base64
• Usages de l’encodage
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
177
L’arithmétique non signée
Les collections
Formation Les nouveautés Java 8 alphorm.com™©
L’arithmétique non signée
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
178
Plan
• Types signés et non-signés
• Les méthodes de Integer et Long
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
179
Types signés et non-signés
• Il n’existe pas de types non-signés en Java
• Parfois de la confusion peut s’introduire dans la manipulation
• Il faut faire attention :
Lors des opérations portées sur les variables
Formation Les nouveautés Java 8 alphorm.com™©
Lors de l’affichage
29/10/2015
180
Les méthodes de Integer et Long
• Méthodes qui manipulent des données non signées
• La méthode compareUnsigned
• La méthode divideUnsigned
• Les méthodes parseUnsignedInt
Formation Les nouveautés Java 8 alphorm.com™©
• La méthode remainderUnsigned
• La méthode toUnsignedLong
• Les méthodes toUnsignedString
29/10/2015
181
Ce qu’on a couvert
• Types signés et non-signés
• Les méthodes de Integer et Long
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
182
La ligne de commande
Les outils
Formation Les nouveautés Java 8 alphorm.com™©
La ligne de commande
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
183
Plan
• L’outil jjs
• L’outil jdeps
• L’outil javac -h
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
184
L’outil jjs
• Moteur javascript Nashorn
• Commande jjs en ligne de commande
• Trouvée sous bin
• Interpréteur encapsulable dans les applications Java
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
185
L’outil jdeps
• Un outil pour analyser les dépendances entre les classes
• Se lance sur une classe et recherche les dépendances à partir de celle-ci
• Options disponibles
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
186
L’outil javac -h
• Génère les entêtes natifs
• Plus besoin de passer par javah
• Les entêtes sont générés pour toute classe qui possède des méthode
native ou qui utilise l’annotation Native
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
187
Ce qu’on a couvert
• L’outil jjs
• L’outil jdeps
• L’outil javac -h
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
188
Nashorn
Les outils
Formation Les nouveautés Java 8 alphorm.com™©
Nashorn
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
189
Plan
• Nouveau moteur javascript
• Extensions
• Encapsulable
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
190
Nouveau moteur javascript
• En Java 7, un moteur basé sur Rhino
• Mieux conforme aux spécifications normalisées ECMA
• Meilleure performance
• Mode standalone
Formation Les nouveautés Java 8 alphorm.com™©
• Mode encapsulé dans une application Java
• Javascript peut appeler du Java
• Java peut appeler du javascript
29/10/2015
191
Extensions
• Les applications JavaFX sont exécutables comme scripts
• Le mode strict du Javascript est activable
• Le classpath peut être modifié pour la JVM
• Il existe un mode scripting
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
192
Encapsulable
• L’interaction avec Java devient plus simple
• Une application Java peut exécuter du Javascript de façon simple
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
193
Ce qu’on a couvert
• Nouveau moteur javascript
• Extensions
• Encapsulable
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
194
Les profils compacts
Les outils
Formation Les nouveautés Java 8 alphorm.com™©
Les profils compacts
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
195
Plan
• Définition et intérêt
• Composition des profils
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
196
Définition et intérêt
• Réduire l’empreinte mémoire
• Pour les applications qui n’ont pas besoin de toute la plateforme
• Option javac –profile
• 3 profils supportés
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
197
Composition des profils
• Chaque profils apporte des éléments
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
198
Ce qu’on a couvert
• Définition et intérêt
• Composition des profils
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
199
Le thème Modena
JavaFX
Formation Les nouveautés Java 8 alphorm.com™©
Le thème Modena
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
200
Plan
• Un nouveau thème
• Nouveaux contrôles
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
201
Un nouveau thème
• Remplace Caspian
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
202
Nouveaux contrôles
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
203
Ce qu’on a couvert
• Un nouveau thème
• Nouveaux contrôles
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
204
Encapsulation de Swing
JavaFX
Formation Les nouveautés Java 8 alphorm.com™©
Encapsulation de Swing
dans JavaFX
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
205
Plan
• La classe SwingNode
• Encapsuler un SwingNode
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
206
La classe SwingNode
• Hérite de Node
• Possède un constructeur par défaut
• Permet d’encapsuler des composants Swing
• Peut fournir le composant Swing encapsulé par getComponent()
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
207
Encapsuler un composant Swing
• Créer un objet SwingNode
• Ajouter ce nœud au contenu de la scène
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
208
Ce qu’on a couvert
• La classe SwingNode
• Encapsuler un SwingNode
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
209
Le contrôle WebView
JavaFX
Formation Les nouveautés Java 8 alphorm.com™©
Le contrôle WebView
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
210
Plan
• La classe WebView
• Interaction Java/Javascript
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
211
La classe WebView
• Classe du package javafx.scene.web
• Gère un WebEngine
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
212
Interaction Java/Javascript
• Une application web peut communiquer avec l’application JavaFX
• Le moteur webengine exécute des scripts
• JSObject permet au contraire de déclencher du code Java à partir de
JavaScript
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
213
Ce qu’on a couvert
• La classe WebView
• Interaction Java/Javascript
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
214
Conclusion
Formation Java8
Formation Les nouveautés Java 8 alphorm.com™©
Conclusion
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
29/10/2015
215
Plan de la formation
• La nouvelle syntaxe
• Les interfaces fonctionnelles
• Le langage
• Les streams
• Les collections
• Les outils
• JavaFX
Formation Les nouveautés Java 8 alphorm.com™©
• Les dates et l’internationalisation
• Concurrence et réseau
29/10/2015
216
Les autres formations dév sur Alphorm
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
217
Pour continuer …
• La formation Java fondamentaux …
• La formation Java avancée …
• La formation Android …
Formation Les nouveautés Java 8 alphorm.com™©
29/10/2015
218
Merci d’avoir suivi cette formation,
Formation Les nouveautés Java 8 alphorm.com™©
rendez-vous pour la suite !

Contenu connexe

Tendances

Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...
Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...
Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...Symphorien Niyonzima
 
Conception et réalisation d'une application web et mobile de e-commerce
Conception et réalisation d'une application web et mobile de e-commerceConception et réalisation d'une application web et mobile de e-commerce
Conception et réalisation d'une application web et mobile de e-commerceAHMEDBELGHITH4
 
Chp6 - Développement iOS
Chp6 - Développement iOSChp6 - Développement iOS
Chp6 - Développement iOSLilia Sfaxi
 
Gestion billetterie de cinéma
Gestion billetterie de cinémaGestion billetterie de cinéma
Gestion billetterie de cinémamohamedgoumih
 
Présentation E-Learning
Présentation   E-LearningPrésentation   E-Learning
Présentation E-LearningGhribi Achref
 
Alphorm.com Support de la Formation VMware vSphere 6, Les machines virtuelles
Alphorm.com Support de la Formation VMware vSphere 6, Les machines virtuellesAlphorm.com Support de la Formation VMware vSphere 6, Les machines virtuelles
Alphorm.com Support de la Formation VMware vSphere 6, Les machines virtuellesAlphorm
 
Copie de exposã© pfe
Copie de exposã© pfeCopie de exposã© pfe
Copie de exposã© pfeRiadh K.
 
[PFE] Master en ingénierie du logiciel
[PFE] Master en ingénierie du logiciel[PFE] Master en ingénierie du logiciel
[PFE] Master en ingénierie du logicielUSTHB & DELTALOG
 
Méthodes agiles vs méthodes classiques
Méthodes agiles vs méthodes classiquesMéthodes agiles vs méthodes classiques
Méthodes agiles vs méthodes classiquesSirine Barguaoui
 
Alphorm.com Support de la formation Vmware Esxi 6.0
Alphorm.com Support de la formation Vmware Esxi 6.0Alphorm.com Support de la formation Vmware Esxi 6.0
Alphorm.com Support de la formation Vmware Esxi 6.0Alphorm
 
Présentation PFE Module Article GPAO
Présentation PFE Module Article GPAOPrésentation PFE Module Article GPAO
Présentation PFE Module Article GPAOahmedmiha
 
Projet de fin d’études
Projet de fin d’études  Projet de fin d’études
Projet de fin d’études TombariAhmed
 
alphorm.com - Formation VMware vSphere 5
alphorm.com - Formation VMware vSphere 5alphorm.com - Formation VMware vSphere 5
alphorm.com - Formation VMware vSphere 5Alphorm
 
Soutenance Elhadj Bah | Diplôme d'ingénieur de conception en Informatique | E...
Soutenance Elhadj Bah | Diplôme d'ingénieur de conception en Informatique | E...Soutenance Elhadj Bah | Diplôme d'ingénieur de conception en Informatique | E...
Soutenance Elhadj Bah | Diplôme d'ingénieur de conception en Informatique | E...Elhadj Mamadou Aliou BAH
 
Conception et réalisation d’une application Mobile banking
Conception et réalisation d’une application  Mobile banking  Conception et réalisation d’une application  Mobile banking
Conception et réalisation d’une application Mobile banking Khaled Fayala
 

Tendances (20)

Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...
Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...
Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...
 
Modele-elearning
Modele-elearningModele-elearning
Modele-elearning
 
Présentation PFE
Présentation PFEPrésentation PFE
Présentation PFE
 
Conception et réalisation d'une application web et mobile de e-commerce
Conception et réalisation d'une application web et mobile de e-commerceConception et réalisation d'une application web et mobile de e-commerce
Conception et réalisation d'une application web et mobile de e-commerce
 
Chp6 - Développement iOS
Chp6 - Développement iOSChp6 - Développement iOS
Chp6 - Développement iOS
 
Gestion billetterie de cinéma
Gestion billetterie de cinémaGestion billetterie de cinéma
Gestion billetterie de cinéma
 
E-learning
E-learningE-learning
E-learning
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Présentation E-Learning
Présentation   E-LearningPrésentation   E-Learning
Présentation E-Learning
 
Alphorm.com Support de la Formation VMware vSphere 6, Les machines virtuelles
Alphorm.com Support de la Formation VMware vSphere 6, Les machines virtuellesAlphorm.com Support de la Formation VMware vSphere 6, Les machines virtuelles
Alphorm.com Support de la Formation VMware vSphere 6, Les machines virtuelles
 
Copie de exposã© pfe
Copie de exposã© pfeCopie de exposã© pfe
Copie de exposã© pfe
 
[PFE] Master en ingénierie du logiciel
[PFE] Master en ingénierie du logiciel[PFE] Master en ingénierie du logiciel
[PFE] Master en ingénierie du logiciel
 
Présentation PFE
Présentation PFEPrésentation PFE
Présentation PFE
 
Méthodes agiles vs méthodes classiques
Méthodes agiles vs méthodes classiquesMéthodes agiles vs méthodes classiques
Méthodes agiles vs méthodes classiques
 
Alphorm.com Support de la formation Vmware Esxi 6.0
Alphorm.com Support de la formation Vmware Esxi 6.0Alphorm.com Support de la formation Vmware Esxi 6.0
Alphorm.com Support de la formation Vmware Esxi 6.0
 
Présentation PFE Module Article GPAO
Présentation PFE Module Article GPAOPrésentation PFE Module Article GPAO
Présentation PFE Module Article GPAO
 
Projet de fin d’études
Projet de fin d’études  Projet de fin d’études
Projet de fin d’études
 
alphorm.com - Formation VMware vSphere 5
alphorm.com - Formation VMware vSphere 5alphorm.com - Formation VMware vSphere 5
alphorm.com - Formation VMware vSphere 5
 
Soutenance Elhadj Bah | Diplôme d'ingénieur de conception en Informatique | E...
Soutenance Elhadj Bah | Diplôme d'ingénieur de conception en Informatique | E...Soutenance Elhadj Bah | Diplôme d'ingénieur de conception en Informatique | E...
Soutenance Elhadj Bah | Diplôme d'ingénieur de conception en Informatique | E...
 
Conception et réalisation d’une application Mobile banking
Conception et réalisation d’une application  Mobile banking  Conception et réalisation d’une application  Mobile banking
Conception et réalisation d’une application Mobile banking
 

En vedette

Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux Alphorm
 
Alphorm.com support de la formation Access 2016 Initiation
Alphorm.com support de la formation Access 2016 InitiationAlphorm.com support de la formation Access 2016 Initiation
Alphorm.com support de la formation Access 2016 InitiationAlphorm
 
alphorm.com - Formation Windows 8.1 - Utilisateur
alphorm.com - Formation Windows 8.1 - Utilisateuralphorm.com - Formation Windows 8.1 - Utilisateur
alphorm.com - Formation Windows 8.1 - UtilisateurAlphorm
 
alphorm.com - Formation MOS Word 2013 (77-418)
alphorm.com - Formation MOS Word 2013 (77-418)alphorm.com - Formation MOS Word 2013 (77-418)
alphorm.com - Formation MOS Word 2013 (77-418)Alphorm
 
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...Alphorm
 
Alphorm.com Formation Windev 20 Pefectionnement
Alphorm.com Formation Windev 20 Pefectionnement Alphorm.com Formation Windev 20 Pefectionnement
Alphorm.com Formation Windev 20 Pefectionnement Alphorm
 
Alphorm.com Support Formation Android 6, Expert
Alphorm.com Support Formation Android 6, ExpertAlphorm.com Support Formation Android 6, Expert
Alphorm.com Support Formation Android 6, ExpertAlphorm
 
alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)
alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)
alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)Alphorm
 
Alphorm.com win dev-20-avance-ss
Alphorm.com win dev-20-avance-ssAlphorm.com win dev-20-avance-ss
Alphorm.com win dev-20-avance-ssAlphorm
 
Alphorm.com Formation MOS Access 2013 (77-424)
Alphorm.com Formation MOS Access 2013 (77-424)Alphorm.com Formation MOS Access 2013 (77-424)
Alphorm.com Formation MOS Access 2013 (77-424)Alphorm
 
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôleAlphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôleAlphorm
 
Alphorm.com Support de la Formation Outlook 2016 Initiation
Alphorm.com  Support de la Formation Outlook 2016 Initiation Alphorm.com  Support de la Formation Outlook 2016 Initiation
Alphorm.com Support de la Formation Outlook 2016 Initiation Alphorm
 
Alphorm.com support de la formation Word 2016 Initiation
Alphorm.com support de la formation Word 2016 InitiationAlphorm.com support de la formation Word 2016 Initiation
Alphorm.com support de la formation Word 2016 InitiationAlphorm
 
Alphorm.com Support de la formation Programmer en C# avec visual studio 2015
Alphorm.com Support de la formation Programmer en C# avec visual studio 2015Alphorm.com Support de la formation Programmer en C# avec visual studio 2015
Alphorm.com Support de la formation Programmer en C# avec visual studio 2015Alphorm
 
Support de la formation Android 5 , Avancé
Support de la formation Android 5 , Avancé Support de la formation Android 5 , Avancé
Support de la formation Android 5 , Avancé Alphorm
 
Alphorm.com Formation Le Language C
Alphorm.com  Formation Le Language C Alphorm.com  Formation Le Language C
Alphorm.com Formation Le Language C Alphorm
 
Alphorm.com Support de la Formation WebDev 21
Alphorm.com Support de la Formation WebDev 21Alphorm.com Support de la Formation WebDev 21
Alphorm.com Support de la Formation WebDev 21Alphorm
 
Alphorm.com Formation Windev Mobile 19, Android
Alphorm.com Formation Windev Mobile 19, AndroidAlphorm.com Formation Windev Mobile 19, Android
Alphorm.com Formation Windev Mobile 19, AndroidAlphorm
 
Alphorm.com Support de la formation EXCEL 2016 Initiation Découverte de l’env...
Alphorm.com Support de la formation EXCEL 2016 Initiation Découverte de l’env...Alphorm.com Support de la formation EXCEL 2016 Initiation Découverte de l’env...
Alphorm.com Support de la formation EXCEL 2016 Initiation Découverte de l’env...Alphorm
 
Alphorm.com Support de la Formation-PowerPoint 2016 Initiation
Alphorm.com Support de la Formation-PowerPoint 2016 Initiation Alphorm.com Support de la Formation-PowerPoint 2016 Initiation
Alphorm.com Support de la Formation-PowerPoint 2016 Initiation Alphorm
 

En vedette (20)

Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
 
Alphorm.com support de la formation Access 2016 Initiation
Alphorm.com support de la formation Access 2016 InitiationAlphorm.com support de la formation Access 2016 Initiation
Alphorm.com support de la formation Access 2016 Initiation
 
alphorm.com - Formation Windows 8.1 - Utilisateur
alphorm.com - Formation Windows 8.1 - Utilisateuralphorm.com - Formation Windows 8.1 - Utilisateur
alphorm.com - Formation Windows 8.1 - Utilisateur
 
alphorm.com - Formation MOS Word 2013 (77-418)
alphorm.com - Formation MOS Word 2013 (77-418)alphorm.com - Formation MOS Word 2013 (77-418)
alphorm.com - Formation MOS Word 2013 (77-418)
 
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...
 
Alphorm.com Formation Windev 20 Pefectionnement
Alphorm.com Formation Windev 20 Pefectionnement Alphorm.com Formation Windev 20 Pefectionnement
Alphorm.com Formation Windev 20 Pefectionnement
 
Alphorm.com Support Formation Android 6, Expert
Alphorm.com Support Formation Android 6, ExpertAlphorm.com Support Formation Android 6, Expert
Alphorm.com Support Formation Android 6, Expert
 
alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)
alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)
alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)
 
Alphorm.com win dev-20-avance-ss
Alphorm.com win dev-20-avance-ssAlphorm.com win dev-20-avance-ss
Alphorm.com win dev-20-avance-ss
 
Alphorm.com Formation MOS Access 2013 (77-424)
Alphorm.com Formation MOS Access 2013 (77-424)Alphorm.com Formation MOS Access 2013 (77-424)
Alphorm.com Formation MOS Access 2013 (77-424)
 
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôleAlphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
 
Alphorm.com Support de la Formation Outlook 2016 Initiation
Alphorm.com  Support de la Formation Outlook 2016 Initiation Alphorm.com  Support de la Formation Outlook 2016 Initiation
Alphorm.com Support de la Formation Outlook 2016 Initiation
 
Alphorm.com support de la formation Word 2016 Initiation
Alphorm.com support de la formation Word 2016 InitiationAlphorm.com support de la formation Word 2016 Initiation
Alphorm.com support de la formation Word 2016 Initiation
 
Alphorm.com Support de la formation Programmer en C# avec visual studio 2015
Alphorm.com Support de la formation Programmer en C# avec visual studio 2015Alphorm.com Support de la formation Programmer en C# avec visual studio 2015
Alphorm.com Support de la formation Programmer en C# avec visual studio 2015
 
Support de la formation Android 5 , Avancé
Support de la formation Android 5 , Avancé Support de la formation Android 5 , Avancé
Support de la formation Android 5 , Avancé
 
Alphorm.com Formation Le Language C
Alphorm.com  Formation Le Language C Alphorm.com  Formation Le Language C
Alphorm.com Formation Le Language C
 
Alphorm.com Support de la Formation WebDev 21
Alphorm.com Support de la Formation WebDev 21Alphorm.com Support de la Formation WebDev 21
Alphorm.com Support de la Formation WebDev 21
 
Alphorm.com Formation Windev Mobile 19, Android
Alphorm.com Formation Windev Mobile 19, AndroidAlphorm.com Formation Windev Mobile 19, Android
Alphorm.com Formation Windev Mobile 19, Android
 
Alphorm.com Support de la formation EXCEL 2016 Initiation Découverte de l’env...
Alphorm.com Support de la formation EXCEL 2016 Initiation Découverte de l’env...Alphorm.com Support de la formation EXCEL 2016 Initiation Découverte de l’env...
Alphorm.com Support de la formation EXCEL 2016 Initiation Découverte de l’env...
 
Alphorm.com Support de la Formation-PowerPoint 2016 Initiation
Alphorm.com Support de la Formation-PowerPoint 2016 Initiation Alphorm.com Support de la Formation-PowerPoint 2016 Initiation
Alphorm.com Support de la Formation-PowerPoint 2016 Initiation
 

Similaire à Alphorm.com Java 8: les nouveautés

Alphorm.com - Formation programmer en Visual Basic .NET
Alphorm.com - Formation programmer en Visual Basic .NETAlphorm.com - Formation programmer en Visual Basic .NET
Alphorm.com - Formation programmer en Visual Basic .NETAlphorm
 
Alphorm.com Support de la formation JavaScript les fondamentaux
Alphorm.com Support de la formation JavaScript les fondamentauxAlphorm.com Support de la formation JavaScript les fondamentaux
Alphorm.com Support de la formation JavaScript les fondamentauxAlphorm
 
Alphorm.com support de la formation programmer en C# 6
Alphorm.com support de la formation programmer en C# 6Alphorm.com support de la formation programmer en C# 6
Alphorm.com support de la formation programmer en C# 6Alphorm
 
alphorm.com - Formation UML
alphorm.com - Formation UMLalphorm.com - Formation UML
alphorm.com - Formation UMLAlphorm
 
Alphorm.com Formation NodeJS, les fondamentaux
Alphorm.com Formation NodeJS, les fondamentauxAlphorm.com Formation NodeJS, les fondamentaux
Alphorm.com Formation NodeJS, les fondamentauxAlphorm
 
Alphorm.com Formation Drupal 7 pour les utilisateurs
Alphorm.com Formation Drupal 7 pour les utilisateurs Alphorm.com Formation Drupal 7 pour les utilisateurs
Alphorm.com Formation Drupal 7 pour les utilisateurs Alphorm
 
Alphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateurAlphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateurAlphorm
 
Alphorm.com Formation les fondamentaux de Matlab 2013 A
Alphorm.com  Formation les fondamentaux de Matlab 2013 AAlphorm.com  Formation les fondamentaux de Matlab 2013 A
Alphorm.com Formation les fondamentaux de Matlab 2013 AAlphorm
 
Alphorm.com Formation Java,avancé OCP (1Z0-804)
Alphorm.com Formation Java,avancé OCP (1Z0-804)Alphorm.com Formation Java,avancé OCP (1Z0-804)
Alphorm.com Formation Java,avancé OCP (1Z0-804)Alphorm
 
Benchmark stratice des plateformes open source
Benchmark stratice des plateformes open sourceBenchmark stratice des plateformes open source
Benchmark stratice des plateformes open sourceFFFOD
 
Alphorm.com Support de la formation NodeJS , avancé
Alphorm.com Support de la formation NodeJS , avancé Alphorm.com Support de la formation NodeJS , avancé
Alphorm.com Support de la formation NodeJS , avancé Alphorm
 
Alphorm.com Support de la Formation Windows 10 Troubleshootings partie 1
Alphorm.com Support de la Formation Windows 10 Troubleshootings partie 1Alphorm.com Support de la Formation Windows 10 Troubleshootings partie 1
Alphorm.com Support de la Formation Windows 10 Troubleshootings partie 1Alphorm
 
Alphorm.com Formation knockoutJS
Alphorm.com Formation knockoutJSAlphorm.com Formation knockoutJS
Alphorm.com Formation knockoutJSAlphorm
 
Alphorm.com Support de la Formation Windows Containers
Alphorm.com Support de la Formation Windows ContainersAlphorm.com Support de la Formation Windows Containers
Alphorm.com Support de la Formation Windows ContainersAlphorm
 
Alphorm.com Support de la Formation Windows 10 Troubleshooting avancé
Alphorm.com Support de la Formation Windows 10 Troubleshooting avancéAlphorm.com Support de la Formation Windows 10 Troubleshooting avancé
Alphorm.com Support de la Formation Windows 10 Troubleshooting avancéAlphorm
 
M205developpemmetdigital123455555555.pdf
M205developpemmetdigital123455555555.pdfM205developpemmetdigital123455555555.pdf
M205developpemmetdigital123455555555.pdfmonirgrich
 
Alphorm.com-Formation windows phone 8.1
Alphorm.com-Formation windows phone 8.1Alphorm.com-Formation windows phone 8.1
Alphorm.com-Formation windows phone 8.1Alphorm
 
Alphorm.com Support de la Formation JavaScript , avancé
Alphorm.com Support de la Formation JavaScript , avancéAlphorm.com Support de la Formation JavaScript , avancé
Alphorm.com Support de la Formation JavaScript , avancéAlphorm
 
OBJIS Congo présente 10 reperes cle du developpeur java
OBJIS Congo présente 10 reperes cle du developpeur javaOBJIS Congo présente 10 reperes cle du developpeur java
OBJIS Congo présente 10 reperes cle du developpeur javaDouglas MBIANDOU
 
Atelier mooc enseigner le langage c en ligne
Atelier   mooc enseigner le langage c en ligneAtelier   mooc enseigner le langage c en ligne
Atelier mooc enseigner le langage c en ligneElla Hamonic
 

Similaire à Alphorm.com Java 8: les nouveautés (20)

Alphorm.com - Formation programmer en Visual Basic .NET
Alphorm.com - Formation programmer en Visual Basic .NETAlphorm.com - Formation programmer en Visual Basic .NET
Alphorm.com - Formation programmer en Visual Basic .NET
 
Alphorm.com Support de la formation JavaScript les fondamentaux
Alphorm.com Support de la formation JavaScript les fondamentauxAlphorm.com Support de la formation JavaScript les fondamentaux
Alphorm.com Support de la formation JavaScript les fondamentaux
 
Alphorm.com support de la formation programmer en C# 6
Alphorm.com support de la formation programmer en C# 6Alphorm.com support de la formation programmer en C# 6
Alphorm.com support de la formation programmer en C# 6
 
alphorm.com - Formation UML
alphorm.com - Formation UMLalphorm.com - Formation UML
alphorm.com - Formation UML
 
Alphorm.com Formation NodeJS, les fondamentaux
Alphorm.com Formation NodeJS, les fondamentauxAlphorm.com Formation NodeJS, les fondamentaux
Alphorm.com Formation NodeJS, les fondamentaux
 
Alphorm.com Formation Drupal 7 pour les utilisateurs
Alphorm.com Formation Drupal 7 pour les utilisateurs Alphorm.com Formation Drupal 7 pour les utilisateurs
Alphorm.com Formation Drupal 7 pour les utilisateurs
 
Alphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateurAlphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateur
 
Alphorm.com Formation les fondamentaux de Matlab 2013 A
Alphorm.com  Formation les fondamentaux de Matlab 2013 AAlphorm.com  Formation les fondamentaux de Matlab 2013 A
Alphorm.com Formation les fondamentaux de Matlab 2013 A
 
Alphorm.com Formation Java,avancé OCP (1Z0-804)
Alphorm.com Formation Java,avancé OCP (1Z0-804)Alphorm.com Formation Java,avancé OCP (1Z0-804)
Alphorm.com Formation Java,avancé OCP (1Z0-804)
 
Benchmark stratice des plateformes open source
Benchmark stratice des plateformes open sourceBenchmark stratice des plateformes open source
Benchmark stratice des plateformes open source
 
Alphorm.com Support de la formation NodeJS , avancé
Alphorm.com Support de la formation NodeJS , avancé Alphorm.com Support de la formation NodeJS , avancé
Alphorm.com Support de la formation NodeJS , avancé
 
Alphorm.com Support de la Formation Windows 10 Troubleshootings partie 1
Alphorm.com Support de la Formation Windows 10 Troubleshootings partie 1Alphorm.com Support de la Formation Windows 10 Troubleshootings partie 1
Alphorm.com Support de la Formation Windows 10 Troubleshootings partie 1
 
Alphorm.com Formation knockoutJS
Alphorm.com Formation knockoutJSAlphorm.com Formation knockoutJS
Alphorm.com Formation knockoutJS
 
Alphorm.com Support de la Formation Windows Containers
Alphorm.com Support de la Formation Windows ContainersAlphorm.com Support de la Formation Windows Containers
Alphorm.com Support de la Formation Windows Containers
 
Alphorm.com Support de la Formation Windows 10 Troubleshooting avancé
Alphorm.com Support de la Formation Windows 10 Troubleshooting avancéAlphorm.com Support de la Formation Windows 10 Troubleshooting avancé
Alphorm.com Support de la Formation Windows 10 Troubleshooting avancé
 
M205developpemmetdigital123455555555.pdf
M205developpemmetdigital123455555555.pdfM205developpemmetdigital123455555555.pdf
M205developpemmetdigital123455555555.pdf
 
Alphorm.com-Formation windows phone 8.1
Alphorm.com-Formation windows phone 8.1Alphorm.com-Formation windows phone 8.1
Alphorm.com-Formation windows phone 8.1
 
Alphorm.com Support de la Formation JavaScript , avancé
Alphorm.com Support de la Formation JavaScript , avancéAlphorm.com Support de la Formation JavaScript , avancé
Alphorm.com Support de la Formation JavaScript , avancé
 
OBJIS Congo présente 10 reperes cle du developpeur java
OBJIS Congo présente 10 reperes cle du developpeur javaOBJIS Congo présente 10 reperes cle du developpeur java
OBJIS Congo présente 10 reperes cle du developpeur java
 
Atelier mooc enseigner le langage c en ligne
Atelier   mooc enseigner le langage c en ligneAtelier   mooc enseigner le langage c en ligne
Atelier mooc enseigner le langage c en ligne
 

Plus de Alphorm

Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...Alphorm
 
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...Alphorm
 
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : SécuritéAlphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : SécuritéAlphorm
 
Alphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à ZAlphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à ZAlphorm
 
Alphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'ArchitecturesAlphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'ArchitecturesAlphorm
 
Alphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion CommercialeAlphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion CommercialeAlphorm
 
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objetAlphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objetAlphorm
 
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord InteractifAlphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord InteractifAlphorm
 
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style IsométriqueAlphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style IsométriqueAlphorm
 
Alphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à NiveauAlphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à NiveauAlphorm
 
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...Alphorm
 
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes MobilesAlphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes MobilesAlphorm
 
Alphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POOAlphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POOAlphorm
 
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...Alphorm
 
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...Alphorm
 
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...Alphorm
 
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...Alphorm
 
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBootAlphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBootAlphorm
 
Alphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et ServicesAlphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et ServicesAlphorm
 
Alphorm.com Formation Power BI : Analyse et Visualisation de Données
Alphorm.com Formation Power BI : Analyse et Visualisation de DonnéesAlphorm.com Formation Power BI : Analyse et Visualisation de Données
Alphorm.com Formation Power BI : Analyse et Visualisation de DonnéesAlphorm
 

Plus de Alphorm (20)

Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
 
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
 
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : SécuritéAlphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
 
Alphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à ZAlphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à Z
 
Alphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'ArchitecturesAlphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
 
Alphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion CommercialeAlphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion Commerciale
 
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objetAlphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
 
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord InteractifAlphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
 
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style IsométriqueAlphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
 
Alphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à NiveauAlphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à Niveau
 
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
 
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes MobilesAlphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
 
Alphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POOAlphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POO
 
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
 
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
 
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
 
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
 
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBootAlphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
 
Alphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et ServicesAlphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et Services
 
Alphorm.com Formation Power BI : Analyse et Visualisation de Données
Alphorm.com Formation Power BI : Analyse et Visualisation de DonnéesAlphorm.com Formation Power BI : Analyse et Visualisation de Données
Alphorm.com Formation Power BI : Analyse et Visualisation de Données
 

Alphorm.com Java 8: les nouveautés

  • 1. 29/10/2015 1 Formation Java8 Formation Les nouveautés Java 8 alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 2. 29/10/2015 2 Plan • Présentation de votre formateur • Qu’est ce que c’est Java8 ? • Présentation de votre formation • Le plan de la formation Formation Les nouveautés Java 8 alphorm.com™© • Publics concernés • Prérequis de la formation
  • 3. 29/10/2015 3 Présentation du formateur • Fabien Brissonneau • Email : fabien.brissonneau@gmail.com • Consultant Concepteur et Formateur • Missions d’architecture, de conception , de réalisation logicielles • Fondateur de eiXa6 Formation Les nouveautés Java 8 alphorm.com™© • Actuellement en mission sur un projet de gestion • Mes références : Mon profil Viadeo : http://fr.viadeo.com/fr/profile/fabien.brissonneau Mon profil LinkedIn : http://fr.linkedin.com/pub/fabien-brissonneau/65/902/92a/ Mon profil Alphorm : http://www.alphorm.com/formateur/fabien-brissonneau
  • 4. 29/10/2015 4 Mes formations sur alphorm Formation Les nouveautés Java 8 alphorm.com™©
  • 5. 29/10/2015 5 Qu’est-ce que Java8? • La nouvelle version de Java8 sortie en 2014 • Une révolution dans la syntaxe • L’apparition de nouveau concepts • Une nouvelle façon de programmer en Java ? Formation Les nouveautés Java 8 alphorm.com™©
  • 6. 29/10/2015 6 Plan de la formation • La nouvelle syntaxe • Les interfaces fonctionnelles • Le langage • Les streams • Les collections • Les outils • JavaFX Formation Les nouveautés Java 8 alphorm.com™© • Les dates et l’internationalisation • Concurrence et réseau
  • 7. 29/10/2015 7 Publics concernés • Cette formation s’adresse à des développeurs • Connaître Java est nécessaire, ne pas être dérouté par sa syntaxe • Nous ne reviendrons pas sur les concepts du langage Formation Les nouveautés Java 8 alphorm.com™©
  • 8. 29/10/2015 8 Prérequis de la formation • Savoir lire du code Java • Avoir des rudiments sur les interfaces graphiques • Et … du courage comme toujours ! Formation Les nouveautés Java 8 alphorm.com™©
  • 9. 29/10/2015 9 Les outils nécessaires • Le SDK Java8 • L’outil Netbeans est utilisé en interface de développement • La présentation sera faite sous Windows 8 Formation Les nouveautés Java 8 alphorm.com™©
  • 10. 29/10/2015 10 Les autres formations dév sur Alphorm Formation Les nouveautés Java 8 alphorm.com™©
  • 11. 29/10/2015 11 Are you ready ? ☺ Formation Les nouveautés Java 8 alphorm.com™©
  • 12. 29/10/2015 12 Expressions lambdas La nouvelle syntaxe Formation Les nouveautés Java 8 alphorm.com™© Expressions lambdas Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 13. 29/10/2015 13 Plan • La syntaxe des expressions lambdas • Usage des expressions lambdas Formation Les nouveautés Java 8 alphorm.com™©
  • 14. 29/10/2015 14 La syntaxe des expressions lambdas • La liste des paramètres Le type est optionnel Les parenthèses peuvent être omises • La -> • Le corps de la fonction Formation Les nouveautés Java 8 alphorm.com™© • Le corps de la fonction Sans {} s’il y a une seule expression Avec {} sinon
  • 15. 29/10/2015 15 Usage des expressions lambdas • Le besoin d’expressions courtes • L’expression de prédicat Une fonction courte qui retourne true ou false • La fourniture d’un consommateur Formation Les nouveautés Java 8 alphorm.com™© Une fonction qui accept une donnée
  • 16. 29/10/2015 16 Ce qu’on a couvert • La syntaxe des expressions lambdas • Usage des expressions lambdas Formation Les nouveautés Java 8 alphorm.com™©
  • 17. 29/10/2015 17 EL et classes La nouvelle syntaxe Formation Les nouveautés Java 8 alphorm.com™© EL et classes anonymes Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 18. 29/10/2015 18 Plan • Créer une fonction de rappel • Créer une classe anonyme • Utiliser une expression lambda Formation Les nouveautés Java 8 alphorm.com™©
  • 19. 29/10/2015 19 Créer une fonction de rappel • En Java, on ne peut pas créer une fonction en dehors d’une classe • Parfois, nous avons besoin du seul traitement • Il faut créer alors une classe pour profiter de ses seules fonctions Formation Les nouveautés Java 8 alphorm.com™©
  • 20. 29/10/2015 20 Créer une classe anomyne • Une classe anonyme est une classe interne • Nous nous débarrassons de l’obligation de déclarer une classe • La classe anonyme a un accès privilégié à la classe englobante Formation Les nouveautés Java 8 alphorm.com™©
  • 21. 29/10/2015 21 Utiliser une expression lambda • La plus courte des expressions • Pas de classe à déclarer • Focalisée sur le traitement à mettre en place • Correspond à une interface à une seule méthode Formation Les nouveautés Java 8 alphorm.com™©
  • 22. 29/10/2015 22 Ce qu’on a couvert • Créer une fonction de rappel • Créer une classe anonyme • Utiliser une expression lambda Formation Les nouveautés Java 8 alphorm.com™©
  • 23. 29/10/2015 23 Les limites des La nouvelle syntaxe Formation Les nouveautés Java 8 alphorm.com™© Les limites des expressions lambdas Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 24. 29/10/2015 24 Plan • Les variables locales • Les captures Formation Les nouveautés Java 8 alphorm.com™©
  • 25. 29/10/2015 25 Les variables locales • Les variables d’une expression lambda n’ont pas d’espace propre • Les collisions sont donc fréquentes Formation Les nouveautés Java 8 alphorm.com™©
  • 26. 29/10/2015 26 Les captures • Une expression lambda accède • Aux variables locales • Aux variables attributs de la classe Formation Les nouveautés Java 8 alphorm.com™©
  • 27. 29/10/2015 27 Ce qu’on a couvert • Les variables locales • Les captures Formation Les nouveautés Java 8 alphorm.com™©
  • 28. 29/10/2015 28 Les méthodes par La nouvelle syntaxe Formation Les nouveautés Java 8 alphorm.com™© Les méthodes par défaut des interfaces Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 29. 29/10/2015 29 Plan • Les problèmes • Les méthodes par défaut Formation Les nouveautés Java 8 alphorm.com™©
  • 30. 29/10/2015 30 Les problèmes • Une interface peut déclarer plusieurs méthodes • Une classe qui implémente une interface doit fournir un corps de méthode pour chaque méthode de l’interface • Une interface propose parfois des méthodes qui n’intéressent pas la classe fille Formation Les nouveautés Java 8 alphorm.com™©
  • 31. 29/10/2015 31 Les méthodes par défaut • Une implémentation fournit dans l’interface • Pas obligatoire de la redéfinir • Devrait correspondre à un traitement vrai pour toutes les implémentations de cette interface Formation Les nouveautés Java 8 alphorm.com™©
  • 32. 29/10/2015 32 Ce qu’on a couvert • Les problèmes • Les méthodes par défaut Formation Les nouveautés Java 8 alphorm.com™©
  • 33. 29/10/2015 33 Les références de La nouvelle syntaxe Formation Les nouveautés Java 8 alphorm.com™© Les références de méthodes Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 34. 29/10/2015 34 Plan • Le problème • La solution nouvelle Formation Les nouveautés Java 8 alphorm.com™©
  • 35. 29/10/2015 35 Le problème • En Java, les adresses de variables ou de fonctions ne sont pas manipulables • Avant la version 8, les méthodes ne sont donc pas référençables Contrairement aux objets, instanciés • Pour déclencher une méthode particulière, il faut référencer un objet Formation Les nouveautés Java 8 alphorm.com™© • Pour déclencher une méthode particulière, il faut référencer un objet • D’où l’obligation de fournir un objet pour déclencher dessus une méthode
  • 36. 29/10/2015 36 La solution nouvelle • Il est possible de référencer une méthode • Conforme à une signature particulière • Peut être une méthode d’instance ou une méthode statique Formation Les nouveautés Java 8 alphorm.com™©
  • 37. 29/10/2015 37 Ce qu’on a couvert • Le problème • La solution nouvelle Formation Les nouveautés Java 8 alphorm.com™©
  • 38. 29/10/2015 38 Les SAM Les interfaces fonctionnelles Formation Les nouveautés Java 8 alphorm.com™© Les SAM Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 39. 29/10/2015 39 Plan • Définition • Exemples de SAM • Les SAM et les expressions lambdas Formation Les nouveautés Java 8 alphorm.com™©
  • 40. 29/10/2015 40 Définition • Single Abstract Method • Une interface avec une seule méthode déclarée • Une interface qui existe POUR cette méthode • Lorsqu’on l’utilise, on cherche essentiellement à traiter la méthode Formation Les nouveautés Java 8 alphorm.com™©
  • 41. 29/10/2015 41 Exemple de SAM • Les interfaces à une seule méthode existent en nombre en Java • Pour l’ihm ActionListener : gestion du clic bouton • Pour le tri Formation Les nouveautés Java 8 alphorm.com™© Comparable : fourniture d’un ordre • …
  • 42. 29/10/2015 42 Les SAM et les expressions lambdas • Une SAM peut être avantageusement remplacée • Pas besoin de créer une classe • L’expression lambda se substitue à la méthode • Doit être conforme à la signature Formation Les nouveautés Java 8 alphorm.com™©
  • 43. 29/10/2015 43 Ce qu’on a couvert • Définition • Exemples de SAM • Les SAM et les expressions lambdas Formation Les nouveautés Java 8 alphorm.com™©
  • 44. 29/10/2015 44 @FunctionalInterface Les interfaces fonctionnelles Formation Les nouveautés Java 8 alphorm.com™© @FunctionalInterface Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 45. 29/10/2015 45 Plan • Définition • Cas d’erreur Formation Les nouveautés Java 8 alphorm.com™©
  • 46. 29/10/2015 46 Définition • Une interface fonctionnelle Propose une seule méthode Existe pour cette méthode Peut être utilisée via une lambda expression Formation Les nouveautés Java 8 alphorm.com™©
  • 47. 29/10/2015 47 Usage des interfaces fonctionnelles • Définit une signature pour la méthode qu’elle propose Les types et nombres de paramètres de la méthode seront respectés • Définit un type pour des passages de paramètres Un traitement peut imposer comme argument un objet conforme • Définit un type pour des références de méthodes Formation Les nouveautés Java 8 alphorm.com™© • Définit un type pour des références de méthodes Il est possible de créer des variables références de méthodes
  • 48. 29/10/2015 48 Cas d’erreur • Une interface fonctionnelle • Possède une seule méthode et non plusieurs • Impose les types de paramètres de sa fonction Formation Les nouveautés Java 8 alphorm.com™©
  • 49. 29/10/2015 49 Ce qu’on a couvert • Définition • Cas d’erreur Formation Les nouveautés Java 8 alphorm.com™©
  • 50. 29/10/2015 50 Function Les interfaces fonctionnelles Formation Les nouveautés Java 8 alphorm.com™© Function Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 51. 29/10/2015 51 Plan • L’interface Function<T,R> • L’interface UnaryOperator<T> • L’interface BiFunction<T,U,R> • L’interface BinaryOperator<T> Formation Les nouveautés Java 8 alphorm.com™©
  • 52. 29/10/2015 52 L’interface Function<T,R> • Une interface fonctionnelle • Qui accepte un paramètre et retourne une valeur • La méthode fonctionnelle est apply telle que : R r = apply(T t) • Autres méthodes implémentées par défaut : Formation Les nouveautés Java 8 alphorm.com™© andThen(after) : applique la fonction courante puis celle en argument compose(before) : applique d’abord l’argument puis la courante identity() : retourne l’argument
  • 53. 29/10/2015 53 L’interface UnaryOperator<T> • Sous interface de Function<T,R> • La méthode apply retourne le même type que celui du paramètre Formation Les nouveautés Java 8 alphorm.com™©
  • 54. 29/10/2015 54 L’interface BiFunction<T,U,R> • Une interface fonctionnelle • Qui accepte deux paramètres et retourne une valeur • La méthode fonctionnelle est apply telle que : R r = apply(T t, U u) • Autres méthodes implémentées par défaut : Formation Les nouveautés Java 8 alphorm.com™© andThen(after) : applique la fonction courante puis celle en argument
  • 55. 29/10/2015 55 BinaryOperator<T> • Sous interface de BiFunction<T,U,R> • Les types T,U,R sont les mêmes • Le type du retour est donc le même que ceux des paramètres Formation Les nouveautés Java 8 alphorm.com™©
  • 56. 29/10/2015 56 Ce qu’on a couvert • L’interface Function<T,R> • L’interface UnaryOperator<T> • L’interface BiFunction<T,U,R> • L’interface BinaryOperator<T> Formation Les nouveautés Java 8 alphorm.com™©
  • 57. 29/10/2015 57 Predicate Les interfaces fonctionnelles Formation Les nouveautés Java 8 alphorm.com™© Predicate Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 58. 29/10/2015 58 Plan • L’interface Predicate<T> • L’interface BiPredicate<T,U> • L’interface DoublePredicate • L’interface IntPredicate Formation Les nouveautés Java 8 alphorm.com™© • L’interface LongPredicate
  • 59. 29/10/2015 59 L’interface Predicate<T> • Représente une fonction qui prend un T • Et retourne un booléen • La méthode fonctionnelle est test telle que boolean b = test(T t) • Autres méthodes avec implémentations : Formation Les nouveautés Java 8 alphorm.com™© and( Predicate p) : compose avec un AND court-circuit negate() : retourne la négation logique or(Predicate p) : compose avec un OR coucrt-circuit isEqual(Object o) : test l’égalité
  • 60. 29/10/2015 60 L’interface BiPredicate<T,U> • Interface fonctionnelle Predicate pour 2 paramètres • La méthode fonctionnelle est test telle que boolean b = test(T t, U u) • Autres méthodes implémentées : and( BiPredicate) : compose AND Formation Les nouveautés Java 8 alphorm.com™© negate() : la négation logique or(BiPredicate) : compose OR
  • 61. 29/10/2015 61 L’interface DoublePredicate • Interface fonctionnelle • La méthode fonctionnelle est test • Mais le paramètre est forcément un double • Mêmes méthodes implémentées par défaut que Predicate Formation Les nouveautés Java 8 alphorm.com™©
  • 62. 29/10/2015 62 L’interface IntPredicate • Interface fonctionnelle • La méthode fonctionnelle est test • Mais le paramètre est forcément un int • Mêmes méthodes implémentées par défaut que Predicate Formation Les nouveautés Java 8 alphorm.com™©
  • 63. 29/10/2015 63 L’interface LongPredicate • Interface fonctionnelle • La méthode fonctionnelle est test • Mais le paramètre est forcément un long • Mêmes méthodes implémentées par défaut que Predicate Formation Les nouveautés Java 8 alphorm.com™©
  • 64. 29/10/2015 64 Ce qu’on a couvert • L’interface Predicate<T> • L’interface BiPredicate<T,U> • L’interface DoublePredicate • L’interface IntPredicate Formation Les nouveautés Java 8 alphorm.com™© • L’interface LongPredicate
  • 65. 29/10/2015 65 Supplier Les interfaces fonctionnelles Formation Les nouveautés Java 8 alphorm.com™© Supplier Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 66. 29/10/2015 66 Plan • L’interface Supplier<T> • L’interface BooleanSupplier • L’interface DoubleSupplier • L’interface IntSupplier Formation Les nouveautés Java 8 alphorm.com™© • L’interface LongSupplier
  • 67. 29/10/2015 67 L’interface Supplier<T> • Interface fonctionnelle typée par le résultat attendu • La méthode fonctionnelle est get telle que T resultat = get() • Aucune méthode supplémentaire • Pas d’impératif sur l’unicité des productions Formation Les nouveautés Java 8 alphorm.com™©
  • 68. 29/10/2015 68 L’interface BooleanSupplier • Interface fonctionnelle représentant la production de booléens • La méthode fonctionnelle est getAsBoolean() Telle que : boolean b = getAsBoolean() Formation Les nouveautés Java 8 alphorm.com™©
  • 69. 29/10/2015 69 L’interface DoubleSupplier • Interface fonctionnelle représentant la production de double • La méthode fonctionnelle est getAsDouble() Telle que : double res = getAsDouble() Formation Les nouveautés Java 8 alphorm.com™©
  • 70. 29/10/2015 70 L’interface IntSupplier • Interface fonctionnelle représentant la production de int • La méthode fonctionnelle est getAsInt() Telle que : int res = getAsInt () Formation Les nouveautés Java 8 alphorm.com™©
  • 71. 29/10/2015 71 L’interface LongSupplier • Interface fonctionnelle représentant la production de long • La méthode fonctionnelle est getAsLong() Telle que : long res = getAsLong() Formation Les nouveautés Java 8 alphorm.com™©
  • 72. 29/10/2015 72 Ce qu’on a couvert • L’interface Supplier<T> • L’interface BooleanSupplier • L’interface DoubleSupplier • L’interface IntSupplier Formation Les nouveautés Java 8 alphorm.com™© • L’interface LongSupplier
  • 73. 29/10/2015 73 Consumer Les interfaces fonctionnelles Formation Les nouveautés Java 8 alphorm.com™© Consumer Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 74. 29/10/2015 74 Plan • L’interface Consumer<T> • L’interface DoubleConsumer • L’interface IntConsumer • L’interface LongConsumer Formation Les nouveautés Java 8 alphorm.com™© • L’interface ObjDoubleConsumer<T> • L’interface ObjIntConsumer<T> • L’interface ObjLongConsumer<T>
  • 75. 29/10/2015 75 L’interface Consumer<T> • Interface fonctionnelle consommant des objets T • La méthode fonctionnelle est accept telle que accept(T t) • Travaille par effet de bords • Autre méthode implémentée par défaut Formation Les nouveautés Java 8 alphorm.com™© andThen(Consumer ) : compose la production en chaînant l’autre
  • 76. 29/10/2015 76 L’interface DoubleConsumer • Interface spécialisée pour les double • La méthode fonctionnelle accept(double) ne prend que double Formation Les nouveautés Java 8 alphorm.com™©
  • 77. 29/10/2015 77 L’interface IntConsumer • Interface spécialisée pour les int • La méthode fonctionnelle accept(int) ne prend que int Formation Les nouveautés Java 8 alphorm.com™©
  • 78. 29/10/2015 78 L’interface LongConsumer • Interface spécialisée pour les long • La méthode fonctionnelle accept(long) ne prend que long Formation Les nouveautés Java 8 alphorm.com™©
  • 79. 29/10/2015 79 L’interface ObjDoubleConsumer<T> • Interface fonctionnelle acceptant 2 paramètres • La méthode accept est la méthode fonctionnelle • Avec un paramètre objet T et un double • Est telle que accept(T t, double d) Formation Les nouveautés Java 8 alphorm.com™© • Pas de retour • Travaille par effets de bords
  • 80. 29/10/2015 80 L’interface ObjIntConsumer<T> • Interface fonctionnelle acceptant 2 paramètres • La méthode accept est la méthode fonctionnelle • Avec un paramètre objet T et un int • Est telle que accept(T t, int d) Formation Les nouveautés Java 8 alphorm.com™© • Pas de retour • Travaille par effets de bords
  • 81. 29/10/2015 81 L’interface ObjLongConsumer<T> • Interface fonctionnelle acceptant 2 paramètres • La méthode accept est la méthode fonctionnelle • Avec un paramètre objet T et un long • Est telle que accept(T t, long d) Formation Les nouveautés Java 8 alphorm.com™© • Pas de retour • Travaille par effets de bords
  • 82. 29/10/2015 82 Ce qu’on a couvert • L’interface Consumer<T> • L’interface DoubleConsumer • L’interface IntConsumer • L’interface LongConsumer Formation Les nouveautés Java 8 alphorm.com™© • L’interface ObjDoubleConsumer<T> • L’interface ObjIntConsumer<T> • L’interface ObjLongConsumer<T>
  • 83. 29/10/2015 83 Les annotations Le langage Formation Les nouveautés Java 8 alphorm.com™© Les annotations répétables Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 84. 29/10/2015 84 Plan • La base • Les annotations classiques • Les annotations répétables Formation Les nouveautés Java 8 alphorm.com™©
  • 85. 29/10/2015 85 La base • Une annotation est déclarée avec @interface • Une annotation possède des propriétés • Les propriétés peuvent posséder des valeurs par défaut Formation Les nouveautés Java 8 alphorm.com™©
  • 86. 29/10/2015 86 Les annotations classiques • Une annotation s’applique lors de la déclaration d’une classe, champ, méthode, … • Une annotation peut aussi s’appliquer lors de l’utilisation du type • Une seule annotation est d’un type donné par usage • Les informations véhiculées par l’annotation sont disponibles après la Formation Les nouveautés Java 8 alphorm.com™© • Les informations véhiculées par l’annotation sont disponibles après la génération javadoc aussi • Une annotation peut se voir restreindre à certains usages, et peut être disponible ou pas runtime
  • 87. 29/10/2015 87 Les annotations répétables • Une annotation répétable peut être utilisée plusieurs fois sur le même élément • Pour accéder à cette capacité : Annoter l’annotation avec @Repeatable Déclarer une annotation pour « contenir » l’annotation répétable Formation Les nouveautés Java 8 alphorm.com™© Déclarer une annotation pour « contenir » l’annotation répétable
  • 88. 29/10/2015 88 Ce qu’on a couvert • La base • Les annotations classiques • Les annotations répétables Formation Les nouveautés Java 8 alphorm.com™©
  • 89. 29/10/2015 89 La réflexion sur Le langage Formation Les nouveautés Java 8 alphorm.com™© La réflexion sur paramètres Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 90. 29/10/2015 90 Plan • La réflexion en Java • Les limites de la réflexion • La réflexion sur les paramètres Formation Les nouveautés Java 8 alphorm.com™©
  • 91. 29/10/2015 91 La réflexion en Java • La classe est le descripteur des objets • Les objets connaissent leur classe • Trouver via un objet les caractéristiques de sa classe • Concerne les membres en particuliers Formation Les nouveautés Java 8 alphorm.com™© • Permet : D’invoquer une méthode sans écrire directement l’appel De découvrir les champs d’un objet …
  • 92. 29/10/2015 92 Les limites de la reflexion • Eventuel problème de performance • La perte de contrôle de type lors de la compilation • Si on accède aux membres par leurs noms, problème de refactoring • Jusqu’en Java 8, impossible de trouver les noms des paramètres Formation Les nouveautés Java 8 alphorm.com™©
  • 93. 29/10/2015 93 La réflexion sur les paramètres • En Java8, il est possible de récupérer les noms • Auparavant, il fallait contourner Utiliser les annotations • Ne pas oublier de compiler avec l’otpion javac : -parameters Formation Les nouveautés Java 8 alphorm.com™©
  • 94. 29/10/2015 94 Ce qu’on a couvert • La réflexion en Java • Les limites de la réflexion • La réflexion sur les paramètres Formation Les nouveautés Java 8 alphorm.com™©
  • 95. 29/10/2015 95 Les optional Le langage Formation Les nouveautés Java 8 alphorm.com™© Les optional Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 96. 29/10/2015 96 Plan • Le problème • La classe Optional<T> Formation Les nouveautés Java 8 alphorm.com™©
  • 97. 29/10/2015 97 Le problème • En Java, seules les références peuvent être nulles • Les types primitifs ne supportent pas la valeur nulle • Comment exprimer l’absence de valeur ? • Eviter de déterminer une valeur remarquable Formation Les nouveautés Java 8 alphorm.com™©
  • 98. 29/10/2015 98 La classe Optional<T> • Encapsule une valeur de type T • Cette valeur peut être absente • Méthodes : Retourne la valeur avec get() Formation Les nouveautés Java 8 alphorm.com™© Teste la présence avec isPresent() Construit avec of(T), ofNullable(T) Récupère la valeur avec : orElse(), orElseGet(), orElseThrow()…
  • 99. 29/10/2015 99 Ce qu’on a couvert • Le problème • La classe Optional<T> Formation Les nouveautés Java 8 alphorm.com™©
  • 100. 29/10/2015 100 Les classes java.util.stream Les streams Formation Les nouveautés Java 8 alphorm.com™© Les classes java.util.stream Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 101. 29/10/2015 101 Plan • L’interface BaseStream<> • L’interface Stream<T> • Les interfaces spécialisées • Les interfaces Stream.Builder Formation Les nouveautés Java 8 alphorm.com™©
  • 102. 29/10/2015 102 L’interface BaseStream<> • Interface de base de toutes les interfaces Stream • Les streams sont des séquences d’éléments qui supportent des opérations agrégées • Les méthodes : Fermeture : close() Formation Les nouveautés Java 8 alphorm.com™© Fermeture : close() Parallélisme : parallel(), isParallel() En séquence : sequential() Itération : iterator(), spliterator() Libérer la contrainte d’ordre : unordered()
  • 103. 29/10/2015 103 L’interface Stream<T> • Sous-interface de BaseStream • Manipule des objets Java • Obtenu à partir d’une source (tableau, collection, fonction, canal IO…) • Permet de construire un pipeline, la source n’est consommée que si nécessaire et lors de l’application d’une opération terminale Formation Les nouveautés Java 8 alphorm.com™© nécessaire et lors de l’application d’une opération terminale • Les opérations attendent de interfaces fonctionnelles, non nulles, non interférentes et en général sans état • Un Stream est opéré une seule fois. • Exécution séquentielle ou parallèle
  • 104. 29/10/2015 104 Les interfaces spécialisées • DoubleStream, IntStream, LongStream • Ce sont des spécialisations de Stream pour les primitives • Des méthodes permettent de récupérer des objets au lieu des primitives • Cohérent avec les Double/Int/LongSupplier-Consumer… Formation Les nouveautés Java 8 alphorm.com™© • Méthodes par exemple du DoubleStream : map(DoubleUnaryOperator), mapToInt(DoubleToIntFunction), mapToLong(DoubleToLongFunction), mapToObj(DoubleFunction)
  • 105. 29/10/2015 105 Les interfaces Stream.Builder • Existent aussi sur DoubleStream, IntStream et LongStream • Permet de créer un Stream et de le modifier avant d’appliquer les opérations • Le Stream sera généré lors de l’appel de build() Formation Les nouveautés Java 8 alphorm.com™©
  • 106. 29/10/2015 106 Ce qu’on a couvert • L’interface BaseStream<> • L’interface Stream<T> • Les interfaces spécialisées • Les interfaces Stream.Builder Formation Les nouveautés Java 8 alphorm.com™©
  • 107. 29/10/2015 107 Les opérations sur Streams Les streams Formation Les nouveautés Java 8 alphorm.com™© Les opérations sur Streams Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 108. 29/10/2015 108 Plan • Méthodes intermédiaires • Méthodes terminales • La classe Collectors Formation Les nouveautés Java 8 alphorm.com™©
  • 109. 29/10/2015 109 Méthodes intermédiaires • Méthode distinct : retourne un Stream dont les éléments sont distincts • Méthode filter (Predicate) : … dont les éléments correspondent au prédicat • Méthode flatMap (Function) : … dont les éléments sont remplacés par les éléments du Stream fournit par la fonction Formation Les nouveautés Java 8 alphorm.com™© • Méthode limit (long) : … limité en nombre d’éléments
  • 110. 29/10/2015 110 Méthodes intermédiaires • Méthode map(Function) : … dont les éléments sont l’application de la fonction à chaque élément • Méthode peek(Consumer) : … dont les éléments sont les mêmes, mais la fonction est appliquée à chaque élément • Méthode skip(long) : … dont les éléments sont ceux qui restent lorsqu’on a éliminé les premiers Formation Les nouveautés Java 8 alphorm.com™© lorsqu’on a éliminé les premiers • Méthode sorted() : … dont les éléments sont triés selon l’ordre naturel
  • 111. 29/10/2015 111 Méthodes terminales • Méthode allMatch (Predicate) : retourne vrai si chaque élément vérifie le prédicat • Méthode anyMatch(Precicate) : retourne vrai si l’un des éléments vérifie le prédicat • Méthode findAny() : retourne un Optional qui représente un des éléments du Stream Formation Les nouveautés Java 8 alphorm.com™© éléments du Stream • Méthode findFirst() : retourne un Optional qui représente le premier élément du Stream
  • 112. 29/10/2015 112 Méthodes terminales • Méthode noneMatch(Predicate) : retourne vrai si aucun élément ne vérifie le prédicat • Méthode forEach(Consumer) : applique la fonction sur chacun des éléments • Méthode reduce(BinaryOperator) : réduit les éléments en les accumulant grâce à la fonction fournie, retourne un Optional Formation Les nouveautés Java 8 alphorm.com™© accumulant grâce à la fonction fournie, retourne un Optional
  • 113. 29/10/2015 113 La classe Collectors • Une classe de service dans java.util.stream • Fournit des réductions Formation Les nouveautés Java 8 alphorm.com™© • Méthodes : averaging(), counting(), groupingBy(), joining(), partitioningBy(), summing(), toMap(), toSet()…
  • 114. 29/10/2015 114 Ce qu’on a couvert • Méthodes intermédiaires • Méthodes terminales • La classe Collectors Formation Les nouveautés Java 8 alphorm.com™©
  • 115. 29/10/2015 115 Les Streams parallèles Les streams Formation Les nouveautés Java 8 alphorm.com™© Les Streams parallèles Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 116. 29/10/2015 116 Plan • Obtention de Streams parallèles • Les effets du parallèlisme Formation Les nouveautés Java 8 alphorm.com™©
  • 117. 29/10/2015 117 Obtention de Streams parallèles • Les Streams peuvent être séquentiels ou parallèles • Les Streams parallèles peuvent être traités en parallèles par plusieurs threads • La plupart des méthodes produisent par défaut des Streams séquentiels • Pour créer un Stream parallèle à partir d’une collection, utiliser la Formation Les nouveautés Java 8 alphorm.com™© • Pour créer un Stream parallèle à partir d’une collection, utiliser la méthode parallelStream() • Pour convertir un Stream séquentiel en parallèle, utiliser parallel() • Pour convertir un Stream parallèle en séquentiel, utiliser sequential()
  • 118. 29/10/2015 118 Les effets du parallèlisme • Paralléliser doit être plus rapide, efficace • Mais cette efficacité supposée peut être réduite : par les contraintes d’ordonnancement du Stream, par l’ordre des opérations… • Des accès concurrents peuvent produire des résultats malheureux Formation Les nouveautés Java 8 alphorm.com™©
  • 119. 29/10/2015 119 Ce qu’on a couvert • Obtention de Streams parallèles • Les effets du parallèlisme Formation Les nouveautés Java 8 alphorm.com™©
  • 120. 29/10/2015 120 Les classes de dates Les dates Formation Les nouveautés Java 8 alphorm.com™© Les classes de dates Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 121. 29/10/2015 121 Plan • Les objectifs de l’API Date • Les classes LocalDate et LocalTime • Les classes de zones • Les classes Period et Duration Formation Les nouveautés Java 8 alphorm.com™© • Les chronologies
  • 122. 29/10/2015 122 Les objectifs de l’API Date • Un nouveau package apparaît : java.time • Les classes sont « immutable value », donc pas de problèmes avec le multi threading • Les classes représentent correctement le domaine, donc pas de confusion Formation Les nouveautés Java 8 alphorm.com™© La classe java.util.Date ne possédait pas de zone • Des chronologies différentes de ISO-8601 sont possibles
  • 123. 29/10/2015 123 Les classes LocalDate et LocalTime • Ce sont des classes qui représentent date et heure sur le poste courant • Il existe aussi LocalDateTime • Le contexte de zone n’existe pas • Méthodes de création : now, of, from, parse Formation Les nouveautés Java 8 alphorm.com™©
  • 124. 29/10/2015 124 Les classes LocalDate et LocalTime • La classe la « modification » des données se fait avec with • Les « ajusteurs », certains standards et sinon à écrire soi-même Formation Les nouveautés Java 8 alphorm.com™© • Possibilités de tronquer les infos
  • 125. 29/10/2015 125 Les classes de zones • Une zone peut être représentée par une chaîne de caractères • La classe ZoneId sert à garder cette information Formation Les nouveautés Java 8 alphorm.com™© • ZonedDateTime est une date/heure avec les informations de zone • OffsetDateTime est une date/heure avec l’offset (de zone UTC) • OffsetTime est une heure avec l’offset
  • 126. 29/10/2015 126 Les classes Period et Duration • La classe Period représente une durée en jour-mois-année et non un point dans le temps • La classe Duration représente des durées en heures, etc plus précis que Formation Les nouveautés Java 8 alphorm.com™© • La classe Duration représente des durées en heures, etc plus précis que Period
  • 127. 29/10/2015 127 Les chronologies • Un package java.time.chrono • Une interface Chronology, représentant un système calendaire • Des classes implémentant cette interface : IsoChronology, JapaneseChronology,… • Ce sont des factories pour des ChronoLocalDate (interface) Formation Les nouveautés Java 8 alphorm.com™© • Ce sont des factories pour des ChronoLocalDate (interface) Méthodes dateNow(), dateNow(..), date(…) • Classes implémentant ChronoLocalDate : LocalDate, JapaneseDate,…
  • 128. 29/10/2015 128 Ce qu’on a couvert • Les objectifs de l’API Date • Les classes LocalDate et LocalTime • Les classes de zones • Les classes Period et Duration Formation Les nouveautés Java 8 alphorm.com™© • Les chronologies
  • 129. 29/10/2015 129 La gestion du temps Les dates Formation Les nouveautés Java 8 alphorm.com™© La gestion du temps Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 130. 29/10/2015 130 Plan • La gestion du temps local • La gestion du temps zoné Formation Les nouveautés Java 8 alphorm.com™©
  • 131. 29/10/2015 131 La gestion du temps local • La classe LocalDate Les constantes MAX et MIN • Les méthodes Création de LocalDateTime : atTime, … Getters : getDayOfMonth()… Formation Les nouveautés Java 8 alphorm.com™© Getters : getDayOfMonth()… Informations sur le mois, l’année … Date maintenant Modifications : minus, plus, withXXX
  • 132. 29/10/2015 132 La gestion du temps zoné • La classe ZonedDateTime • Les créateurs of, now, … • Les modificateurs plus, minus, with, … • Temps restant : until Formation Les nouveautés Java 8 alphorm.com™© • Travail sur offset : getOffset()
  • 133. 29/10/2015 133 Ce qu’on a couvert • La gestion du temps local • La gestion du temps zoné Formation Les nouveautés Java 8 alphorm.com™©
  • 134. 29/10/2015 134 Le format date et heure Les dates Formation Les nouveautés Java 8 alphorm.com™© Le format date et heure Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 135. 29/10/2015 135 Plan • Le package java.time.format • La classe DateTimeFormatter • La classe DateTimeFormatterBuilder Formation Les nouveautés Java 8 alphorm.com™©
  • 136. 29/10/2015 136 Le package java.time.format • Fournit des classes pour afficher et parser des dates • La classe DateTimeFormatter est suffisante pour la plupart des cas • Pour les situations complexes, on utilisera DateTimeFormatterBuilder • Les classes du package ne supportent pas des arguments null Formation Les nouveautés Java 8 alphorm.com™©
  • 137. 29/10/2015 137 La classe DateTimeFormatter • Cette classe proposent de formatter des dates en chaînes de caractères ou de lire une chaîne en date • Utilise des constantes prédéfinies • Utilise des motifs prédéfinis • Utilise des styles prédéfinis Formation Les nouveautés Java 8 alphorm.com™© • Utilise des styles prédéfinis
  • 138. 29/10/2015 138 La classe DateTimeFormatterBuilder • Le builder de base des DateTimeFormatter • Il permet de faire apparaître les éléments suivants : Valeur, Fraction, Text OffsetId/Offset, ZoneId, ZoneText ChronologyId, ChronologyText Formation Les nouveautés Java 8 alphorm.com™© ChronologyId, ChronologyText Literal Nested et Optional • Chaque élément peut être arrangé avec des espaces/caractères avant et après
  • 139. 29/10/2015 139 Ce qu’on a couvert • Le package java.time.format • La classe DateTimeFormatter • La classe DateTimeFormatterBuilder Formation Les nouveautés Java 8 alphorm.com™©
  • 140. 29/10/2015 140 Les chronologies Les dates Formation Les nouveautés Java 8 alphorm.com™© Les chronologies Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 141. 29/10/2015 141 Plan • Le package java.time.chrono • Manipuler les chronologies Formation Les nouveautés Java 8 alphorm.com™©
  • 142. 29/10/2015 142 Le package java.time.chrono • Décrit les classes de chronologies • L’interface Chronology : représente un système calendaire • Il est possible d’ajouter de nouveaux calendriers en créant une implémentation Chronology, ChronoLocalDate et Era. • Chronology fonctionne comme une factory Formation Les nouveautés Java 8 alphorm.com™© • Chronology fonctionne comme une factory
  • 143. 29/10/2015 143 Manipuler les chronologies • Trouver les chronologies disponibles • Créer une date : dateNow, date, dateYearDay… • Manipuler des ChronoLocalDate et des ChronoPeriod • Obtenir des ChronoZonedDateTime Formation Les nouveautés Java 8 alphorm.com™©
  • 144. 29/10/2015 144 Ce qu’on a couvert • Le package java.time.chrono • Manipuler les chronologies Formation Les nouveautés Java 8 alphorm.com™©
  • 145. 29/10/2015 145 L’internationalisation Les dates Formation Les nouveautés Java 8 alphorm.com™© L’internationalisation Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 146. 29/10/2015 146 Plan • Les dates selon les chronologies • Les possibilités de DateTimeFormatter Formation Les nouveautés Java 8 alphorm.com™©
  • 147. 29/10/2015 147 Les dates selon les chronologies • Chaque chronologie a sa propre représentation • Un style de date et d’heure FormatStyle (FULL, LONG, MEDIUM, SHORT) • Un style décimal Formation Les nouveautés Java 8 alphorm.com™© DecimalStyle (STANDARD) • Méthode of(Locale) • …
  • 148. 29/10/2015 148 Les possibilités de DateTimeFormatter • Méthodes ofLocalizedDate, Time • Des formatters prédéfinis : BASIC_ISO_DATE, … • Des méthodes de construction : ofPattern(…) « yyyy MM dd » Formation Les nouveautés Java 8 alphorm.com™© Format à découvrir dans la documentation
  • 149. 29/10/2015 149 Ce qu’on a couvert • Les dates selon les chronologies • Les possibilités de DateTimeFormatter Formation Les nouveautés Java 8 alphorm.com™©
  • 150. 29/10/2015 150 Package java.util.concurrent La concurrence Formation Les nouveautés Java 8 alphorm.com™© Package java.util.concurrent Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 151. 29/10/2015 151 Plan • Les nouvelles classes et interfaces • La classe ConcurrentHashMap • Le package java.util.concurrent.atomic • La classe ForkJoinPool Formation Les nouveautés Java 8 alphorm.com™©
  • 152. 29/10/2015 152 Les nouvelles classes et interfaces • CompletableFuture.AsynchronousCompletionTask : marque les tâches crées par les méthodes async • CompletionStage<T> : • CompletableFuture<T> : une Future qui peut être terminée • ConcurrentHashMap.KeySetView<T> : une vue de la map en set Formation Les nouveautés Java 8 alphorm.com™© • ConcurrentHashMap.KeySetView<T> : une vue de la map en set • CountedCompleter<T> : une ForkJoinTask avec une action de terminaison lors de la levée d’un trigger • CompletionException : exception levée lors de l’accomplissement d’une tâche
  • 153. 29/10/2015 153 La classe ConcurrentHashMap • Nouvelles méthodes ajoutées • Dues à la gestion de Streams et l’apparition des lambdas Formation Les nouveautés Java 8 alphorm.com™©
  • 154. 29/10/2015 154 Le package java.util.concurrent.atomic • La classe DoubleAccumulator : maintenir une variable double • La classe DoubleAdder : maintenir une somme initialement à 0 • La classe LongAccumulator • La classe LongAdder Formation Les nouveautés Java 8 alphorm.com™©
  • 155. 29/10/2015 155 La classe ForkJoinPool • Un ajout d’une méthode commonPool() Formation Les nouveautés Java 8 alphorm.com™©
  • 156. 29/10/2015 156 Ce qu’on a couvert • Les nouvelles classes et interfaces • La classe ConcurrentHashMap • Le package java.util.concurrent.atomic • La classe ForkJoinPool Formation Les nouveautés Java 8 alphorm.com™©
  • 157. 29/10/2015 157 La classe StampedLock La concurrence Formation Les nouveautés Java 8 alphorm.com™© La classe StampedLock Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 158. 29/10/2015 158 Plan • La classe StampedLock • Usages de StampedLock Formation Les nouveautés Java 8 alphorm.com™©
  • 159. 29/10/2015 159 La classe StampedLock • Dans le package java.util.concurrent.locks • Un verrou fonctionnant en 3 modes Mode écriture : bloque sur un accès exclusif. Retourne un « stamp » Mode lecture : bloque sur un accès non exclusif Mode lecture optimiste : retourne un « stamp » non null quand le verrou Formation Les nouveautés Java 8 alphorm.com™© Mode lecture optimiste : retourne un « stamp » non null quand le verrou n’est pas en accès exclusif
  • 160. 29/10/2015 160 Usages du StampedLock • Utiles pour le développement de composants thread-safe • Ils ne sont pas réentrants Formation Les nouveautés Java 8 alphorm.com™©
  • 161. 29/10/2015 161 Ce qu’on a couvert • La classe StampedLock • Usages de StampedLock Formation Les nouveautés Java 8 alphorm.com™©
  • 162. 29/10/2015 162 java.net.URLPermission La concurrence Formation Les nouveautés Java 8 alphorm.com™© java.net.URLPermission Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 163. 29/10/2015 163 Plan • Le package java.net • La classe java.net.URLPermission Formation Les nouveautés Java 8 alphorm.com™©
  • 164. 29/10/2015 164 Le package java.net • Package des classes et interfaces utilisées pour les accès réseau • Une section bas niveau Adresses, sockets, interfaces • Une section haut niveau Formation Les nouveautés Java 8 alphorm.com™© URIs, URLs,Connexions
  • 165. 29/10/2015 165 La classe URLPermission • Représente la permission d’accéder à une ressource • Les constructeurs ont besoin Du nom : l’url De l’action : méthode et entêtes Formation Les nouveautés Java 8 alphorm.com™©
  • 166. 29/10/2015 166 Ce qu’on a couvert • Le package java.net • La classe java.net.URLPermission Formation Les nouveautés Java 8 alphorm.com™©
  • 167. 29/10/2015 167 Le tri parallèle Les collections Formation Les nouveautés Java 8 alphorm.com™© Le tri parallèle Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 168. 29/10/2015 168 Plan • La classe Arrays • Différence entre sort() et parallelSort() Formation Les nouveautés Java 8 alphorm.com™©
  • 169. 29/10/2015 169 La classe Arrays • Du package java.util • Contient des méthodes utilitaires pour les tableaux • Contient des méthodes de création de tableaux Formation Les nouveautés Java 8 alphorm.com™©
  • 170. 29/10/2015 170 Différences entre sort() et parallelSort() • La méthode sort s’applique à toute sorte d’éléments • Avec indexes • Avec comparateurs • Le tri en parallèle divise explicitement le tableau en répartissant les morceaux (split) sur des threads différents Formation Les nouveautés Java 8 alphorm.com™© morceaux (split) sur des threads différents
  • 171. 29/10/2015 171 Ce qu’on a couvert • La classe Arrays • Différence entre sort() et parallelSort() Formation Les nouveautés Java 8 alphorm.com™©
  • 172. 29/10/2015 172 Encodage Base64 Les collections Formation Les nouveautés Java 8 alphorm.com™© Encodage Base64 Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 173. 29/10/2015 173 Plan • La classe java.util.Base64 • Usages de l’encodage Formation Les nouveautés Java 8 alphorm.com™©
  • 174. 29/10/2015 174 La classe java.util.Base64 • Constituée de méthodes statiques • Ne pas passer de paramètres null • Les types supportés sont : Basic : utilise l’alphabet de la table 1, aucun ajout Formation Les nouveautés Java 8 alphorm.com™© URL safe : utilise l’alphabet de la table 2, aucun ajout MIME : utilise la table 1, ajout de rn • Méthode getEncoder(), getDecoder()…
  • 175. 29/10/2015 175 Usages de l’encodage • Base64 est un codage de l’information • Défini comme encodage MIME • Parce que les protocoles ont été prévus pour transmettre des messages en texte seulement • Provoque en général une augmentation du volume des données Formation Les nouveautés Java 8 alphorm.com™© • Provoque en général une augmentation du volume des données
  • 176. 29/10/2015 176 Ce qu’on a couvert • La classe java.util.Base64 • Usages de l’encodage Formation Les nouveautés Java 8 alphorm.com™©
  • 177. 29/10/2015 177 L’arithmétique non signée Les collections Formation Les nouveautés Java 8 alphorm.com™© L’arithmétique non signée Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 178. 29/10/2015 178 Plan • Types signés et non-signés • Les méthodes de Integer et Long Formation Les nouveautés Java 8 alphorm.com™©
  • 179. 29/10/2015 179 Types signés et non-signés • Il n’existe pas de types non-signés en Java • Parfois de la confusion peut s’introduire dans la manipulation • Il faut faire attention : Lors des opérations portées sur les variables Formation Les nouveautés Java 8 alphorm.com™© Lors de l’affichage
  • 180. 29/10/2015 180 Les méthodes de Integer et Long • Méthodes qui manipulent des données non signées • La méthode compareUnsigned • La méthode divideUnsigned • Les méthodes parseUnsignedInt Formation Les nouveautés Java 8 alphorm.com™© • La méthode remainderUnsigned • La méthode toUnsignedLong • Les méthodes toUnsignedString
  • 181. 29/10/2015 181 Ce qu’on a couvert • Types signés et non-signés • Les méthodes de Integer et Long Formation Les nouveautés Java 8 alphorm.com™©
  • 182. 29/10/2015 182 La ligne de commande Les outils Formation Les nouveautés Java 8 alphorm.com™© La ligne de commande Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 183. 29/10/2015 183 Plan • L’outil jjs • L’outil jdeps • L’outil javac -h Formation Les nouveautés Java 8 alphorm.com™©
  • 184. 29/10/2015 184 L’outil jjs • Moteur javascript Nashorn • Commande jjs en ligne de commande • Trouvée sous bin • Interpréteur encapsulable dans les applications Java Formation Les nouveautés Java 8 alphorm.com™©
  • 185. 29/10/2015 185 L’outil jdeps • Un outil pour analyser les dépendances entre les classes • Se lance sur une classe et recherche les dépendances à partir de celle-ci • Options disponibles Formation Les nouveautés Java 8 alphorm.com™©
  • 186. 29/10/2015 186 L’outil javac -h • Génère les entêtes natifs • Plus besoin de passer par javah • Les entêtes sont générés pour toute classe qui possède des méthode native ou qui utilise l’annotation Native Formation Les nouveautés Java 8 alphorm.com™©
  • 187. 29/10/2015 187 Ce qu’on a couvert • L’outil jjs • L’outil jdeps • L’outil javac -h Formation Les nouveautés Java 8 alphorm.com™©
  • 188. 29/10/2015 188 Nashorn Les outils Formation Les nouveautés Java 8 alphorm.com™© Nashorn Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 189. 29/10/2015 189 Plan • Nouveau moteur javascript • Extensions • Encapsulable Formation Les nouveautés Java 8 alphorm.com™©
  • 190. 29/10/2015 190 Nouveau moteur javascript • En Java 7, un moteur basé sur Rhino • Mieux conforme aux spécifications normalisées ECMA • Meilleure performance • Mode standalone Formation Les nouveautés Java 8 alphorm.com™© • Mode encapsulé dans une application Java • Javascript peut appeler du Java • Java peut appeler du javascript
  • 191. 29/10/2015 191 Extensions • Les applications JavaFX sont exécutables comme scripts • Le mode strict du Javascript est activable • Le classpath peut être modifié pour la JVM • Il existe un mode scripting Formation Les nouveautés Java 8 alphorm.com™©
  • 192. 29/10/2015 192 Encapsulable • L’interaction avec Java devient plus simple • Une application Java peut exécuter du Javascript de façon simple Formation Les nouveautés Java 8 alphorm.com™©
  • 193. 29/10/2015 193 Ce qu’on a couvert • Nouveau moteur javascript • Extensions • Encapsulable Formation Les nouveautés Java 8 alphorm.com™©
  • 194. 29/10/2015 194 Les profils compacts Les outils Formation Les nouveautés Java 8 alphorm.com™© Les profils compacts Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 195. 29/10/2015 195 Plan • Définition et intérêt • Composition des profils Formation Les nouveautés Java 8 alphorm.com™©
  • 196. 29/10/2015 196 Définition et intérêt • Réduire l’empreinte mémoire • Pour les applications qui n’ont pas besoin de toute la plateforme • Option javac –profile • 3 profils supportés Formation Les nouveautés Java 8 alphorm.com™©
  • 197. 29/10/2015 197 Composition des profils • Chaque profils apporte des éléments Formation Les nouveautés Java 8 alphorm.com™©
  • 198. 29/10/2015 198 Ce qu’on a couvert • Définition et intérêt • Composition des profils Formation Les nouveautés Java 8 alphorm.com™©
  • 199. 29/10/2015 199 Le thème Modena JavaFX Formation Les nouveautés Java 8 alphorm.com™© Le thème Modena Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 200. 29/10/2015 200 Plan • Un nouveau thème • Nouveaux contrôles Formation Les nouveautés Java 8 alphorm.com™©
  • 201. 29/10/2015 201 Un nouveau thème • Remplace Caspian Formation Les nouveautés Java 8 alphorm.com™©
  • 202. 29/10/2015 202 Nouveaux contrôles Formation Les nouveautés Java 8 alphorm.com™©
  • 203. 29/10/2015 203 Ce qu’on a couvert • Un nouveau thème • Nouveaux contrôles Formation Les nouveautés Java 8 alphorm.com™©
  • 204. 29/10/2015 204 Encapsulation de Swing JavaFX Formation Les nouveautés Java 8 alphorm.com™© Encapsulation de Swing dans JavaFX Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 205. 29/10/2015 205 Plan • La classe SwingNode • Encapsuler un SwingNode Formation Les nouveautés Java 8 alphorm.com™©
  • 206. 29/10/2015 206 La classe SwingNode • Hérite de Node • Possède un constructeur par défaut • Permet d’encapsuler des composants Swing • Peut fournir le composant Swing encapsulé par getComponent() Formation Les nouveautés Java 8 alphorm.com™©
  • 207. 29/10/2015 207 Encapsuler un composant Swing • Créer un objet SwingNode • Ajouter ce nœud au contenu de la scène Formation Les nouveautés Java 8 alphorm.com™©
  • 208. 29/10/2015 208 Ce qu’on a couvert • La classe SwingNode • Encapsuler un SwingNode Formation Les nouveautés Java 8 alphorm.com™©
  • 209. 29/10/2015 209 Le contrôle WebView JavaFX Formation Les nouveautés Java 8 alphorm.com™© Le contrôle WebView Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 210. 29/10/2015 210 Plan • La classe WebView • Interaction Java/Javascript Formation Les nouveautés Java 8 alphorm.com™©
  • 211. 29/10/2015 211 La classe WebView • Classe du package javafx.scene.web • Gère un WebEngine Formation Les nouveautés Java 8 alphorm.com™©
  • 212. 29/10/2015 212 Interaction Java/Javascript • Une application web peut communiquer avec l’application JavaFX • Le moteur webengine exécute des scripts • JSObject permet au contraire de déclencher du code Java à partir de JavaScript Formation Les nouveautés Java 8 alphorm.com™©
  • 213. 29/10/2015 213 Ce qu’on a couvert • La classe WebView • Interaction Java/Javascript Formation Les nouveautés Java 8 alphorm.com™©
  • 214. 29/10/2015 214 Conclusion Formation Java8 Formation Les nouveautés Java 8 alphorm.com™© Conclusion Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 215. 29/10/2015 215 Plan de la formation • La nouvelle syntaxe • Les interfaces fonctionnelles • Le langage • Les streams • Les collections • Les outils • JavaFX Formation Les nouveautés Java 8 alphorm.com™© • Les dates et l’internationalisation • Concurrence et réseau
  • 216. 29/10/2015 216 Les autres formations dév sur Alphorm Formation Les nouveautés Java 8 alphorm.com™©
  • 217. 29/10/2015 217 Pour continuer … • La formation Java fondamentaux … • La formation Java avancée … • La formation Android … Formation Les nouveautés Java 8 alphorm.com™©
  • 218. 29/10/2015 218 Merci d’avoir suivi cette formation, Formation Les nouveautés Java 8 alphorm.com™© rendez-vous pour la suite !