Java 10 nouvelles fonctionnalités les plus explications conviviales | programme de travail

Auteur | lire le code, les blogueurs RPSC

Photo de couverture | RPSC télécharger à partir VCG

Produit | Blog RPSC

Depuis le début de Java 9, Oracle a ajusté la version Java de la stratégie de libération, n'est plus une grande version de N ans avant, remplacée par une version plus petite d'une durée de six mois, trois ans une grande version, ce qui permettrait à la dernière version de Java changement rapide sur la ligne tandis que la petite version des cycles de maintenance avant la prochaine version, les grandes versions de la période de maintenance est de 3 ans. 10 est une telle petite version, car les nouvelles fonctionnalités avant la version future de Java de base comprendront, ils apportent encore 10 pour changer l'écriture Java seule au sujet.

JEP 322 - basé sur le numéro de version du temps

Comme on le voit ci-dessus, Java ajusté la stratégie de libération, afin d'adapter à cette façon d'enregistrer le rythme de libération, qui varie ainsi que le numéro de version Java.

La nouvelle version du modèle est: ... $ FEATURE $ INTÉRIMAIRE $ MISE À JOUR PATCH $

  • $ FONCTION: Sur la base de la version, tels que Java 1010.

  • $ INTÉRIMAIRE: Lorsque des correctifs et des améliorations + 1, la valeur par défaut est 0.

  • 1 Au cours des mises à jour compatibles, de nouvelles fonctionnalités de sécurité à régler les problèmes: MISE À JOUR $.

  • $ PATCH: +1 lorsque des problèmes particuliers fixés.

Consultez votre version Java 10.

$ Java -version java version "10.0.1" 17/04/2018 Java (TM) SE Runtime Environment 18.3 (build 10.0.1 + 10) Java HotSpot (TM) 64-Bit serveur VM 18.3 (build 10.0.1 + 10, le mode mixte)

JEP 286 - inférence de type local

JEP 286 propositions pour faire de Java une augmentation de la fonction d'inférence de type local (type local-variable Inference), ce qui rend Java peut être comme auto JS var ou d'autres langues dans le même type de données peuvent être automatiquement déduites. Ceci est en fait juste un nouveau sucre syntaxique, le fond n'a pas changé au moment de la compilation a été mis en béton types de données var, mais ce codage peut être réduite.

Vous pouvez utiliser cette syntaxe comme le var suivant.

var hashmap = new HashMap < String, String > ; hashMap.put ( "WeChat", "wn8398"); string var = "bonjour java 10"; flux var = Stream.of (1, 2, 3, 4); Liste var = new ArrayList < chaîne > ;

Si vous décompiler le code compilé, vous trouverez toujours l'extrait de code familier.

HashMap < String, String >  hashmap = new HashMap; hashMap.put ( "WeChat", "wn8398"); string String = "bonjour java 10"; ruisseau < entier >  flux = Stream.of (1, 2, 3, 4); ArrayList < chaîne >  liste = new ArrayList;

var peut sembler facile, en fait, il y a beaucoup de restrictions, le var officiel mis en place ne peut être utilisé dans les situations suivantes.

  • Les variables locales avec l'initialisation du programme uniquement.

  • pour le renforcement ou pour la boucle de circulation.

  • pour instruction de boucle.

Démontrer les trois utilisations suivantes.

