Java SE 13 (JSR388) wurde veröffentlicht, also habe ich es versucht

Wie von Oracle auf der Oracle Code One 2019 angekündigt, wurde Java 13 veröffentlicht.

Aktuelle Nachrichten Java 13 ist da. Neue Funktionen wie verbesserte ZGC und Realisierung des Switch-Typs. Oracle Code One 2019-Publickey](https://www.publickey1.jp/blog/19/java_13zgcswitch_oracle_code_one_2019.html) JDK 13 Documentation - Home

Das JDK wird (selbstverständlich) auch an OpneJDK verteilt.

JDK 13

Hier werden die Inhalte vorerst extrahiert, indem man sich auf die Sprachspezifikationen von Java SE 13 (JSR 388) konzentriert.

Wichtige Änderungen

Diesmal gibt es nur wenige Änderungen in JDK13.

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.

Einfach ausgedrückt kann der Schalter in Anweisungen erweitert und als Ausdrücke und Anweisungen verwendet werden. Selbst in Java 12 wurde es in JEP 325: Ausdrücke wechseln (Vorschau) als Vorschaufunktion betrachtet, aber es wurde erneut überprüft und ist jetzt eine Vorschaufunktion. ..

Der erneut untersuchte Inhalt JEP 354: Switch Expressions (Vorschau) wird wie folgt beschrieben.

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

Dies dient dazu, einen Wert zu generieren, indem der Rückgabewert deklariert wird, wenn im Block {} eine neue Yield-Anweisung beschrieben wird, wenn der Wert durch Verzweigen der switch-Anweisung zurückgegeben wird.

Unten finden Sie ein Implementierungsbeispiel

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;
    }
}

Da es sich um eine Vorschau-Version handelt, ist zur Laufzeit die Option --enable-Preview erforderlich, wie unten gezeigt.

workspace> javac --enable-preview --release 13 .\Tester_01.java
Hinweis:.\Tester_01.Java verwendet die Vorschau-Sprachfunktion.
Hinweis:Detail ist,-Xlint:Bitte kompilieren Sie mit der Vorschau-Option neu.
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.

Zuvor wurde beim Schreiben einer mehrzeiligen Zeichenfolge die in "(" eindimensionale "Zeichenfolgenliterale) eingeschlossene Zeichenfolge mit dem Operator + beschrieben, aber" Durch das Einschließen in "" `(" zweidimensionaler "Textblock) ist es nicht mehr erforderlich, den Operator + zu beschreiben.

Traditionelle Notation

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

Notation von JEP355

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

Dies scheint nützlich zu sein, wenn SQL mithilfe von Anmerkungen implementiert wird.

Wir werden die API separat untersuchen. Wenn Sie Fragen oder seltsame Informationen haben, stellen Sie bitte eine Bearbeitungsanfrage.

Recommended Posts

Java SE 13 (JSR388) wurde veröffentlicht, also habe ich es versucht
Java9 war enthalten, also habe ich jshell ausprobiert.
Macchinetta wurde veröffentlicht
Ich habe jetzt Oracle Java Bronze SE 7/8 genommen, daher werde ich es als Artikel schreiben
Parkett-Tools gibt java.lang.ExceptionInInitializerError, also habe ich es mit java8 funktionieren lassen
Ich habe Java SE8 Gold genommen.
Ich habe Drools (Java, InputStream) ausprobiert.
Ich habe versucht, Java REPL zu verwenden
Ich habe versucht, Metaprogrammierung mit Java
Ich habe versucht, UDP mit Java zu kommunizieren
Ich habe das Java-Framework "Quarkus" ausprobiert.
Ich habe versucht, die Java8 Stream API zu verwenden
Ich habe versucht, JWT in Java zu verwenden
Ich habe versucht, das Java-Lernen zusammenzufassen (1)
Ich habe jetzt versucht, Java 8 zusammenzufassen
Ich habe versucht, Java Memo LocalDate zu verwenden
Ich habe versucht, Google HttpClient von Java zu verwenden
Macchinetta wurde veröffentlicht
Resilience4j-Dokument Die japanische Übersetzung (inoffiziell) wurde veröffentlicht
Java SE 13 (JSR388) wurde veröffentlicht, also habe ich es versucht
Spring 5 & Spring Boot 2 Einführung für Anfänger wurde veröffentlicht
Kotlin hat keinen ternären Operator (bedingter Operator)
Die Methode JacocoReportBase.setClassDirectories (FileCollection) ist veraltet.
Java hatte eine QR-Code-Erstellungsbibliothek namens QRGen, die ZXing gut umschließt, also habe ich es versucht
Java12 kam heraus, also habe ich vorerst den Schalterausdruck ausprobiert
Ich habe Cassandras Object Mapper für Java ausprobiert
Ich habe versucht, Java-Lambda-Ausdrücke zusammenzufassen
Java SE 8 Silver (Java SE 8 Programmer I) Pass Hinweis
Ich habe versucht, OpenCV mit Java + Tomcat zu verwenden
Ich fand MyBatis nützlich, also habe ich es geschrieben.
Lite Rx API Hands-on Ich habe es versucht
Ich habe Googles Aufnahmeprüfung (inoffiziell) [Java] ausprobiert.
Da es von Java SE 8 Silver akzeptiert wurde, werde ich verschiedene Dinge vorstellen
Es fiel mir schwer, Java-Multithreading von Grund auf neu zu erstellen. Organisieren Sie es also
Ich kann mich nicht an die Eingabe / Ausgabe von Textdateien in Java erinnern, also habe ich sie zusammengefasst.
Ich bin auf die Java-Version in Android Studio gestoßen, daher werde ich sie zusammenfassen