Java 13 est sorti le 17/09/2019. Java SE 13 Platform JSR 388
J'ai pu le télécharger sur le site OpenJDK. https://jdk.java.net/13/
Actuellement, il peut être téléchargé à partir du site d'archives. https://jdk.java.net/archive/
Ce n'est pas un LTS, donc je ne pense pas qu'il soit nécessaire de le télécharger maintenant à des fins autres que la vérification. SDKMAN! est recommandé pour l'installation sur Mac et Linux
Outre Oracle Open JDK, il existe les distributions suivantes qui peuvent être utilisées gratuitement dans le commerce.
Puisqu'il ne s'agit pas de LTS, il ne semble pas être publié sur Amazon Corretto.
Oracle JDK est disponible à des fins de développement, mais vous devez acheter un abonnement Java SE à des fins commerciales.
JEP Les changements sont organisés en JEP. https://openjdk.java.net/projects/jdk/13/
Cette fois, environ 5 JEP sont inclus. 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) Un littéral de chaîne multiligne a été introduit comme aperçu.
String html = """
<html>
<body>
<p>Hello, world</p>
</body>
</html>
""";
L'espace s'échappant et plus ont été ajoutés pour le rendre standard dans Java 15. Consultez la description de Java 14 pour les spécifications détaillées. Résumé des nouvelles fonctionnalités de Java 14 - Qiita
JEP 354: Switch Expressions (Second Preview) Faites de l'instruction Switch une expression.
int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
};
Par rapport à Java 12, la syntaxe de renvoi des valeurs dans les expressions de commutation est passée de «break» à «yield». Il est standardisé en Java 14. Consultez la description de Java 14 pour les spécifications détaillées. Résumé des nouvelles fonctionnalités de Java 14 - Qiita
Créez une archive CDS lors de l'exécution en ajoutant -XX: ArchiveClassesAtExit
.
Je pense que c'est une bonne référence pour savoir comment l'utiliser.
Java 13 Dynamic CDS démarre plus vite que prévu - Kishida Hatena
Dans le sentiment que j'ai essayé, il était plus rapide de commencer par créer une archive CDS normalement plutôt qu'au moment de l'exécution. L'auto-dumping à partir de Java 10 est plus rapide que Dynamic CDS-Kishida Hatena
JEP 351: ZGC: Uncommit Unused Memory (Experimental)
La mémoire inutilisée dans ZGC sera libérée.
JEP 353: Reimplement the Legacy Socket API
L'API du socket TCP a été réimplémentée pour prendre en charge le traitement asynchrone dans Project Loom.
API
Certaines modifications de l'API ont également changé.
String
Des API liées à TextBlocks ont été ajoutées. Cependant, à partir de Java 13, il ne peut être utilisé à tout moment qu'en spécifiant «@ Deprecated», mais en Java 14, il ne peut être utilisé que lorsque «--enable-preview» est ajouté.
formatted
Rendez String.format
disponible comme méthode d'instance.
Par exemple
callQuery(String.format("select * from table where id=%d", id));
Ce qui a été écrit
callQuery("select * from table where id=%d".formatted(id));
Il est pratique d'écrire comme. https://bugs.openjdk.java.net/browse/JDK-8203444
translateEscapes
Traitez \ n
etc. comme des caractères d'échappement.
En regardant le code, cela prête à confusion avec l'échappement, mais le «\ n» dans la chaîne est converti en saut de ligne.
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
Supprimez le retrait.
https://bugs.openjdk.java.net/browse/JDK-8223775
Map.of
a été ajouté dans JDK9.
Dans JDK9 et JDK10, lorsque le nombre d'éléments est égal à 0, Map0
est renvoyé, lorsque le nombre d'éléments est 1, Map1
, et lorsque le nombre d'éléments est égal ou supérieur à 2, une instance de MapN
est renvoyée etMap.of (). Get (null)
retournait null
.
C:\Users\naoki>java\jdk\jdk-10.0.1\bin\jshell
|Bienvenue dans JShell--Version 10.0.1
|Pour un aperçu, tapez: /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)
Même lorsque le nombre d'éléments est 0 dans JDK11, MapN
est utilisé et` Map.of (). Get (null) ʻest gluant.
C:\Users\naoki>java\jdk\jdk-11.0.1\bin\jshell
|Bienvenue dans JShell--Version 11.0.1
|Pour un aperçu, tapez: /help intro
jshell> Map.of().get(null)
|Exception 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)
|Exception java.lang.NullPointerException
| at ImmutableCollections$MapN.probe (ImmutableCollections.java:926)
| at ImmutableCollections$MapN.get (ImmutableCollections.java:846)
| at (#3:1)
Dans le cas de Map.of (1,2) .get (null)
, null
était retourné du JDK9 au JDK12.
À partir de JDK13, Map.of (1,2) .get (null)
sera également gluant.
Les versions antérieures ont également été corrigées dans JDK 12.0.2 et JDK 11.0.4.
http://mail.openjdk.java.net/pipermail/core-libs-dev/2019-April/059533.html
Il est également intéressant d'utiliser l'appel equals au lieu de requireNonNull pour la vérification de null.
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
Un constructeur par défaut a été ajouté à la classe Number
.
Cependant, l'implémentation ressemble à ceci.
public Number() {super();}
Cela n'est pas nécessaire car il est défini implicitement même s'il n'est pas défini. D'une manière ou d'une autre, il semble avoir été ajouté à la charpie folle
Le nouveau numéro original "Reiwa" a commencé le 1er mai 2019.
Les mises à jour de Java 8, Java 11 et Java 12 prenaient également en charge la réconciliation au niveau du format et de la perspective, mais ils n'étaient pas officiellement définis à l'époque japonaise.
Depuis Java 13, vous pouvez utiliser JapaneseEra.REIWA
.
Dans Java 11, le problème d'origine n'a pas été résolu, il a donc été affiché sous le nom de New Era.
jshell> java.time.chrono.JapaneseDate.now()
$1 ==> Japanese NewEra 2-07-21
Étant donné que le problème d'origine a été résolu dans la version 11.0.3, il a été affiché comme REIWA.
jshell> java.time.chrono.JapaneseDate.of(2020,5,1)
$1 ==> Japanese Reiwa 2-05-01
Pour cela, JapaneseEra.NEWERA
et JapaneseEra.REIWA
ont également été définis, mais comme il s'agissait d'un package privé et ne pouvait pas être utilisé à partir du code, il est devenu public à partir de Java 13 et tout le monde peut l'utiliser. devenu.
Il y a quelques changements dans rmic.
http://mail.openjdk.java.net/pipermail/core-libs-dev/2019-April/059683.html
[JDK-8217412] deprecate rmic for removal - Java Bug System
Il disparaît dans Java 15.
Recommended Posts