Tutoriels sur des compléments JAVA
- Compléter les connaissances avec des concepts additionnels du langage JAVA utilisés dans l'ossature de départ de l'application de tchat multiclient multiserveur.
- Étudier les idiomes JAVA mis en œuvre dans l'ossature de départ de l'application répartie.
nous serons deux intervenants lors des premiers TP utilisant
l'ossature de départ. Donc, pas d'inquiètude : vous
aurez de l'aide en séance pour découvrir le code ; mais,
pour en bénificier pleinement, vous devez étudier
attentivement les tutoriels pointés par cette page !
Première liste de concepts (≈ 1h45)
Bloc de code static
(≈ 10mn)
- Lien vers le tutoriel : Initializing Fields, qui inclut une présentation du concept de bloc de code static.
Classes anonymes
(≈ 15mn)
- Lien vers le tutoriel sur le concept de classe anonyme : « Anonymous Classes »
Interface avec constantes et méhodes par défaut
(≈ 20mn)
-
Liens vers les deux pages pour la notion de méthode par
défaut :
- Evolving Interfaces,
- Default Methods (jusqu'à la section « Integrating Default Methods into Existing Libraries », cette dernière section de la page étant exclue de l'étude).
Classes paramétrées, Generics
(≈ 1h)
-
Nous décomposons l'étude du chapitre
« Lesson: Generics » en
trois composantes à étudier en séquence :
- Introduction + Why use generics + Generic types (≈ 15mn)
- Generic methods + Bounded type parameters + Generics, inheritance, and subtypes (≈ 20mn)
-
Type inference
+ Wildcards avec ensuite
uniquement la page
Upper bounded wildcards
(≈ 20mn)
- Le contenu de la suite de la section Wildcards est plus difficile et ne sera pas utilisé dans l'ossature de départ que nous vous proposons.
Seconde liste de concepts (≥ 3h)
Programmation fonctionnelle avec les Lambda expressions et les Streams
(≥ 2h)
-
L'objectif de JAVA sur ce sujet est le suivant :
« offer first-class language support for defining,
passing, and storing blocks of code for later
execution. » La fonction (au sens mathématique,
c'est-à-dire sans effet de bord) devient donc
un objet
de première classe : une méthode peut par exemple
prendre en paramètre une fonction
(cf. fonction
d'ordre supérieur). C'est l'orientation fonctionnelle de
la programmation, complètement absente dans JAVA avant la
version 8. Nous proposons d'étudier le suje en deux
temps : les lambda expressions puis le cas
d'utilisation le plus fréquent avec la manipulation des
collections avec les Streams.
-
Lien vers le tutoriel introduisant les Lambda
expressions, en deux parties :
- Java 8: Lambdas, Part 1 (≈ 50mn). Ne vous attardez pas sur les explications autour des classes imbriquées (en anglais, inner classes), que nous n'utilisons pas dans l'ossature que vous utiliserez.
- Java 8: Lambdas, Part 2 (≈ 50mn)
- Lien vers la page Javadoc du paquetage java.util.stream qui présente l'utilisation des Streams : java.util.stream (≈ 20mn)
-
Lien vers le tutoriel introduisant les Lambda
expressions, en deux parties :
- Pour lire le code de l'ossature fournie, les tutoriels précédents suffisent. Pour écrire des lambda expressions et utiliser les streams, le site qui suit constitue un manuel de référence intéressant en ce qui concerne la terminologie, les définitions, la syntaxe et des exemples :
Gestion des références null avec la classe Optional
(≈ 45mn)
-
Similairement à d'autres langages comme Groovy ou Scala,
JAVA propose depuis la version 8 des idiomes pour
rendre explicite la possibilité qu'une référence puisse
être null et ainsi alerter le programmeur pour
qu'il evite le déréférencement dans ce cas.
- Lien vers le tutoriel « Tired of Null Pointer Exceptions? Consider Using Java SE 8's Optional! » (≈ 45mn)
- Lien vers le Javadoc de la classe java.util.Optional, dans laquelle vous trouvez des lambda expressions (≈ 10mn)
- (Optionnel) Pour votre culture générale, conférence de C.A.R. Hoare, qui en 1965 a introduit le concept de « référence null », ce qu'il considère maintenant comme une erreur : « Null References: The Billion Dollar Mistake » (≈ 1h)
$Date: 2018-05-03 08:43:13 +0200 (jeu. 03 mai 2018) $