Nouvelles fonctionnalités de Java 9 et exemple de code

Ceci est une réimpression de Article de blog.

Avec la sortie de Java 9 approchant juillet 2017, Je vais vous présenter ce que vous pouvez faire avec Java 9 avec un exemple de code.

Toutes les informations sont avant la publication, donc Veuillez noter que cela peut différer dans la version actuelle de Java 9.

La sortie de Java10 approche, je posterai un lien. Résumé des nouvelles fonctionnalités de Java 10

table des matières

  1. JShell
  2. Méthode d'usine pour liste / ensemble / carte immuable
  3. Méthode privée dans l'interface
  4. Système de modules
  5. Améliorations de l'API de processus
  6. Amélioration de l'essai avec ressource
  7. Améliorations de l'API CompletableFuture
  8. Flux réactif
  9. Opérateur diamant en classe anonyme
  10. Améliorations facultatives de la classe
  11. Améliorations de l'API Stream
  12. Annotation @Deprecated améliorée
  13. Client HTTP2
  14. Multi-Resolution Image API
  15. Autres

JShell Environnement REPL. Exécutez Java à partir de la ligne de commande, Vous pouvez maintenant vérifier l'API et effectuer des tests simples.

C:\>jshell
|  Welcome to JShell -- Version 9-ea
|  For an introduction type: /help intro

jshell> String helloWorld = "Hello World"
helloWorld ==> "Hello World"

jshell> System.out.println(helloWorld + "!!" )
Hello World!!

Méthode d'usine pour liste / ensemble / carte immuable

Comme le dit le titre. Vous pouvez maintenant créer une liste / un ensemble / une carte comme Guava (la bibliothèque de traitement commune de Google).

jshell> List emptyImmutableList = List.of();
emptyImmutableList ==> []
jshell> Map nonemptyImmutableMap = Map.of(1, "one", 2, "two", 3, "three")
nonemptyImmutableMap ==> {2=two, 3=three, 1=one}

Méthode privée dans l'interface

Java 8 vous permet de définir des méthodes par défaut et statiques pour Interface. Java9 vous permettra également de définir des méthodes privées.

public interface Card{
  private Long createCardID();
  private static void displayCardDetails();
}

Système de module

Cela s'appelait le projet Jigsaw. Il est désormais possible de définir des API publiques et privées dans module-info.java.

L'exemple de code se trouve dans l'article ici.

Améliorations de l'API de processus

Les classes suivantes ont été ajoutées.

 ProcessHandle currentProcess = ProcessHandle.current();
 System.out.println("Current Process Id: = " + currentProcess.getPid());

Amélioration de try-with-resource

L'instruction try-with-resource jusqu'à Java 8 Il était obligatoire de déclarer la classe dans la clause try, Ce n'est plus nécessaire.

void testARM_Java9() throws IOException{
 BufferedReader reader1 = new BufferedReader(new FileReader("journaldev.txt"));
 try (reader1) {
   System.out.println(reader1.readLine());
 }
}

Améliorations de l'API CompletableFuture

API CompletableFuture,

Des fonctions telles que celles ajoutées.

Executor exe = CompletableFuture.delayedExecutor(50L, TimeUnit.SECONDS);

Flux réactif

Pour promouvoir le traitement asynchrone / le traitement parallèle / le développement d'applications évolutives Le cadre de publication / abonnement a été ajouté. C'est un mécanisme dans Akka etc.

