La 16e version de la plate-forme Java SE a été publiée. Cette version contient environ deux mille cinq cents problèmes fermés et 17 JEP. Les modifications de l'API peuvent être consultées ici . Notes de version ici .
Les distributions Oracle JDK et OpenJDK sont déjà disponibles au téléchargement .
Les JEP qui en ont fait Java 16 seront divisés en quatre catégories: langage, API, JVM et infrastructure.
Langue
Correspondance de modèle pour l'opérateur instanceof (JEP 375)
L' instanceof
opérateur de correspondance de modèle, qui a été introduit dans Java 14 et déplacé vers le deuxième aperçu de Java 15, est désormais une syntaxe stable et ne nécessite plus d'indicateur --enable-preview
. Nous avons discuté de la correspondance de modèles en détail dans cet article , et depuis lors, deux modifications y ont été apportées:
Premièrement, les variables de modèle ne sont plus implicitement finales:
if (obj instanceof String s) {
s = "Hello"; // OK Java 16, Java 15
}
Deuxièmement, si le type de l'expression connu au moment de la compilation est un sous-type du type en cours de vérification, il s'agit maintenant d'une erreur de compilation:
String str = ...
if (str instanceof String s) { // O Java 16, OK Java 15
}
Entrées (JEP 395)
, – . preview Java 14 Java 15. . Java 16 : :
public class Outer {
public class Inner {
// OK Java 16, Java 15
static void main(String[] args) {
}
// OK Java 16, Java 15
record Point(int x, int y) {
}
}
}
sealed
( preview) (JEP 397)
- Java contextual keyword restricted keyword restricted identifier, contextual keywords
sealed
,non-sealed
permits
. - ,
sealed
:sealed interface Sealed { } final class Impl implements Sealed { void f(Runnable r) { Sealed s = (Sealed) r; // error: incompatible types } }
-
Class.permittedSubclasses()
Class.getPermittedSubclasses()
.
JVM
JDK (JEP 396)
API JDK, Java 9, : Java 9-15 --illegal-access
permit
, Java 16 deny
. , API (sun.*
, com.sun.*
, jdk.internal.*
..) .
JDK , Java 16, JVM:
--illegal-access=permit/warn/debug
: JDK--add-opens=module/package=target-module
:--add-exports=module/package=target-module
: ( )
--illegal-access
. Java 16, : Option --illegal-access is deprecated and will be removed in a future release
.
API jdk.unsupported
: sun.misc
sun.reflect
.
Warnings for Value-Based Classes (JEP 390)
- (Integer
, Double
, Character
..) value-based , , deprecated Java 9, deprecated for removal.
value-based API Java 8. , , , identity: ==
, , identityHashCode()
.. Value-based Valhalla, .
value-based :
Double d = 0.0;
synchronized (d) { // warning: [synchronization] attempt to synchronize on an instance of a value-based class
}
value-based JVM:
-XX:+UnlockDiagnosticVMOptions -XX:DiagnoseSyncOnValueBasedClasses=1
: .-XX:+UnlockDiagnosticVMOptions -XX:DiagnoseSyncOnValueBasedClasses=2
: .
ZGC: Concurrent Thread-Stack Processing (JEP 376)
ZGC safepoints . .
Unix-Domain Socket Channels (JEP 380)
Unix socket channel server-socket channel API. , , . Unix Windows 10 Windows Server 2019.
Elastic Metaspace (JEP 387)
Metaspace ( JVM, ) . , .
Alpine Linux Port (JEP 386)
JDK Alpine Linux Linux, musl C. Alpine Linux , . JDK .
Windows/AArch64 Port (JEP 388)
JDK Windows/AArch64. Java Windows on ARM, .
API
Stream
java.util.stream.Stream
JEP, , .
– Stream.toList()
. Stream
. , Collectors.toUnmodifiableList()
, , Stream.toList()
, null
-.
– Stream.mapMulti()
( ). Stream.flatMap()
: flatMap()
, Stream
, mapMulti()
, – , – Consumer, . :
IntStream.rangeClosed(1, 10).mapMulti((i, consumer) -> {
for (int j = 1; j <= i; j++) {
consumer.accept(j);
}
}); // 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, ...
(JEP 392)
jpackage
, Java 14 , .
Vector API (Incubator) (JEP 338)
SIMD- (x64 AArch64). API , JVM . , , .
API jdk.incubator.vector
.
Foreign Linker API (Incubator) (JEP 389)
API, Panama – Foreign Linker API. Java, JNI: , .
Foreign-Memory Access API (Third Incubator) (JEP 393)
API Java, Java 14, .
Enable C++14 Language Features (JEP 347)
JDK Java 16 C++98/03. Java 11 , C++11/14. : HotSpot C++11/14, .
Migrate from Mercurial to Git (JEP 357) Migrate to GitHub (JEP 369)
JDK Git GitHub. 2020 , Java 16 .
GitHub . -, . Skara.
Java 16 STS-, .
Si vous ne voulez pas manquer les actualités de Java, abonnez-vous à la chaîne miniJUG Telegram