最終更新日: 2020年9月29日、への変更など、 JDK 15 。
バージョン8のリリースからバージョン15まで、Javaは163のJDK拡張プロポーザル (JEP)を生成し 、それぞれがプラットフォームにいくつかの改善をもたらしました。このページは 、最も重要な改善点の体系的 で 注意深く厳選されたリストです。
コンテンツ
新しい言語機能
新しいAPI
-
Javadoc
JEP - OpenJDK jdk jdk9 .
, , :
, . , . .
. .
API .
Java 8 , . , .
, . . , Java 8 .
JDK 15 ( JDK 14 JDK 13 )
String html = """ <html> <body> <p>Hello, world</p> </body> </html> """;
(Sealed) , ( )
JDK 15
public abstract sealed class Shape permits Circle, Rectangle {...} public class Circle extends Shape {...} // OK public class Rectangle extends Shape {...} // OK public class Triangle extends Shape {...} // Compile error // No need for default case if all permitted types are covered double area = switch (shape) { case Circle c -> Math.pow(c.radius(), 2) * Math.PI case Rectangle r -> r.a() * r.b() };
(Records )
JDK 15 JDK 14
record Point(int x, int y) { }
instanceof ( )
JDK 15 JDK 14
if (obj instanceof String s) { System.out.println("obj is a String and it' length is " + s.length()); }
Switch
JDK 14 ( JDK 12 JDK 13)
int numLetters = switch (day) { case MONDAY, FRIDAY, SUNDAY -> 6; case TUESDAY -> 7; default -> { String s = day.toString(); int result = s.length(); yield result; } };
NullPointerExceptions, , null
JDK 15 (
-XX:+ShowCodeDetailsInExceptionMessages
JDK 14 )a.b.c.i = 99; --- Exception in thread "main" java.lang.NullPointerException: Cannot read field "c" because "a.b" is null
var,
JDK 11 ( JDK 10 )
var greeting = "Hello World!";
,
ClassDefNotFoundErrors
APIJDK 9 (Project Jigsaw)
module hu.advancedweb.helloworld { requires hu.advancedweb.somedependency; exports hu.advancedweb.hello }
JDK 9 ( Milling Coin)Diamond
JDK 9 ( Milling Coin)Try-with-resources, final
JDK 9 ( Milling Coin)@SafeVargs
private
JDK 9 ( Milling Coin)import
JDK 9
API
Java, , .
API Java 8 14, AdoptOpenJDK / jdk-api-diff GitHub .
(Non-Volatile Mapped Byte Buffers) API- FileChannel
JDK 14Files.mismatch
:
JDK 12Collectors.teeing
,
JDK 12:
indent
transform
JDK 12HTTP- HTTP/2, WebSocket API
JDK 11 ( Incubator JDK 9 )
HttpClient httpClient = HttpClient.newBuilder().build(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://advancedweb.hu/")) .GET() .build(); HttpResponse<String> response = httpClient.send(request, BodyHandlers.ofString());
- :
isBlank
,lines
,repeat
strip
JDK 11(Factory Methods) ,
JDK 9
Set<Integer> mySet = Set.of(1, 2, 3); List<Integer> myList = List.of(1, 2, 3); Map<String, Integer> myMap = Map.of("one", 1, "two", 2);
Reactive Streams, - « » (backpressure)1
JDK 9CompletableFuture
(-, )
JDK 9(
dropWhile
,takeWhile
) (iterate
,ofNullable
) ; (toUnmodifiableList
);
JDK 9Arrays.mismatch
:
JDK 9Stack-Walking API,
JDK 9API (, , , , / ),
ProcessBuilder
JDK 9VarHandle
API , ,java.util.concurrent.atomic
sun.misc.Unsafe
, , .
JDK 9(combinators) (lookup)
MethodHandle
JDK 9.
@Deprecated
forRemoval
, .
JDK 9OASIS Standard XML Catalog API XML
JDK 9JDK XML Xerces 2.11.0
JDK 9TIFF Image I/O Framework
JDK 9
Unicode 10.0, 27000 , 10 30
JDK 11 ( Unicode 8.0 JDK 9 )java.util.Locale
API , .
JDK 10ResourceBundle
UTF-8 ISO-8859-1
JDK 9CLDR (Common Locale Data Repository)
JDK 9
, //
JDK 9MultiResolutionImage
DPI
JDK 9HiDPI Windows Linux
JDK 9GTK 3 Linux JavaFX, Swing AWT
JDK 9Javadoc
@beaninfo
@BeanInfo
Swing
JDK 9GStreamer, JavaFX / Media, 1.4.4
JDK 9ICU OpenType HarfBuzz
JDK 9
API ( )
JDK 15 JDK 14Java-
JDK 13Java.
JDK 10, " "
JDK 12, Latin-1
JDK 9,
JDK 9(Interned)
JDK 9
java.lang.Math
sin
,cos
log
AArch64
JDK 11Security Manager
JDK 9Spin-Wait Hint (
Thread#onSpinWait
) «-»
JDK 9Marlin Renderer Java 2D Pisces
JDK 9GHASH RSA SPARC Intel x64
JDK 9.
Thread-Local Handshakes ( )
JDK 10
JDK 9,
java.util.concurrent
JDK 9
Linux ( )
JDK 10 (Graal JIT-) JDK 9 ( JVM-) JDK 9 (Graal AoT-)javac:
JDK 9
G1 ( )
NUMA
JDK 14
JDK 12
JDK 12
JDK 10G1 Parallel GC
JDK 9
Z Garbage Collector,
JDK 15 ( JDK 14 (Windows) JDK 14 (OS X) JDK 11 (Linux))Shenandoah, , ZGC,
JDK 15 ( JDK 12)Epsilon, ,
JDK 11XX:AllocateHeapAt=<path>
JDK 10
Flight Recorder: API ,
JDK 14Microbenchmark Suite JMH
JDK 12Flight Recorder OpenJDK
JDK 11JMTI
JDK 11C1 C2,
JDK 9, JVM
JDK 9 ( JVM) JDK 9 ( )
JDK 9
(CA) JDK, TLS
JDK 10
JDK 9- PKCS12 JKS
JDK 9.DRBG
SecureRandom
JDK 9X.509 SHA-1
JDK 9- SHA-3
JDK 9
TLS
TLS 1.3
JDK 11Datagram Transport Layer Security (DTLS) API
JDK 9OCSP TLS
JDK 9TLS Application-Layer Protocol Negotiation (ALPN) Extension, ; ALPN HTTP/ 2
JDK 9
(EdDSA) - RFC8032
JDK 15Curve25519 Curve448
JDK 11ChaCha20 Poly1305
JDK 11
, shebang(
#!
) Unix
JDK 11jshell
: Java REPL
JDK 9 (Project Kulla)
→ : JShell--release
,--source
--target
JDK 9JVM
JDK 9
Packaging Tool, : msi, exe, pkg, dmg, deb rpm ( Incubator )
JDK 14jlink
Java, Java, JDK
JDK 9 - [ 2 ], [ 3 ], [ 4 ], [ 4 ], [ 5 ]JAR , Java
JDK 9
Javadoc
Javadoc HTML5 ,
JDK 9 - [ 2 ], [ 3 ]
-
Unsafe::defineAnonymousClass()
Lookup::defineHiddenClass()
, , , .JDK 15
java.lang.invoke.constant
, (ldc
), ,
JDK 12CONSTANT_Dynamic
, ,INVOKEDYNAMIC
JDK 11Nest, - , - -.
JDK 11-, ,
invokedynamic
StringBuilder#append
. -.
JDK 9INVOKEDYNAMIC
/
JDK 9
Linux / AArch64
JDK 9Linux / s390x
JDK 9Unified arm32/arm64
JDK 9
.
JDK 9 JDK 10
Nashorn Javascript Engine
jjs
JDK 15 ( JDK 11 )Solaris SPARC
JDK 15 ( JDK 14 )RMI Activation ( RMI),
java.rmi.activation
rmid
, Java RMI
JDK 15Biased Locking ( ) ,
JDK 15Unsafe::defineAnonymousClass()
JDK 15Concurrent Mark Sweep (CMS)
JDK 14ParallelScavenge + SerialOld GC
JDK 14Pack200 API
JDK 14Pack200 API
JDK 11Java EE
JDK 11CORBA
JDK 11Thread#destroy
Thread#stop
JDK 11var
JDK 10javah
JDK 10
JDK 9API (
sun.*
)
JDK 9 [ 2 ]apple.applescript
com.apple
JDK 9X.509 SHA-1
JDK 9JRE :
JRE-Version
-version:
cli
JDK 9jhat
JDK 9JVM TI hprof Agent
JDK 9GC, JDK 8
JDK 9ResourceBundle UTF-8 ISO-8859-1
JDK 9API
JDK 9Concurrent Mark Sweep Garbage Collector
JDK 9Object.finalize()
JDK 9(
lib/endorsed
) (lib/ext
) JRE
JDK 9rt.jar
JRE
JDK 9
API Java 8 14, Java Almanac . jdeps, Java, , API.
JDK8 は2014年にリリースされました。JDK9を 3年半待たなければなりませんでした 。しかし、それ以来、物事はより速く進んでいます。Javaには、6か月ごとに新しいバージョンをリリースすることを目的とした新しいリリース構造があります。
Java 8は引き続きサポートされていますが、最新バージョンにアップグレードすると、テーブルに大幅な改善がもたらされます。