Un exemple de code peut être trouvé ici [https://community.oracle.com/docs/DOC-1006738).

Opérateur diamant en classe anonyme

Je ne connaissais pas les détails, alors je les ai omis.

Améliorations facultatives de la classe

Divers ajouts ont été apportés à la classe facultative.

En passant Optional :: stream au Stream # flatMap Il semble qu'il puisse être converti en Stream de la classe encapsulée.

Stream<Optional> emp = getEmployee(id)
Stream empStream = emp.flatMap(Optional::stream)

Améliorations de l'API Stream

Une méthode takeWhile et une méthode dropWhile qui peuvent être écrites de la même manière que Scala ont été ajoutées.

jshell> Stream.of(1,2,3,4,5,6,7,8,9,10).takeWhile(i -> i < 5 )
                 .forEach(System.out::println);
1
2
3
4

Annotation @Deprecated améliorée

Va-t-il être aboli? (pour le retrait) Quand sera-t-il aboli? (puisque) Il semble que des informations telles que celles données actuellement.

Client HTTP2

Il semble que cela ait été rétrogradé à la fonction d'incubation ... Référence

Le client HTTP / 2 est inclus dans Java 9, mais par défaut il ne sera pas accessible. La fonctionnalité est intégrée dans un module de préfixe appelé jdk.incubator. Les développeurs qui y accèdent doivent explicitement utiliser l'indicateur --add-mod. Cependant, si vous choisissez de faire cela, vous devrez considérer que la fonction d'incubation ne fait pas partie de l'API standard et est donc toujours modifiée.

jshell> import java.net.http.*

jshell> import static java.net.http.HttpRequest.*

jshell> import static java.net.http.HttpResponse.*

jshell> URI uri = new URI("http://google.com")
uri ==> http://google.com

jshell> HttpResponse response = HttpRequest.create(uri).body(noBody()).GET().response()
response ==> java.net.http.HttpResponseImpl@79efed2d

jshell> System.out.println("Response was " + response.body(asString()))

Multi-Resolution Image API Il semble que l'interface MultiResolutionImage a été ajoutée au package java.awt.image.

Voir Official doc pour plus de détails.

Autres

Autre

Etc.

référence

Java 9 Features with Examples

Recommended Posts

Nouvelles fonctionnalités de Java 9 et exemple de code
Exemple de code Java 02
Exemple de code Java 03
Exemple de code Java 04
java1.8 nouvelles fonctionnalités
Exemple de code Java 01
Java version 8 et fonctionnalités ultérieures
Exemple de code de signature électronique (JAVA)
Nouvelles fonctionnalités de Java7 à Java8
Fonctionnalités Java
Fonctionnalités Java
Exemple de code pour analyser la date et l'heure avec SimpleDateFormat de Java
Exemple de description et d'implémentation de BloomFilter (JAVA)
Nouvelles fonctionnalités de Java 14 pouvant être utilisées pour écrire du code
Exemple de code utilisant Minio de Java
Lier le code Java et C ++ avec SWIG
Logique du numéro de page et code de référence (java)
Exécuter du code Java de manière scriptée
Exemple de code pour la sérialisation et la désérialisation des énumérations Java Enum et JSON dans Jackson
[Java] Exemple de génériques
Échantillon de sélénium (Java)
À propos des fonctionnalités Java
Java et JavaScript
XXE et Java
Code de caractère Java
Caractéristiques prévues de Java
Résumé des nouvelles fonctionnalités de Java 12
Exemple de code pour convertir List en List <String> dans Java Stream
Getter et Setter (Java)
[Java] Thread et exécutable
Échantillon jusqu'à l'authentification OAuth 2.0 et l'acquisition de jetons d'accès (Java)
Résumé des nouvelles fonctionnalités de Java 13
Java vrai et faux
[Java] Comparaison des chaînes de caractères et && et ||
[Java] Exemple de jugement de vacances
Installez java et maven sur un nouveau mac en utilisant brew
Java - Sérialisation et désérialisation
[Java] Arguments et paramètres
timedatectl et Java TimeZone
Exemple de code pour la sortie du journal par Java + SLF4J + Logback
[Java] Branchement et répétition
[Java] exemple de logback slf4j
Nouveautés de Java 8
Résumé des nouvelles fonctionnalités de Java 10
[Java] Types de variables et types
[Java] Trois fonctionnalités de Java
java (classe et instance)
Résumé des nouvelles fonctionnalités de Java 14
Nouveautés de Java 9,10,11
[Java] Surcharge et remplacement
Exemple de code Java pour acquérir et afficher les données source et de destination DBLINK dans Oracle Database à l'aide de DBLINK
Découvrez les nouvelles fonctionnalités de Java 7 à Java 9 à la fois
Exemple de source Java pour SELECT et afficher CLOB (Oracle Database + java)
Comprendre le modèle Singleton en comparant le code Java et JavaScript
Corrigez le code de caractère en Java et lisez à partir de l'URL
Paramètres de renforcement d'installation et de complétion de code d'Eclipse (développement Mac pour Java)
Comprendre le modèle Iterator en comparant le code Java et JavaScript