public static void testVar { // boîtier 1, aucune erreur d'initialisation // liste var; Liste var = List.of (1, 2, 3, 4); // Cas n ° 2 pour (nombre entier var: list) { System.out.println (nombre entier); } // Cas n ° 3 for (var i = 0; i <  list.size; i ++) { System.out.println (list.get (i)); } }

Bien que l'utilisation de la scène var ajouté beaucoup de restrictions, mais l'utilisation réelle vous devez toujours faire attention, tout comme le code ci-dessous, vous ne pouvez pas voir le résultat d'un type de données.

requête var = "xxx"; var result = dbUtil.executeQuery (requête);

JEP 317 - un compilateur JIT Java (expérimental)

Cette fonction permet la combinaison de Java 10 utilisé sous Linux / x64 compilateur JIT plate-forme basée développement Java Graal, c'est un compilateur JIT expérimental, certaines personnes disent que c'est Java 10 a introduit le plus futuriste. En fait, Java 9 a été introduit Graal, il apporte en Java AOT (Ahead Of Time) compilation, prend également en charge plusieurs langues, comme Js, Python, Ruby, R, et l'autre basé sur JVM (comme Java, Kotlin ) et basé sur LLVM (tels que C, C ++) langue.

Peut vouloir graal passer à l'aide des paramètres suivants jvm.

-XX: + UnlockExperimentalVMOptions -XX: + UseJVMCICompiler

Il y a une chose que je trouve très intéressant, regardez ce tableau.

Ceci est très intéressant, est écrit en Graal Java, écrit compilateur Java, puis utilisé pour compiler le code Java en code machine.

JEP 310 - Partage de données de classe

Il est nécessaire de charger la classe d'étape en mémoire le début JVM, mais s'il y a pot multiple, un pot de la première vitesse de la charge est la plus lente. Cela prolonge la heure de début du programme, afin de réduire ce temps, Java 10 introduit le mécanisme de partage de données de classe d'application (CDS), il peut vous mettre voulez les classes d'actions partagées entre les programmes à partager entre les différents processus Java cette classe est la classe pour réduire l'espace occupé et un chargement plus rapide.

JEP 307 - G1 plein parallèle GC

Dès Java 9 temps en temps ont été mis en place le garbage collector G1, de nombreux avantages de G1. Dans Java 10 encore fait un petit ajustement lorsque G1 threads simultanés ne peuvent pas recueillir l'achèvement rapide du GC plein, il passera automatiquement au collecteur parallèle, ce qui peut réduire le taux de GC dans le pire des cas.

JEP 314 - extension de balise de langue Unicode

Cette proposition permet d'obtenir une plus longues JDK dernières normes de LDML spécifiées.

La principale augmentation des quelques méthodes d'extension suivantes.

java.time.temporal.WeekFields :: de java.util.Calendar :: {getFirstDayOfWeek, getMinimalDaysInWeek} java.util.Currency :: getInstance java.util.Locale :: getDisplayName java.util.spi.LocaleNameProvider java.text.DateFormat :: get * instance java.text.DateFormatSymbols :: getInstance java.text.DecimalFormatSymbols :: getInstance java.text.NumberFormat :: get * instance java.time.format.DateTimeFormatter :: localizedBy java.time.format.DateTimeFormatterBuilder :: getLocalizedDateTimePattern java.time.format.DecimalStyle :: de

Essayez.

Devise chinaCurrency = Currency.getInstance (Locale.CHINA); Devise devises américaines = Currency.getInstance (Locale.US); System.out.println ( "monnaie locale:" + chinaCurrency); System.out.println ( "monnaie américaine :." + devises américaines); Chaîne displayName = Locale.getDefault.getDisplayName; Chaîne displayLanguage = Locale.getDefault.getDisplayLanguage; Chaîne displayCountry = Locale.getDefault.getDisplayCountry; System.out.println ( "nom local:" + displayName); System.out.println ( "langue locale:" + displayLanguage); System.out.println ( "État local:" + displayCountry); int firstDayOfWeek = Calendar.getInstance.getFirstDayOfWeek; System.out.println ( "journée locale de la semaine:" + firstDayOfWeek);

Sortie.

Monnaie locale: CNY devise américaine :. USD Nom local: Chinois (Chine) langue locale: chinoise Pays local: Chine jour locale de la semaine: 1

mise à jour de l'API

Java 10 supprimé certaines API, a également ajouté quelques méthodes pratiques. Par exemple, vous pouvez obtenir une copie par Collection.copyOf collections immuables, même si les changements d'éléments de collection originales ne seront pas affectés.

Liste var = new ArrayList < chaîne > ; list.add ( "WeChat"); list.add ( "wn8398"); liste < chaîne >  CopyList = List.copyOf (liste); list.add ( "test"); System.out.println (CopyList); // résultat //

En option ajoute également une nouvelle méthode orElseThrow. L'appel de cette méthode peut également obtenir l'option en valeur, mais si la valeur est, il lancera une exception.

Toujours dans la dernière collecte de données de flux, la collecte peut être spécifié directement collectionneurs collectés set immuables comme celui-ci.

list.stream.collect (Collectors.toUnmodifiableList); list.stream.collect (Collectors.toUnmodifiableSet);

autres mises à jour

contenu Java mise à jour de plus de 10 de ceux-ci, juste au-dessus dresse la liste commune et les nouvelles fonctionnalités les plus intéressantes. Il y a des mises à jour telles que:

  • JEP 312: Discussion locale Handshakes, les fonctions internes JVM, les performances JVM peuvent être améliorées.

  • JEP 313: outil javah supprimé, a déclaré à supprimer, en fait, les caractéristiques sont déjà inclus dans le 8 javac Java.

  • JEP 316: soit le segment de mémoire JVM peut être allouée dans le dispositif de stockage de secours (par exemple, NV-DIMM), sans changer le code.

  • JEP 319: fournit un ensemble par défaut de certificat d'autorité de certification racine (CA) dans le JDK.

Articles cas ont été téléchargés sur Github: niumoo / jdk-fonction

Cet article blogueur RPSC « codes non lus » articles originaux, RPSC version officielle autorisée.

Adresse originale: https: //blog.csdn.net/u013735734/article/details/104510202

Comment vision rationnelle du taux 5G jusqu'à?
Précédent
Sous épidémie ville fermée, voir la chaîne d'immeubles de bureaux distribués de la société les meilleures pratiques
Prochain
Un espace déclenché par la « tragédie »
« Huawei recherche de » positif outre-mer mesurée, le règlement d'Apple de 500 millions $ « spin bas de la porte », cacher Firefox HTTPS | Geeks titres
Lorsque le traitement des données en temps réel ne peut pas, comment dois-je faire?
Sur les principes techniques et l'actualité des défis de récupération de données à partir d'événements de bibliothèque micro suppression de l'UA
espace de stockage de pétrole plutôt que plus d'accord sur si oui ou non à couper
« Une nouvelle infrastructure » sur la sortie de position géométrie affectent la demande d'acier?
Charge de pointe décalant son de lecture à voix haute école mauvais moment, Ningxia, plus de 150.000 élèves de l'école secondaire de retour sur le campus
prévention des épidémies d'entrée en dehors du Jiangxi stricte « passerelle » construire une forte « première ligne de défense. »
Shanxi: 34 tonnes citerne réservoir d'essence a frappé rupture beaucoup de fuites
Jurong couleur jardin printemps « Habillez »
Shanghai Changning « Point de mise au point temporaire pour examen », le nouveau service repas
Chine l'année dernière, un événement a eu lieu: le PIB par habitant de plus de 10000 $