آخر تحديث: 09/29/2020 متضمن التغييرات في JDK 15 .
من إصدار الإصدار 8 إلى الإصدار 15 ، أنتجت Java 163 JDK Extension Proposals (JEPs) ، كل منها يجلب بعض التحسينات على النظام الأساسي. هذه الصفحة هي منهجية و المنسقة التابعة بعناية قائمة من معظم التحسينات الهامة.
المحتوى
ميزات اللغة الجديدة
واجهة برمجة تطبيقات جديدة
تحسينات في الأداء
تحسينات أمنية
-
Javadoc
, , :
Java 8 , . , .
, . . , Java 8 .
String html = """ <html> <body> <p>Hello, world</p> </body> </html> """;(Sealed) , ( )
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 )
record Point(int x, int y) { }instanceof ( )
if (obj instanceof String s) { System.out.println("obj is a String and it' length is " + s.length()); }Switch
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:+ShowCodeDetailsInExceptionMessagesJDK 14 )a.b.c.i = 99; --- Exception in thread "main" java.lang.NullPointerException: Cannot read field "c" because "a.b" is nullvar,var greeting = "Hello World!";,
ClassDefNotFoundErrorsAPIJDK 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)@SafeVargsprivate
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:
indenttransform
JDK 12HTTP- HTTP/2, WebSocket API
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,repeatstrip
JDK 11(Factory Methods) ,
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 9VarHandleAPI , ,java.util.concurrent.atomicsun.misc.Unsafe, , .
JDK 9(combinators) (lookup)
MethodHandle
JDK 9.
@DeprecatedforRemoval, .
JDK 9OASIS Standard XML Catalog API XML
JDK 9JDK XML Xerces 2.11.0
JDK 9TIFF Image I/O Framework
java.util.LocaleAPI , .
JDK 10ResourceBundleUTF-8 ISO-8859-1
JDK 9CLDR (Common Locale Data Repository)
JDK 9
, //
JDK 9MultiResolutionImageDPI
JDK 9HiDPI Windows Linux
JDK 9GTK 3 Linux JavaFX, Swing AWT
JDK 9Javadoc
@beaninfo@BeanInfoSwing
JDK 9GStreamer, JavaFX / Media, 1.4.4
JDK 9ICU OpenType HarfBuzz
JDK 9
java.lang.Mathsin,coslogAArch64
JDK 11Security Manager
JDK 9Spin-Wait Hint (
Thread#onSpinWait) «-»
JDK 9Marlin Renderer Java 2D Pisces
JDK 9GHASH RSA SPARC Intel x64
JDK 9.
G1 ( )
Z Garbage Collector,
JDK 15 ( JDK 14 (Windows) JDK 14 (OS X) JDK 11 (Linux))Epsilon, ,
JDK 11XX:AllocateHeapAt=<path>
JDK 10
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
Packaging Tool, : msi, exe, pkg, dmg, deb rpm ( Incubator )
JDK 14jlinkJava, Java, JDK
JDK 9 - [ 2 ], [ 3 ], [ 4 ], [ 4 ], [ 5 ]JAR , Java
JDK 9
Javadoc
-
Unsafe::defineAnonymousClass()Lookup::defineHiddenClass(), , , .java.lang.invoke.constant, (ldc), ,
JDK 12CONSTANT_Dynamic, ,INVOKEDYNAMIC
JDK 11Nest, - , - -.
JDK 11-, ,
invokedynamicStringBuilder#append. -.
JDK 9INVOKEDYNAMIC/
JDK 9
RMI Activation ( RMI),
java.rmi.activationrmid, 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#destroyThread#stop
JDK 11var
JDK 10javah
JDK 10apple.applescriptcom.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.jarJRE
JDK 9
API Java 8 14, Java Almanac . jdeps, Java, , API.
تم إصدار JDK 8 في عام 2014. كان علينا انتظار 9 دينار أردني لمدة ثلاث سنوات ونصف. لكن الأمور سارت بشكل أسرع منذ ذلك الحين. تحتوي Java على بنية إصدار جديدة تهدف إلى إصدار إصدار جديد كل ستة أشهر.
بينما لا يزال Java 8 مدعومًا ، فإن الترقية إلى أحدث إصدار تجلب عددًا كبيرًا من التحسينات على الجدول.