Quelles sont les nouvelles fonctionnalités de Java 8 ?

Nouvelles fonctionnalités de JavaSE 8

Catalogue
1, expression lambda
2, Stream api
3, javaFx
4, nouvelle api date et heure
5, amélioration de la concurrence
6, Nashorn
7, autres améliorations
1, expression lambda

1.1. Qu'est-ce qu'une expression Lambda ? Pourquoi utiliser des expressions lambda ?
Les expressions lambda permettent aux développeurs d'écrire des "fragments de calcul" concis et de les transmettre à un autre code. Les fonctions sont autorisées en tant que paramètres d'une méthode (les fonctions sont passées en tant que paramètres dans les méthodes). L'utilisation d'expressions Lambda peut rendre le code plus concis et compact.

1.2 Le format de l'expression lambda : paramètre -> une expression
Fonctionnalités importantes :
Déclaration de type facultative : Pas besoin de déclarer le type du paramètre, le compilateur peut identifier uniformément la valeur du paramètre.
Parenthèses de paramètre facultatives : un paramètre n'a pas besoin de définir des parenthèses, mais plusieurs paramètres doivent définir des parenthèses.
 Accolades facultatives : si le corps contient une instruction, les accolades ne sont pas nécessaires.
Mot-clé de retour facultatif : si le corps n'a qu'une seule valeur de retour d'expression, le compilateur renverra automatiquement la valeur, et les accolades doivent indiquer que l'expression renvoie une valeur.

1.3. Une expression lambda comprend trois parties :
 Un morceau de code
 Des paramètres
 Des variables libres, où "libre" fait référence aux variables qui ne sont pas des paramètres et ne sont pas définies dans le code. Les blocs de code contenant des variables libres sont appelés « fermetures ».
Remarque :
les expressions lambda sont principalement utilisées pour définir des interfaces de type méthode qui sont exécutées en ligne, par exemple, une interface de méthode simple.
Les expressions lambda éliminent le besoin de méthodes anonymes et offrent à Java des capacités de programmation fonctionnelles simples mais puissantes.

2.1, Stream API
L'API Java 8 ajoute une nouvelle abstraction appelée stream Stream, qui vous permet de traiter les données de manière déclarative. Stream (stream) est une file d'attente d'éléments provenant d'une source de données et prend en charge les opérations d'agrégation. Considérez la collection d'éléments à traiter comme un flux, qui est transmis dans un pipeline et peut être traité sur les nœuds du pipeline, comme le filtrage, le tri, l'agrégation, etc. Le flux d'éléments est traité par des opérations intermédiaires dans le pipeline, et enfin l'opération finale obtient les résultats du traitement précédent.

L'interface de collection a deux méthodes pour générer des flux :
stream() - Crée un flux série pour une collection.
parallelStream() - Crée un flux parallèle pour une collection.

API communes

filter()  //过滤
map()  // 将流地元素映射成另一个类型
distinct()  // 去除流中重复地元素
sorted()  // 对元素进行排序
forEach()  // 对流中地每个元素执行某个操作
peek()  // 与forEach方法类似,但该方法会返回一个新的流,forEach无返回。
limit()  // 截取流中地前几个元素
skip()  // 调高流中前面几个元素
toArray() // 将流转换为数组
reduce() // 归约,将每个元素组合起来形成一个新的值
collect()  // 对流中元素汇总
anyMatch() // 匹配流中地元素,类似方法有 allMatch() noneMatch()
findFirst() // 查找第一个元素
findAny() //类似findfirst()
max()  // 求最大值
min()  // 求最小值
count()  // 求总数

Stream fournit une nouvelle méthode 'forEach' pour itérer sur chaque élément du flux.
La classe Collectors implémente de nombreuses opérations de réduction, telles que la conversion de flux en collections et l'agrégation d'éléments.

Exemple d'utilisation :
1) Créer un flux.
2) En une ou plusieurs étapes, spécifier les opérations intermédiaires qui transforment le Stream initial en un autre Stream.
3) Utilisez une opération de terminaison pour produire un résultat qui force l'opération différée qui la précède à s'exécuter immédiatement. Après cela, le flux ne sera plus utilisé.

insérez la description de l'image ici

1.3 JavaFX
En 2007, Sun a introduit une nouvelle technologie, JavaFX, qui en fait un concurrent de Flash, qui s'exécute sur Java VM, mais possède son propre langage de programmation appelé JavaFX Script. Le langage est optimisé spécifiquement pour l'animation et d'autres effets. En 2011, Oracle a publié une nouvelle version, JavaFX2.0, qui fournit l'API Java et n'a plus besoin d'être écrite dans un autre langage. Dans la version Java7 update6, JavaFX2.2 a été lié à JDK et JRE, et le numéro de version de JavaFX est cohérent avec Java depuis lors.

1.4 Nouvelles API de date et d'heure
Java 8 fournit de nombreuses nouvelles API sous le package java.time.
Deux API plus importantes :
Local (local) − simplifie le traitement de la date et de l'heure, et il n'y a pas de problème de fuseau horaire.
Zoned - Gère les dates/heures avec le fuseau horaire spécifié.
Le nouveau package java.time couvre toutes les opérations de traitement des dates, heures, date/heures, fuseaux horaires, instants, pendant et horloges.

1.5 Amélioration de la concurrence
 Visant les opérations de valeur atomique, il fournit des API de LongAdder et LongAccumulator.
Améliorations de ConcurrentHashMap : des expressions lambda sont fournies pour les opérations atomiques, les opérations par lots, etc.
Arrays fournit des opérations de tableau parallèles.
 L'API CompletableFuture est fournie pour un fonctionnement multithread.

1.6 Nashorn
Java est livré avec un interpréteur javascript Rhino (rhino), qui est un interpréteur JavaScript open source écrit en Java. Rhino fonctionne plutôt bien, mais la vitesse est moyenne.

Après Java8, un interpréteur Javascript plus efficace est créé à l'aide de nouvelles instructions JVM conçues pour les langages dynamiques. Et c'est ainsi que le projet Nashorn est né. Nashorn est très rapide et vous permet d'intégrer Java et Javascript sur une machine virtuelle hautement optimisée. Il a également une excellente compatibilité avec la norme ECMAScript pour Javascript.

1.7 Autres améliorations

String : String ajoute la méthode de jointure.
Classes Number : Short, Integer, Long, Float, Double fournissent sum, max, min à utiliser comme fonctions d'agrégation dans les opérations de flux. La classe Integer prend en charge les calculs de données non signées. Par exemple, le Byte précédent représentait la plage de -128 à 127. Vous pouvez maintenant appeler la méthode statique Byte.toUnsignedInt(b) pour obtenir une valeur comprise entre 0 et 255.
 Nouvelles fonctions mathématiques : addExact, multiplieExact, etc., floorMod.
Collection : Add removeIf : Toutes les valeurs correspondantes seront supprimées. Ajout de la méthode replaceAll. L'interface Iterator ajoute forEachRemaining : la possibilité de passer les éléments d'itération restants à une fonction. L'interface Comparator ajoute de nombreuses méthodes utiles, comparant : Accepte une fonction "d'extraction de clé" qui mappe un type T à un type comparable (tel que String).
Fichiers : Fichiers fournit des méthodes pratiques pour lire les lignes de fichiers et accéder aux entrées de répertoire à l'aide de flux. Fournit un encodage/décodage Base64 officiel.
Annotations : Fournit des annotations répétables et des annotations pouvant être utilisées pour les types.
Autres : la classe d'outils Objects a été ajoutée et java.util.Logger a ajouté la prise en charge de lambda pour retarder les messages. Les expressions régulières ajoutent des groupes de capture nommés. JDBC est mis à niveau vers la version 4.2 - Les classes Date, Time et Timestamp du package java.sql fournissent certaines méthodes qui peuvent être converties vers et depuis les classes LocalDate, LocalTime et LocalDateTime correspondantes dans le package java.time.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_40307206/article/details/107644526
conseillé
Classement