Java SE 13 (JSR388) est sorti alors je l'ai essayé

Comme annoncé par Oracle à Oracle Code One 2019, Java 13 a été publié.

[Dernières nouvelles] Java 13 est là. Nouvelles fonctionnalités telles que le ZGC amélioré et la réalisation de type Switch. Oracle Code One 2019-Publickey JDK 13 Documentation - Home

Le JDK est également distribué à OpneJDK (bien entendu).

JDK 13

Ici, pour le moment, le contenu est extrait en se concentrant sur les spécifications du langage de Java SE 13 (JSR 388).

Changements majeurs

Il y a peu de changements dans JDK13 cette fois.

Java SE 13 (JSR 388)

JEP 354: Switch Expressions (Preview)

Extend switch so it can be used as either a statement or an expression, and so that both forms can use either traditional case ... : labels (with fall through) or new case ... -> labels (with no fall through), with a further new statement for yielding a value from a switch expression. These changes will simplify everyday coding, and prepare the way for the use of pattern matching (JEP 305) in switch. This is a preview language feature in JDK 13.

En termes simples, le commutateur peut être étendu en instructions et utilisé comme expressions et instructions. Même dans Java 12, elle était considérée comme une fonction de prévisualisation dans JEP 325: Switch Expressions (Preview), mais elle a été réexaminée et est maintenant une fonction de prévisualisation. ..

En regardant le contenu réexaminé JEP 354: Switch Expressions (Preview), il est décrit comme suit.

To yield a value from a switch expression, the break with value statement is dropped in favor of a yield statement.

Il s'agit de générer une valeur en déclarant la valeur de retour lors de la description dans le bloc {} comme une nouvelle instruction yield lors du retour de la valeur en branchant l'instruction switch.

Voici un exemple d'implémentation

import java.time.LocalDate;
import java.time.DayOfWeek;

public class Tester_01 {
    public static void main(String... args) {
        LocalDate today = LocalDate.now();
        System.out.println(java13(today.getDayOfWeek()));
    }
        private static int java13(DayOfWeek today) {
        int numLetters =  switch (today) {
            case MONDAY, FRIDAY, SUNDAY -> 6;
            case TUESDAY                -> 7;
            default                     -> {
                int k = today.toString().length();
                yield k;
            }
        };
        return numLetters;
    }
}

Puisqu'il s'agit d'une version Preview, l'option --enable-preview est requise au moment de l'exécution comme indiqué ci-dessous.

workspace> javac --enable-preview --release 13 .\Tester_01.java
Mise en garde:.\Tester_01.java utilise la fonctionnalité de langue de prévisualisation.
Mise en garde:Le détail est,-Xlint:Veuillez recompiler avec l'option d'aperçu.
PS C:workspace> java --enable-preview  Tester_01

JEP 355: Text Blocks (Preview)

Add text blocks to the Java language. A text block is a multi-line string literal that avoids the need for most escape sequences, automatically formats the string in a predictable way, and gives the developer control over format when desired. This is a preview language feature in JDK 13.

Auparavant, lors de l'écriture d'une chaîne de caractères sur plusieurs lignes, la chaîne de caractères entourée de " (littéraux de chaîne" unidimensionnels ") était décrite en utilisant l'opérateur +, mais En l'enfermant dans "" `(bloc de texte" bidimensionnel "), il n'est plus nécessaire de décrire l'opérateur +.

Notation traditionnelle

ScriptEngine engine = new ScriptEngineManager().getEngineByName("js");
Object obj = engine.eval("function hello() {\n" +
                         "    print('\"Hello, world\"');\n" +
                         "}\n" +
                         "\n" +
                         "hello();\n");

Notation par JEP355

ScriptEngine engine = new ScriptEngineManager().getEngineByName("js");
Object obj = engine.eval("""
                         function hello() {
                             print('"Hello, world"');
                         }
                         
                         hello();
                         """);

Cela semble utile lors de la mise en œuvre de SQL à l'aide d'annotations.

Nous étudierons l'API séparément. Si vous avez des questions ou si quelque chose ne va pas, veuillez faire une demande de modification.

Recommended Posts

Java SE 13 (JSR388) est sorti alors je l'ai essayé
Java9 était inclus, j'ai donc essayé jshell.
Macchinetta a été libéré
J'ai pris Oracle Java Bronze SE 7/8 maintenant, je vais donc l'écrire sous forme d'article
Parquet-tools donne java.lang.ExceptionInInitializerError, donc je l'ai fait fonctionner avec java8
J'ai pris Java SE8 Gold.
J'ai essayé Drools (Java, InputStream)
J'ai essayé d'utiliser Java REPL
J'ai essayé la métaprogrammation avec Java
J'ai essayé la communication UDP avec Java
J'ai essayé le framework Java "Quarkus"
J'ai essayé d'utiliser l'API Java8 Stream
J'ai essayé d'utiliser JWT en Java
J'ai essayé de résumer l'apprentissage Java (1)
J'ai essayé de résumer Java 8 maintenant
J'ai essayé d'utiliser le mémo Java LocalDate
J'ai essayé d'utiliser Google HttpClient de Java
Macchinetta a été libéré
La traduction japonaise (non officielle) du document Resilience4j a été publiée
Java SE 13 (JSR388) est sorti alors je l'ai essayé
Une introduction pratique pour les débutants de Spring 5 et Spring Boot 2 a été publiée
Kotlin n'a pas d'opérateur ternaire (opérateur conditionnel)
La méthode JacocoReportBase.setClassDirectories (FileCollection) est obsolète.
Java avait une bibliothèque de création de code QR appelée QRGen qui enveloppe bien ZXing, alors je l'ai essayé
Java12 est sorti, alors j'ai essayé l'expression switch pour le moment
J'ai essayé le mappeur d'objets de Cassandra pour Java
J'ai essayé de résumer les expressions Java lambda
Note de passage Java SE 8 Silver (Java SE 8 Programmer I)
J'ai essayé d'utiliser OpenCV avec Java + Tomcat
J'ai trouvé MyBatis utile, alors je l'ai écrit.
Lite Rx API Hands-on Je l'ai essayé
J'ai essayé l'examen d'entrée de Google (non officiel) [java]
Depuis qu'il a été accepté par Java SE 8 Silver, je vais vous présenter diverses choses
J'ai eu du mal à faire du multithreading Java à partir de zéro, alors organisez-le
Je ne me souviens pas de l'entrée / sortie du fichier texte en Java, alors je l'ai résumé.
Je suis tombé sur la version Java dans Android Studio, je vais donc le résumer