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
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!!
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}
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();
}
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.
Les classes suivantes ont été ajoutées.
ProcessHandle currentProcess = ProcessHandle.current();
System.out.println("Current Process Id: = " + currentProcess.getPid());
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());
}
}
API CompletableFuture,
Des fonctions telles que celles ajoutées.
Executor exe = CompletableFuture.delayedExecutor(50L, TimeUnit.SECONDS);
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).
Je ne connaissais pas les détails, alors je les ai omis.
Divers ajouts ont été apportés à la classe facultative.
<T>
or(Supplier<? extends Optional<? extends T>> supplier)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)
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
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.
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.
Autre
Etc.
Recommended Posts