ΠΠΎΡΠ»Π΅ ΡΠ΅ΡΡΠΈ ΠΌΠ΅ΡΡΡΠ΅Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Oracle ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Java SE 23 (Java Platform, Standard Edition 23), Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠ°Π»ΠΎΠ½Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΡΠΊΡΡΡΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ OpenJDK. ΠΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π² Java SE 23 ΡΠΎΡ ΡΠ°Π½Π΅Π½Π° ΠΎΠ±ΡΠ°ΡΠ½Π°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ ΠΏΡΠΎΡΠ»ΡΠΌΠΈ Π²ΡΠΏΡΡΠΊΠ°ΠΌΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Java — Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ°Π½Π΅Π΅ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ Java-ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½Ρ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ. ΠΠΎΡΠΎΠ²ΡΠ΅ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ±ΠΎΡΠΊΠΈ Java SE 22 (JDK, JRE ΠΈ Server JRE) ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Ρ Π΄Π»Ρ Linux (x86_64, AArch64), Windows (x86_64) ΠΈ macOS (x86_64, AArch64). Π Π°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½Π°Ρ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° OpenJDK ΡΡΠ°Π»ΠΎΠ½Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Java 23 ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠΊΡΡΡΠ° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ GPLv2 Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠΌΠΈ GNU ClassPath, ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΠΈΠΌΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ Ρ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°ΠΌΠΈ.
Java SE 23 ΠΎΡΠ½Π΅ΡΡΠ½ ΠΊ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Π²ΡΠΏΡΡΠΊΠΎΠ² Ρ ΠΎΠ±ΡΡΠ½ΡΠΌ ΡΡΠΎΠΊΠΎΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΡΠ΄ΡΡ Π²ΡΠΏΡΡΠΊΠ°ΡΡΡΡ Π΄ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠ΅Π»ΠΈΠ·Π°. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Π΅ΡΠΊΠΈ Ρ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΡΡΠΎΠΊΠΎΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ (LTS) ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Java SE 21 ΠΈΠ»ΠΈ Java SE 17, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄ΡΡ Π²ΡΠΏΡΡΠΊΠ°ΡΡΡΡ Π΄ΠΎ 2031 ΠΈ 2029 Π³ΠΎΠ΄ΠΎΠ² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ (ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ — Π΄ΠΎ 2028 ΠΈ 2026 Π³ΠΎΠ΄ΠΎΠ²). Π Π°ΡΡΠΈΡΠ΅Π½Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° LTS-Π²Π΅ΡΠΊΠΈ Java SE 8 ΠΏΡΠΎΠ΄Π»ΠΈΡΡΡ Π΄ΠΎ 2030 Π³ΠΎΠ΄Π°, Π° Java SE 11 — Π΄ΠΎ 2032 Π³ΠΎΠ΄Π°.
Π‘ΡΠ΅Π΄ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΡ Π² Java SE 23 Π½ΠΎΠ²ΡΠ΅ΡΡΠ²:
- ΠΠΊΠ»ΡΡΡΠ½ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠ²Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ ΡΠ°Π±ΠΎΡΡ ΡΠ±ΠΎΡΡΠΈΠΊΠ° ΠΌΡΡΠΎΡΠ° ZGC (Generational Z Garbage Collector), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ ΡΠ°Π·Π΄Π΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ «ΡΡΠ°ΡΡΡ » ΠΈ «ΠΌΠΎΠ»ΠΎΠ΄ΡΡ » ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΡΡΠΎ ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΎΡΠΈΡΡΠΊΠΈ Π½Π΅Π΄Π°Π²Π½ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΆΠΈΠ·Π½ΠΈ. ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Generational ZGC ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΡΠΈΡΠΊΠΈ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΎΠΊ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ², ΡΠ½ΠΈΠΆΠ°Π΅Ρ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° CPU ΠΈ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ ΠΌΡΡΠΎΡΠ°. Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Generational ZGC Ρ Apache Cassandra 4 ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ Π² 4 ΡΠ°Π·Π° ΠΏΡΠΈ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ΅ ΠΊΡΡΠΈ (heap) ΠΈ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΊΡΡΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΡΡ ΠΏΡΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ.
- Π JavaDoc Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ Markdown Π΄Π»Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ
, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΌΠ΅ΡΠΈ ΠΈΠ· HTML ΠΈ @-ΡΠ΅Π³ΠΎΠ² JavaDoc.
- ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ ΠΎΠ±ΡΠ°Π·ΡΠΎΠΌ ΡΠ°ΡΡΠΈΡΠ΅Π½Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΡ ΡΠΈΠΏΠΎΠ² (int, byte, char ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΠΈΠΏΡ, Π½Π΅ ΡΠ²Π»ΡΡΡΠΈΠ΅ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ) Π²ΠΎ Π²ΡΠ΅Ρ Π²ΠΈΠ΄Π°Ρ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ², Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ «instanceof» ΠΈ Π² Π±Π»ΠΎΠΊΠ°Ρ «switch». switch (x.getStatus()) { case 0 -> «okay»; case 1 -> «warning»; case 2 -> «error»; case int i -> «unknown status: » + i; } if (i instanceof byte b) { … b … }
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ «import module M» Π΄Π»Ρ ΠΈΠΌΠΏΠΎΡΡΠ° ΡΡΠ°Π·Ρ Π²ΡΠ΅Ρ
ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΡΡ
ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΊΠ»Π°ΡΡΡ Π±Π΅Π· ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΡ
ΠΌΠ΅ΡΡΠ° Π² ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ «import module java.base» ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ ΠΈΠΌΠΏΠΎΡΡΡ Π²ΡΠ΅Ρ
54 ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², Π²Ρ
ΠΎΠ΄ΡΡΠΈΡ
Π² ΠΌΠΎΠ΄ΡΠ»Ρ java.base, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π½Π΅Π΅ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ Π±Ρ ΡΠΏΠΎΠΌΠΈΠ½Π°ΡΡ ΠΏΠΎ-ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ («import java.io.*», «import java.util.*» ΠΈ Ρ.ΠΏ.).
ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π²ΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ API Class-File Π΄Π»Ρ ΡΠ°Π·Π±ΠΎΡΠ°, Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ Java. ClassFile cf = ClassFile.of(); ClassModel classModel = cf.parse(bytes); byte[] newBytes = cf.build(classModel.thisClass().asSymbol(), classBuilder -> { for (ClassElement ce : classModel) { if (!(ce instanceof MethodModel mm && mm.methodName().stringValue().startsWith(«debug»))) { classBuilder.with(ce); } } });
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π²ΠΎΡΡΠΌΠ°Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ API Vector, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠ΅Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ Π²Π΅ΠΊΡΠΎΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²Π΅ΠΊΡΠΎΡΠ½ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² x86_64 ΠΈ AArch64 ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ°Π·Ρ ΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ (SIMD). Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ Π² JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ΅ HotSpot Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΏΠΎ Π°Π²ΡΠΎΠ²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠΊΠ°Π»ΡΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, Π½ΠΎΠ²ΡΠΉ API Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ²Π½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π΄Π»Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ .
- Π ΠΊΠ»Π°ΡΡ java.io.Console Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ format, printf, readPassword ΠΈ readLine Π΄Π»Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π²ΡΠ²ΠΎΠ΄Π° ΠΈ ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ° Ρ ΡΡΡΡΠΎΠΌ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΠΈ. System.console().printf(Locale.FRANCE, «%1$tY-%1$tB-%1$te %1$tA», new Date()) 2024-mai-16 jeudi
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ API Stream, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ Π² ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ . Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π½ΠΎΠ²ΠΎΠΉ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Stream::gather(Gatherer), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠ°, ΠΏΡΠΈΠΌΠ΅Π½ΡΡ ΠΊ Π½ΠΈΠΌ Π·Π°Π΄Π°Π½Π½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ. jshell> Stream.of(1,2,3,4,5,6,7,8,9).gather(new WindowFixed(3)).toList() $1 ==> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΡΠ΅ΡΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π΅ΡΠ²Π½ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ Π±Π΅Π·ΡΠΌΡΠ½Π½ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° «main», Π² ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ Π±Π΅Π· ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ public/static, ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΠΏΡΠΎΡΠΈΡ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ°. // Π±ΡΠ»ΠΎ public class HelloWorld { public static void main(String[] args) { System.out.println(«Hello world!»); } } // ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ void main() { System.out.println(«Hello, World!»); }
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ Π²ΡΠΎΡΠΎΠΉ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΠ΅ΠΉ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ super(…), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π΄Π»Ρ ΡΠ²Π½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ· ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, Π΅ΡΠ»ΠΈ ΡΡΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π΅ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ. class Outer { void hello() { System.out.println(«Hello»); } class Inner { Inner() { hello(); super(); } } }
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΡΠ΅ΡΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ (Scoped Values), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΏΠΎΡΠΎΠΊΠ°Ρ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ (Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π°ΡΠ»Π΅Π΄ΡΡΡΡΡ). Scoped Values ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π·Π°ΠΌΠ΅Π½Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΊ ΠΏΠΎΡΠΎΠΊΡ (thread-local variables) ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Ρ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² (ΡΡΡΡΡΠΈ ΠΈ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ²). ΠΠ»Π°Π²Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ Scoped Values ΠΎΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΊ ΠΏΠΎΡΠΎΠΊΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΡΠ΅ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·, Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ ΠΈ ΠΎΡΡΠ°ΡΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°.
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ΅ΡΠΈΠΉ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ API Π΄Π»Ρ cΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° (Structured Concurrency), ΡΠΏΡΠΎΡΠ°ΡΡΠ΅Π³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π·Π° ΡΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π·Π°Π΄Π°Ρ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ Π² ΡΠ°Π·Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠ°Ρ , ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°.
- ΠΠ±ΡΡΠ²Π»Π΅Π½Ρ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌΠΈ ΠΈ Π½Π°ΠΌΠ΅ΡΠ΅Π½Ρ ΠΊ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π²Π½Π΅ΡΠ½Π΅ΠΉ ΠΏΠ°ΠΌΡΡΠΈ (Π²Π½Π΅ JVM), ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΊΠ»Π°ΡΡΠΎΠΌ sun.misc.Unsafe. ΠΠ»Ρ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΠΏΠ°ΠΌΡΡΠΈ Π²Π½Π΅ ΠΊΡΡΠΈ (off-heap) ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ ΠΊΠΎΠ΄ΠΎΠΌ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ API VarHandle ΠΈ API FFM (Foreign Function & Memory).
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ JavaFX 23 ΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΎΡΡΠ°Π² Oracle JDK 23 JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° GraalVM.
Π’Π°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π½ΠΎΠ²ΡΠΉ Π²ΡΠΏΡΡΠΊ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠΉ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ GraalVM, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° JavaScript (Node.js), Python, Ruby, R, Π»ΡΠ±ΡΡ
ΡΠ·ΡΠΊΠ°Ρ
Π΄Π»Ρ JVM (Java, Scala, Clojure, Kotlin) ΠΈ ΡΠ·ΡΠΊΠ°Ρ
, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ
ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡΡΡ Π±ΠΈΡΠΊΠΎΠ΄ LLVM (C, C++, Rust). ΠΡΠΎΠΌΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ JDK 23 Π² Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΡΠ΅Π΄ΡΡΠ² Π΄Π»Ρ Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΡ Python ΠΈ WebAssembly Π² Java-ΠΊΠΎΠ΄ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru