Depuis qu'Oracle a annoncé vouloir accélérer le développement de Java, on a connu trois nouvelles versions du JDK en l'espace d'un an seulement (une nouvelle release tous les six mois). Cette nouvelle cadence de release peut-être angoissante lorsqu'on est habitué à avoir une nouvelle version de Java tous les trois ans. article a pour objectif de lister les principales nouveautés entre les JDK 8 et 11, suivis de conseils pour migrer votre application à la dernière version de Java. Support des différentes versions
Oracle assure sortir une version bénéficiant du LTS () tous les trois ans, pour une durée de trois ans. Ainsi, le support commercial de Java 8 (qui date de mars 2014, déjà) va se terminer en janvier 2019 (décembre 2020 pour le non commercial et septembre 2022 pour OpenJDK). Java 11 étant la nouvelle version LTS (jusqu'à septembre 2022 pour OpenJDK, Oracle n'ayant pas encore annoncé de date), il est donc temps de migrer! Les nouveautés depuis Java 8
Java 9
Jigsaw, le système modulaire
Probablement la plus grosse nouveauté de Java 9, Jigsaw a pour objectif de rendre modulaire votre application.
Java 8 Nouveautés 1
Durée (recommandée): 2 jours Description
Java 8 n'est pas une simple mise à jour de Java 7. Java 8 modifie profondément la façon de concevoir et développer les applications, et impacte fortement les API existantes. Cette formation vous permettra d'appréhender et de pratiquer les nouveautés de la version 8 de Java SE. Vous découvrirez:
les nouveautés syntaxiques: lambda expressions, method references, default methods...,
les nouvelles API: stream, date-time,...
et les nouveaux outils: Nashorn engine, compact profile,...
Public concerné
Ce cours s'adresse aux développeurs Java souhaitant se familiariser avec les nouveautés de Java SE 8 tant au niveau syntaxe qu'au niveau des APIs.
Les Nouveautés De Java 8
C'est plus facile qu'une expression lambda. Chaque fois que vous utilisez une expression lambda pour simplement référencer une méthode, vous pouvez remplacer votre expression lambda par une référence de méthode. Interface fonctionnelle Une interface qui ne contient qu'une seule méthode abstraite est appelée interface fonctionnelle. Il peut avoir un certain nombre de méthodes par défaut et statiques. Les interfaces fonctionnelles sont également connues sous le nom de Single Abstract Method Interfaces (SAM Interfaces). Optional Java a introduit une nouvelle classe Optional dans Java 8. Il est utilisée pour traiter l'exception NullPointerException dans un code Java. Nous devons importer le package pour utiliser cette classe. Il fournit des méthodes pour vérifier la présence d'une valeur pour une variable particulière. forEach Java fournit une nouvelle méthode forEach() pour itérer les éléments. Il est défini dans les interfaces Iterable et Stream. Il s'agit d'une méthode par défaut définie dans l'interface Iterable.
Java 8 Nouveautés 2014
Une nouvelle façon de concaténer des String fait également son apparition avec l'API StringJoiner. Elle permet de réaliser des concaténations avancées avec la possibilité d'ajouter des chaînes de caractères au début et à la fin de la String. Exemple d'utilisation de StringJoiner:
String s = new StringJoiner ( "/", "Devoxx France 2014 débute le ", " à Paris"). add ( "16"). add ( "04"). add ( "2014"). toString ();
println ( s);
Une méthode statique « join » de String permet maintenant de concaténer des chaînes de caractères. IV. I/O ▲
Java 8 NIO est construit sur l'API NIO de Java 7. La plupart des ajouts permettent d'obtenir un à partir d'un fichier ou d'un InputStream. Ce Stream implémente l'interface AutoCloseable et peut donc utiliser le try-with-resources introduit en Java 7 et permettant la gestion automatique des ressources. L'exemple ci-dessous permet d'afficher chaque ligne d'un fichier:
try ( Stream lines = Files. lines ( path, UTF_8) {
lines. onClose (() -> println ( "done")).
Java 8 Nouveautés 2017
forEach ();}
Il est ainsi possible de streamer les lignes d'un fichier (), les fichiers d'un répertoire (), mais aussi de ses sous-répertoires (). V. Collection ▲
Les interfaces Collection, List et Iterable profitent d'un grand nombre d'ajouts de nouvelles méthodes. La méthode forEach() permet d'itérer sur chaque élément et prend un consumer. Attention, cette méthode ne fonctionne pas avec les tableaux. On trouve également des méthodes de modifications removeIf(), replaceAll() et sort(). Ici un exemple de suppression d'éléments avec un prédicat:
Collection < String > strings = Arrays. asList ( "one", "two", "three", "four");
Collection < String > list = new ArrayList <>( strings);
boolean b = list. removeIf ( s -> s. length () > 4);
list. forEach ()
L'interface Map n'a pas été oubliée avec l'ajout de plusieurs méthodes. Elles ont pour but de faciliter la manipulation des tables de hachage:
rEach() itère sur chaque élément;
place() remplace une valeur avec sa clé;
placeAll() remplace toutes les valeurs en utilisant une Lambda expression;
Map.
Le but premier est de réduire la taille des applications en n'embarquant que les dépendances nécessaires, afin de déployer le logiciel sur des environnements où l'espace de stockage peut coûter cher, comme l'IoT ou le cloud.