ืืืืจ ืฉืืฉื ืืืืฉืื ืฉื ืคืืชืื, ืืืจืงื ืฉืืจืจื ืืช ืคืืืคืืจืืช Java SE 20 (Java Platform, Standard Edition 20), ืืืฉืชืืฉืช ืืคืจืืืงื ืืงืื ืืคืชืื OpenJDK ืืืืฉืื ืืืืืก. ืืืขื ืืกืจืช ืืืง ืืืชืืื ืืช ืฉืืืฆืื ืืฉืืืืฉ, Java SE 20 ืฉืืืจ ืขื ืชืืืืืช ืืืืืจ ืขื ืืืืืจืืช ืงืืืืืช ืฉื ืคืืืคืืจืืช Java - ืจืื ืคืจืืืงืื ื-Java ืฉื ืืชืื ืืขืืจ ืขืืืื ืืคืขืื ืืื ืฉืื ืื ืืืฉืจ ืื ืคืืขืืื ืชืืช ืืืจืกื ืืืืฉื. ืื ืืื ื ืืชื ืช ืืืชืงื ื ืฉื Java SE 20 (JDK, JRE ืืฉืจืช JRE) ืืืื ืืช ืขืืืจ Linux (x86_64, AArch64), Windows (x86_64) ื-macOS (x86_64, AArch64). ืืืืืฉ ืืืชืืืืกืืช ืฉื Java 20, ืฉืคืืชื ืขื ืืื ืคืจืืืงื OpenJDK, ืคืชืื ืืืืืื ืชืืช ืจืืฉืืื GPLv2 ืขื ืืจืืืื ืฉื GNU ClassPath ืืื ืืืคืฉืจ ืงืืฉืืจ ืืื ืื ืืืืฆืจืื ืืกืืจืืื.
Java SE 20 ืืกืืืืช ืืืจืกืช ืชืืืื ืจืืืื, ืขื ืขืืืื ืื ืฉืืฉืืืจืจื ืืคื ื ืืืืืืจื ืืืื. ืขื ืฃ ืืชืืืื ืืืืื ืืจืื (LTS) ืฆืจืื ืืืืืช Java SE 17, ืฉืืงืื ืขืืืื ืื ืขื 2029. ื ืืืืจ ืื ืืื ืืืฉืืจืืจ ืฉื Java 10, ืืคืจืืืงื ืขืืจ ืืชืืืื ืคืืชืื ืืืฉ, ืืฉืจ ืืจืื ืขื ืืืืืจ ืงืฆืจ ืืืชืจ ืืืืืืฆืจืืช ืืืืืจืืช ืืืฉืืช. ืคืื ืงืฆืืื ืืืืช ืืืฉื ืืคืืชืืช ืืขืช ืืกื ืืฃ ืืืกืืจ ืืื ืืืชืขืืื ืื ืืืื, ืืืฉืื ืฉืื ืืืื ืฉืืืจ ืืืฉืืื ืืืื ื ืืกืชืขืคืื ืกื ืืคืื ืื ืืฆื ืฉื ื ืืื ืืืืฆื ืืืืืจืืช ืืืฉืืช.
ืชืืื ืืช ืืืฉืืช ื-Java 20 ืืืืืืช:
- ืืืฆืขื ืชืืืื ืจืืฉืื ืืช ืขืืืจ Scoped Values, ืืืืคืฉืจืช ืฉืืชืืฃ ื ืชืื ืื ืืืชื ื ืืชื ืื ืืฉืื ืื ืืฉืจืฉืืจืื ืืืืืคื ืืขืืื ืฉื ื ืชืื ืื ืืื ืฉืจืฉืืจื ืฆืืฆื (ืขืจืืื ืขืืืจืื ืืืจืืฉื). ืขืจืืื ืืืืงืฃ ืืคืืชืืื ืืื ืืืืืืฃ ืืช ืื ืื ืื ืืืฉืชื ืื ืืืงืืืืื ืฉื ืืฉืจืฉืืจ ืืื ืืขืืืื ืืืชืจ ืืขืช ืฉืืืืฉ ืืืกืคืจืื ืืืืืื ืืืื ืฉื ืฉืจืฉืืจืื ืืืจืืืืืืื (ืืืคื ืืืืืืื ื ืฉืจืฉืืจืื). ืืืืื ืืขืืงืจื ืืื ืขืจืืื ืืืืงืฃ ืืืฉืชื ืื ืืงืืืืื ืืื ืฉืืจืืฉืื ืื ื ืืชืืื ืคืขื ืืืช, ืื ื ืืชื ืื ืืฉืื ืื ืืืืืจ ืืืชืจ ืื ืืชืจืื ืืืื ืื ืจืง ืืืฉื ืืืฆืืข ืืฉืจืฉืืจ. class Server { final static ScopedValue CURRENT_USER = new ScopedValue(); void serve(Request request, Response response) { var level = (request. isAuthorized()? ADMIN : GUEST); var user = ืืฉืชืืฉ ืืืฉ (ืจืื); ScopedValue.where(CURRENT_USER, ืืฉืชืืฉ) .run(() -> Application.handle(request, response)); } } class DatabaseManager { DBConnection open() { var user = Server.CURRENT_USER.get(); if (!user.canOpen()) ืืจืืง ืืืฉ InvalidUserException(); ืืืืจ DBConnection ืืืฉ (...); } }
- ืืืฉืื ืืื ื ืฉื ื ืฉื ืืคืืกื ืจืฉืืืืช ื ืืกืฃ, ืืืจืืื ืืช ืืืืืช ืืชืืืช ืืืคืืกืื ืฉื Java 16 ืื ืชื ืืช ืืขืจืืื ืฉื ืืืืงืืช ืฉื ืจืฉืืืืช ืืกืื. ืืืืืื: record Point(int x, int y) {} static void printSum(Object obj) { if (instanceof Point p) { int x = px(); int y = py(); System.out.println(x+y); } }
- ื ืืกืคื ืืืฉืื ืจืืฉืื ื ืจืืืขื ืฉื ืืชืืืช ืืคืืกืื ืืืืืืื ืืชื, ืืืืคืฉืจ ืฉืืืืฉ ืืชืื ืืืช ืืืืฉืืช ืืชืืืืืช ืืงืจื ืืืืกืืช ืกืืจื ืฉื ืขืจืืื ืื-ืืื ืืช, ืฉืขืืืจื ื ืขืฉื ืฉืืืืฉ ืืขืืจ ืืฉืจืฉืจืืืช ืืกืืจืืืืช ืฉื ืืฆืืจืืช if...else. static String formatterPatternSwitch(Object obj) { return switch (obj) { case Integer i -> String.format("int %d", i); case Long l -> String.format("long %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("ืืืจืืืช %s", s); ืืจืืจืช ืืืื -> o.toString(); }; }
- ื ืืกืคื ืืืฉืื ืจืืฉืื ื ืฉื ื ืฉื FFM (Foreign Function & Memory) API, ืืืืคืฉืจ ืื ืืืจืื ืืช ืืืื ืืจืืงืฆืื ืฉื ืชืืื ืืืช Java ืขื ืงืื ืื ืชืื ืื ืืืฆืื ืืื ืืืืฆืขืืช ืงืจืืื ืืคืื ืงืฆืืืช ืืกืคืจืืืช ืืืฆืื ืืืช ืืืืฉื ืืืืืจืื ืืืืฅ ื-JVM.
- ื ืืกืคื ืืืฉืื ืจืืฉืื ื ืฉื ื ืฉื ืคืชืืืื ืืืจืืืืืืื, ืฉืื ืคืชืืืื ืงืืื ืฉืืคืฉืืื ืืืื ืืชืืื ืืชืืืืงื ืฉื ืืืฉืืืื ืืจืืื ืคืชืืืื ืืขืื ืืืฆืืขืื ืืืืืื.
- ืืจืกื ืฉื ืืื ืฉื ื-API ืื ืืกืืื ื ืฉื Structured Parallelism API ื ืืกืคื ืืื ืืคืฉื ืืช ืืคืืชืื ืฉื ืืืฉืืืื ืืจืืืื ืขื ืืื ืืชืืืืกืืช ืืืกืคืจ ืืฉืืืืช ืืคืืขืืืช ืขื ืฉืจืฉืืจืื ืฉืื ืื ืืืืืื ืืืช.
- ื ืืกืคื ืืืฉืื ืจืืฉืื ื ืืืืฉื ืฉื ื-Vector API, ืืืกืคืง ืคืื ืงืฆืืืช ืืืืฉืืืื ืืงืืืจืืื ืืคืืขืืื ืืืืฆืขืืช ืืืจืืืช ืืืืงืืืจ ืฉื ืืขืืื x86_64 ื-AArch64 ืืืืคืฉืจืืช ืื ืืืืื ืคืขืืืืช ืื-ืืื ืืช ืขื ืืกืคืจ ืขืจืืื (SIMD). ืื ืืืื ืืืืืืืช ืื ืืชื ืืช ืืืืืจ HotSpot JIT ื-Autovectorization ืฉื ืคืขืืืืช ืกืงืืจืืืช, ื-API ืืืืฉ ืืืคืฉืจ ืืฉืืื ืืืืคื ืืคืืจืฉ ื-Vectorization ืขืืืจ ืขืืืื ื ืชืื ืื ืืงืืืื.
ืืงืืจ: OpenNet.ru