Java 13 wurde am 17.09.2019 veröffentlicht. Java SE 13 Platform JSR 388
Ich konnte es von der OpenJDK-Site herunterladen. https://jdk.java.net/13/
Derzeit kann es von der Archivseite heruntergeladen werden. https://jdk.java.net/archive/
Es ist kein LTS, daher denke ich nicht, dass es jetzt für andere Zwecke als die Überprüfung heruntergeladen werden muss. SDKMAN! wird für die Installation unter Mac und Linux empfohlen
Neben dem Oracle Open JDK gibt es die folgenden Distributionen, die kostenlos kommerziell verwendet werden können.
Da es sich nicht um LTS handelt, scheint es nicht auf Amazon Corretto veröffentlicht zu sein.
Das Oracle JDK ist für Entwicklungszwecke verfügbar, Sie müssen jedoch ein Java SE-Abonnement für die kommerzielle Nutzung erwerben.
JEP Die Änderungen sind als JEP organisiert. https://openjdk.java.net/projects/jdk/13/
Diesmal sind ca. 5 JEPs enthalten. JEP 350: Dynamic CDS Archives JEP 351: ZGC: Uncommit Unused Memory (Experimental) JEP 353: Reimplement the Legacy Socket API JEP 354: Switch Expressions (Second Preview) JEP 355: Text Blocks (Preview)
JEP 355: Text Blocks (Preview) Als Vorschau wurde ein mehrzeiliges Zeichenfolgenliteral eingeführt.
String html = """
<html>
<body>
<p>Hello, world</p>
</body>
</html>
""";
Speicherplatz und mehr wurden hinzugefügt, um es in Java 15 zum Standard zu machen. Detaillierte Spezifikationen finden Sie in der Java 14-Beschreibung. Java 14 New Features Summary-Qiita
JEP 354: Switch Expressions (Second Preview) Machen Sie die Switch-Anweisung zu einem Ausdruck.
int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
};
Im Vergleich zu Java 12 hat sich die Syntax für die Rückgabe von Werten in Schalterausdrücken von "break" in "ield "geändert. Standardisiert in Java 14. Detaillierte Spezifikationen finden Sie in der Java 14-Beschreibung. Java 14 New Features Summary-Qiita
Erstellen Sie zur Laufzeit ein CDS-Archiv, indem Sie -XX: ArchiveClassesAtExit
hinzufügen.
Ich denke, dies ist eine gute Referenz für die Verwendung.
Java 13 Dynamic CDS startet schneller als erwartet - Kishida Hatena
In dem Gefühl, dass ich es versucht habe, war es schneller, ein CDS-Archiv normal als zur Laufzeit zu erstellen. Self-Dumping von Java 10 ist schneller als Dynamic CDS-Kishida Hatena
JEP 351: ZGC: Uncommit Unused Memory (Experimental)
Nicht verwendeter Speicher in ZGC wird freigegeben.
JEP 353: Reimplement the Legacy Socket API
Die TCP-Socket-API wurde neu implementiert, um die asynchrone Verarbeitung in Project Loom zu unterstützen.
API
Einige API-Änderungen haben sich ebenfalls geändert.
String
TextBlocks-bezogene APIs wurden hinzugefügt. Ab Java 13 kann es jedoch jederzeit nur durch Angabe von "@ Deprecated" verwendet werden. In Java 14 kann es jedoch nur verwendet werden, wenn "--enable-Preview" hinzugefügt wird.
formatted
Stellen Sie String.format
als Instanzmethode zur Verfügung.
Zum Beispiel
callQuery(String.format("select * from table where id=%d", id));
Was wurde geschrieben
callQuery("select * from table where id=%d".formatted(id));
Es ist bequem zu schreiben wie. https://bugs.openjdk.java.net/browse/JDK-8203444
translateEscapes
Behandle \ n
usw. als Escapezeichen.
Wenn man sich den Code ansieht, ist dies verwirrend mit dem Escapezeichen, aber das \ n
in der Zeichenfolge wird in einen Zeilenumbruch konvertiert.
jshell> var s = "test\\ntest\\n"
s ==> "test\\ntest\\n"
jshell> System.out.println(s)
test\ntest\n
jshell> s.translateEscapes()
$18 ==> "test\ntest\n"
jshell> System.out.println(s.translateEscapes())
test
test
https://bugs.openjdk.java.net/browse/JDK-8223780
stripIndent
Entfernen Sie den Einzug.
https://bugs.openjdk.java.net/browse/JDK-8223775
Map.of
wurde in JDK9 hinzugefügt.
In JDK9 und JDK10 wird eine Instanz von "Map0" zurückgegeben, wenn die Anzahl der Elemente 0 ist, "Map1", wenn die Anzahl der Elemente 1 ist, und "MapN", wenn die Anzahl der Elemente 2 oder mehr beträgt, und "Map.of ()". kehrte zurück
null`.
C:\Users\naoki>java\jdk\jdk-10.0.1\bin\jshell
|Willkommen bei JShell--Version 10.0.1
|Geben Sie für eine Übersicht Folgendes ein: /help intro
jshell> Map.of().get(null)
$1 ==> null
jshell> Map.of(1,2).get(null)
$2 ==> null
jshell> Map.of(1,2,3,4).get(null)
| java.lang.NullPointerException thrown
| at ImmutableCollections$MapN.probe (ImmutableCollections.java:779)
| at ImmutableCollections$MapN.get (ImmutableCollections.java:721)
| at (#3:1)
Selbst wenn die Anzahl der Elemente in JDK11 0 ist, wird "MapN" verwendet und "Map.of (). Get (null)" ist schleimig.
C:\Users\naoki>java\jdk\jdk-11.0.1\bin\jshell
|Willkommen bei JShell--Version 11.0.1
|Geben Sie für eine Übersicht Folgendes ein: /help intro
jshell> Map.of().get(null)
|Ausnahme Java.lang.NullPointerException
| at Objects.requireNonNull (Objects.java:221)
| at ImmutableCollections$MapN.get (ImmutableCollections.java:843)
| at (#1:1)
jshell> Map.of(1,2).get(null)
$2 ==> null
jshell> Map.of(1,2,3,4).get(null)
|Ausnahme Java.lang.NullPointerException
| at ImmutableCollections$MapN.probe (ImmutableCollections.java:926)
| at ImmutableCollections$MapN.get (ImmutableCollections.java:846)
| at (#3:1)
Im Fall von "Map.of (1,2) .get (null)" wurde "null" von JDK9 an JDK12 zurückgegeben. Ab JDK13 ist "Map.of (1,2) .get (null)" ebenfalls schleimig. Frühere Versionen wurden auch in JDK 12.0.2 und JDK 11.0.4 behoben.
http://mail.openjdk.java.net/pipermail/core-libs-dev/2019-April/059533.html
Es ist auch interessant, den Equals-Aufruf anstelle von requireNonNull für die Nullprüfung zu verwenden.
http://cr.openjdk.java.net/~smarks/reviews/8221924/webrev.0/src/java.base/share/classes/java/util/ImmutableCollections.java.patch
http://mail.openjdk.java.net/pipermail/core-libs-dev/2019-May/060258.html
Der Klasse "Number" wurde ein Standardkonstruktor hinzugefügt. Die Implementierung sieht jedoch so aus.
public Number() {super();}
Dies ist nicht erforderlich, da es implizit definiert ist, auch wenn es nicht definiert ist. Irgendwie scheint es hinzugefügt worden zu sein, um Flusen zu täuschen
Die neue Originalausgabe "Reiwa" hat am 1. Mai 2019 begonnen.
Java 8-Updates, Java 11 und Java 12 unterstützten ebenfalls die Abstimmung in Format und Perspektive, wurden jedoch im japanischen Zeitalter nicht offiziell definiert.
Ab Java 13 können Sie JapaneseEra.REIWA
verwenden.
In Java 11 wurde das ursprüngliche Problem nicht entschieden, daher wurde es als New Era angezeigt.
jshell> java.time.chrono.JapaneseDate.now()
$1 ==> Japanese NewEra 2-07-21
Da die ursprüngliche Ausgabe in 11.0.3 entschieden wurde, wurde sie als REIWA angezeigt.
jshell> java.time.chrono.JapaneseDate.of(2020,5,1)
$1 ==> Japanese Reiwa 2-05-01
Zu diesem Zweck wurden auch "JapaneseEra.NEWERA" und "JapaneseEra.REIWA" definiert. Da es sich jedoch um ein privates Paket handelte und nicht aus dem Code verwendet werden konnte, wurde es ab Java 13 öffentlich und kann von jedem verwendet werden wurde.
Es gibt einige Änderungen in rmic.
http://mail.openjdk.java.net/pipermail/core-libs-dev/2019-April/059683.html
[JDK-8217412] deprecate rmic for removal - Java Bug System
Es verschwindet in Java 15.
Recommended Posts