Π‘Π»Π΅Π΄ ΡΠ΅ΡΡ ΠΌΠ΅ΡΠ΅ΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Oracle ΠΏΡΡΠ½Π° Java SE 16 (Java Platform, Standard Edition 16), ΠΊΠΎΡΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° OpenJDK ΠΊΠ°ΡΠΎ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ. Java SE 16 ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΎΠ±ΡΠ°ΡΠ½Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈ ΠΈΠ·Π΄Π°Π½ΠΈΡ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Java; Π²ΡΠΈΡΠΊΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° Java ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΡΠ΅ ΡΠ°Π±ΠΎΡΡΡ Π±Π΅Π· ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ Π±ΡΠ΄Π°Ρ ΡΡΠ°ΡΡΠΈΡΠ°Π½ΠΈ ΠΏΠΎΠ΄ Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ. ΠΠΎΡΠΎΠ²ΠΈ Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΠΈ Π½Π° Java SE 16 (JDK, JRE ΠΈ Server JRE) ΡΠ° ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ Π·Π° Linux (x86_64, AArch64), Windows ΠΈ macOS. Π Π°Π·ΡΠ°Π±ΠΎΡΠ΅Π½Π° ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° OpenJDK, ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ½Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Java 16 Π΅ Ρ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π· GPLv2, Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΡ GNU ClassPath, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Ρ ΡΡΡΠ³ΠΎΠ²ΡΠΊΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ.
Java SE 16 ΡΠ΅ ΠΊΠ»Π°ΡΠΈΡΠΈΡΠΈΡΠ° ΠΊΠ°ΡΠΎ Π²Π΅ΡΡΠΈΡ Π·Π° ΠΎΠ±ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° ΠΈ ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎ ΡΠ»Π΅Π΄Π²Π°ΡΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅. ΠΠ»ΠΎΠ½ΡΡ Π·Π° Π΄ΡΠ»Π³ΠΎΡΡΠΎΡΠ½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° (LTS) ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ Java SE 11, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎ 2026 Π³. Π‘Π»Π΅Π΄Π²Π°ΡΠΎΡΠΎ LTS ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π΅ Π½Π°ΡΡΠΎΡΠ΅Π½ΠΎ Π·Π° ΡΠ΅ΠΏΡΠ΅ΠΌΠ²ΡΠΈ 2021 Π³. ΠΠ΅ΠΊΠ° Π²ΠΈ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΠ΅ Π·Π°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ Ρ ΠΏΡΡΠΊΠ°Π½Π΅ΡΠΎ Π½Π° Java 10, ΠΏΡΠΎΠ΅ΠΊΡΡΡ ΠΏΡΠ΅ΠΌΠΈΠ½Π° ΠΊΡΠΌ Π½ΠΎΠ² ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π° ΠΏΠΎ-ΠΊΡΠ°ΡΡΠΊ ΡΠΈΠΊΡΠ» Π·Π° ΡΠΎΡΠΌΠΈΡΠ°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ Π²Π΅ΡΡΠΈΠΈ. ΠΠΎΠ²Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π²Π΅ΡΠ΅ Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½Π° Π² Π΅Π΄ΠΈΠ½ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π³Π»Π°Π²Π΅Π½ ΠΊΠ»ΠΎΠ½, ΠΊΠΎΠΉΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π° Π³ΠΎΡΠΎΠ²ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΈ ΠΎΡ ΠΊΠΎΠΉΡΠΎ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ ΡΠ°Π·ΠΊΠ»ΠΎΠ½ΡΠ²Π°Ρ Π½Π° Π²ΡΠ΅ΠΊΠΈ ΡΠ΅ΡΡ ΠΌΠ΅ΡΠ΅ΡΠ°, Π·Π° Π΄Π° ΡΠ΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Ρ Π½ΠΎΠ²ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ.
Π ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° Π·Π° Π½ΠΎΠ²ΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° ΡΠ΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠΈ ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅ Mercurial ΠΊΡΠΌ Git ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Π·Π° ΡΡΠ²ΠΌΠ΅ΡΡΠ½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° GitHub. ΠΡΠ°ΠΊΠ²Π° ΡΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡΠ° Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ, Π΄Π° ΠΏΠΎΠ²ΠΈΡΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΡΠΎ, Π΄Π° ΠΎΡΠΈΠ³ΡΡΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² ΡΡΠ»Π°ΡΠ° ΠΈΡΡΠΎΡΠΈΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π·Π° ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΠΊΠΎΠ΄Π° ΠΈ Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π½Π° API Π΄Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ½ΠΈΡΠ΅ ΠΏΠΎΡΠΎΡΠΈ. Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Git ΠΈ GitHub ΠΏΡΠ°Π²ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΠΎ-ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»Π΅Π½ Π·Π° Π½Π°ΡΠΈΠ½Π°Π΅ΡΠΈ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ, ΡΠ²ΠΈΠΊΠ½Π°Π»ΠΈ Ρ Git.
ΠΠΎΠ²ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² Java 16 Π²ΠΊΠ»ΡΡΠ²Π°Ρ:
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π΅Π½ ΠΌΠΎΠ΄ΡΠ» jdk.incubator.vector Ρ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π° Vector API, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° Π²Π΅ΠΊΡΠΎΡΠ½ΠΈ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π²Π΅ΠΊΡΠΎΡΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ x86_64 ΠΈ AArch64 ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΊΡΠΌ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ (SIMD). ΠΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΡ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈ Π² HotSpot JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π²Π΅ΠΊΡΠΎΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΊΠ°Π»Π°ΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Π½ΠΎΠ²ΠΈΡΡ API Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠ·ΡΠΈΡΠ½ΠΎ Π΄Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°ΡΠ΅ Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΡΡΠ° Π·Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈ.
- ΠΠΎΠ΄ΡΡ Π½Π° JDK ΠΈ VM HotSpot, Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° C++, ΠΈΠΌΠ° ΠΏΡΠ°Π²ΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΡΠ²Π΅Π΄Π΅Π½ΠΈ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π° C++14. ΠΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° Π±ΡΡ Π° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΡΠ΅ C++98/03.
- ZGC (Z Garbage Collector), ΠΊΠΎΠΉΡΠΎ ΡΠ°Π±ΠΎΡΠΈ Π² ΠΏΠ°ΡΠΈΠ²Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠ° Π·Π°ΠΊΡΡΠ½Π΅Π½ΠΈΡΡΠ°, Π΄ΡΠ»ΠΆΠ°ΡΠΈ ΡΠ΅ Π½Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° Π±ΠΎΠΊΠ»ΡΠΊ, Π΄ΠΎΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΡΡΠ΅ΠΊΠΎΠ²Π΅ ΠΎΡ Π½ΠΈΡΠΊΠΈ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ, Π±Π΅Π· Π΄Π° ΠΏΠΎΡΡΠ°Π²Ρ Π½Π° ΠΏΠ°ΡΠ·Π° Π½ΠΈΡΠΊΠΈΡΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. ZGC ΡΠ΅Π³Π° ΠΈΠΌΠ° ΡΠ°ΠΌΠΎ ΡΠ°Π±ΠΎΡΠ°, ΠΊΠΎΡΡΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΡΠΏΠΈΡΠ°Π½Π΅, ΠΊΠΎΡΡΠΎ ΠΈΠΌΠ° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΈ Π·Π°ΠΊΡΡΠ½Π΅Π½ΠΈΡ, ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π½Π΅ Π½Π°Π΄Π²ΠΈΡΠ°Π²Π°ΡΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎΡΡΠΎΡΠΈΠ½ ΠΌΠΈΠΊΡΠΎΡΠ΅ΠΊΡΠ½Π΄ΠΈ.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Unix ΡΠΎΠΊΠ΅ΡΠΈ (AF_UNIX) ΠΊΡΠΌ ΠΊΠ»Π°ΡΠΎΠ²Π΅ΡΠ΅ SocketChannel, ServerSocketChannel ΠΈ java.nio.channels.
- ΠΠ΅ΡΠ΅ Π²Π½Π΅Π΄ΡΠ΅Π½ ΠΏΠΎΡΡ Π·Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΡΠ° Π½Π° Linux Alpine ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° C Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° musl, ΠΊΠΎΡΡΠΎ Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π° Π² ΡΡΠ΅Π΄ΠΈ Π·Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ, ΠΌΠΈΠΊΡΠΎΡΡΠ»ΡΠ³ΠΈ, ΠΎΠ±Π»Π°ΡΠ½ΠΈ ΠΈ Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ. ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΠΏΠΎΡΡ Π² ΡΠ°ΠΊΠΈΠ²Π° ΡΡΠ΅Π΄ΠΈ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Java ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΠΊΠ°ΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ jlink, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΈ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° ΡΡΠ΅Π΄Π°, Π΄ΠΎΡΡΠ°ΡΡΡΠ½Π° Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ.
- ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡΡ Elastic Metaspace Π΅ Π²Π½Π΅Π΄ΡΠ΅Π½, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΠΉΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ ΠΏΠΎ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ ΠΈ Π²ΡΡΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ, Π·Π°Π΅ΡΠ° ΠΎΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ Π½Π° ΠΊΠ»Π°ΡΠ° (ΠΌΠ΅ΡΠ°ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ) Π² JVM HotSpot. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Elastic Metaspace Π½Π°ΠΌΠ°Π»ΡΠ²Π° ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°, Π½Π°ΠΌΠ°Π»ΡΠ²Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π·Π°ΡΠ΅ΠΆΠ΄Π°ΡΠΈΡ ΠΊΠ»Π°Ρ ΠΈ ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈΠΌΠ° Π±Π»Π°Π³ΠΎΠΏΡΠΈΡΡΠ΅Π½ Π΅ΡΠ΅ΠΊΡ Π²ΡΡΡ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° Π΄ΡΠ»Π³ΠΎ ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ ΡΡΡΠ²ΡΡΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ°Π΄ΠΈ ΠΏΠΎ-Π±ΡΡΠ·ΠΎΡΠΎ Π²ΡΡΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°, Π·Π°Π΅ΡΠ° ΠΎΡ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ Π½Π° ΠΊΠ»Π°ΡΠ°, ΠΊΡΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°. ΠΠ° Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΡΠ»Π΅Π΄ ΡΠ°Π·ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠ»Π°ΡΠΎΠ²Π΅, ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΠΎΠΏΡΠΈΡΡΠ° β-XX:MetaspaceReclaimPolicy=(balanced|aggressive|none)β.
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ JDK ΠΏΠΎΡΡ Π·Π° Windows ΡΠΈΡΡΠ΅ΠΌΠΈ, ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ Π½Π° Ρ Π°ΡΠ΄ΡΠ΅Ρ Ρ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° AArch64.
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ Π΅ ΡΡΠ΅ΡΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π΅Π½ ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° API Π·Π° ΡΡΠΆΠ΄Π΅ΡΡΡΠ°Π½Π΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΏΠ°ΠΌΠ΅Ρ, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° Java ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° Π΄Π° ΠΈΠΌΠ°Ρ ΡΠΈΠ³ΡΡΠ΅Π½ ΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ΅Π³ΠΈΠΎΠ½ΠΈ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈΠ·Π²ΡΠ½ Java heap ΡΡΠ΅Π· ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈΡΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ MemorySegment, MemoryAddress ΠΈ MemoryLayout.
- ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΎ Π΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½ΠΎ API Π·Π° ΡΡΠΆΠ΄Π΅ΡΡΡΠ°Π½Π½ΠΈ Π²ΡΡΠ·ΠΊΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π΄ΠΎΡΡΡΠΏ ΠΎΡ Java Π΄ΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΊΠΎΠ΄. ΠΠ°Π΅Π΄Π½ΠΎ Ρ API Π·Π° ΡΡΠΆΠ΄Π° ΠΏΠ°ΠΌΠ΅Ρ, Π½ΠΎΠ²ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ ΠΏΡΠ°Π²ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠΈ Π½Π°Π΄ ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΠΎΠ½Π°Π»Π½ΠΈΡΠ΅ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° jpackage, ΠΊΠΎΡΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ Π·Π° ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»Π½ΠΈ Java ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Π΅ Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° javapackager ΠΎΡ JavaFX ΠΈ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ Π²ΡΠ² ΡΠΎΡΠΌΠ°ΡΠΈ, Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½ΠΈ Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ (msi ΠΈ exe Π·Π° Windows, pkg ΠΈ dmg Π·Π° macOS, deb ΠΈ rpm Π·Π° Linux). ΠΠ°ΠΊΠ΅ΡΠΈΡΠ΅ Π²ΠΊΠ»ΡΡΠ²Π°Ρ Π²ΡΠΈΡΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ.
- Π‘ΡΡΠΈΠΊΡΠ½ΠΎΡΠΎ ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ Π²ΡΡΡΠ΅ΡΠ½ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π½Π° JDK Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΎ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅, Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΡΠΈΡΠΈΡΠ½ΠΈ API ΠΊΠ°ΡΠΎ sun.misc.Unsafe. Π‘ΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° ΠΎΠΏΡΠΈΡΡΠ° β--illegal-accessβ Π²Π΅ΡΠ΅ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½Π° Π½Π° βdenyβ Π²ΠΌΠ΅ΡΡΠΎ βpermitβ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠ° ΠΎΠΏΠΈΡΠΈΡΠ΅ ΠΎΡ ΠΊΠΎΠ΄ Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π²ΡΡΡΠ΅ΡΠ½ΠΈ ΠΊΠ»Π°ΡΠΎΠ²Π΅, ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΈ ΠΏΠΎΠ»Π΅ΡΠ°. ΠΠ° Π΄Π° Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΈΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΠΎΠΏΡΠΈΡΡΠ° β-illegal-access=permitβ.
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π±Π»ΠΎΠ½ΠΈ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° βinstanceofβ Π΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π΄Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ΅ Π»ΠΎΠΊΠ°Π»Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°, ΠΊΠΎΡΡΠΎ Π΄Π° ΡΠ΅ ΠΎΡΠ½Π°ΡΡ Π΄ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ βif (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}β, Π±Π΅Π· ΠΈΠ·ΡΠΈΡΠ½ΠΎ Π΄Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ΅ βString s = (String) objβ. ΠΠ΅ΡΠ΅: if (obj instanceof Group) { Group group = (Group) obj; var entries = group.getEntries(); } Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ°Π²ΠΈΡΠ΅, Π±Π΅Π· Π΄Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ΅ βGroup group = (Group) objβ: if (obj instanceof Group group) { var entries = group.getEntries(); }
- ΠΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π°ΡΠ° Π΄ΡΠΌΠ° "record" Π΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠΉΠΊΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½Π° ΡΠΎΡΠΌΠ° Π·Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈ Π½Π° ΠΊΠ»Π°ΡΠΎΠ²Π΅, ΠΊΠΎΠ΅ΡΠΎ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ ΠΈΠ·ΡΠΈΡΠ½ΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ ΠΊΠ°ΡΠΎ equals(), hashCode() ΠΈ toString() Π² ΡΠ»ΡΡΠ°ΠΈΡΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Ρ Π΄Π°Π½Π½ΠΈ ΡΠ°ΠΌΠΎ Π² ΠΏΠΎΠ»Π΅ΡΠ°.Ρ ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ. ΠΠΎΠ³Π°ΡΠΎ Π΄Π°Π΄Π΅Π½ ΠΊΠ»Π°Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ equals(), hashCode() ΠΈ toString(), ΡΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΌΠΈΠ½Π΅ Π±Π΅Π· ΡΡΡ
Π½Π°ΡΠ° ΠΈΠ·ΡΠΈΡΠ½Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡ: public record BankTransaction(LocalDate date, double amount, String description) {}
Π’Π°Π·ΠΈ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ equals(), hashCode() ΠΈ toString() Π² Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈ getter.
- ΠΡΠ΅Π΄Π»Π°Π³Π° ΡΠ΅ Π²ΡΠΎΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡ Π·Π° Π·Π°ΠΏΠ΅ΡΠ°ΡΠ°Π½ΠΈ ΠΊΠ»Π°ΡΠΎΠ²Π΅ ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΎΡ Π΄ΡΡΠ³ΠΈ ΠΊΠ»Π°ΡΠΎΠ²Π΅ ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ Π·Π° Π½Π°ΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅, ΡΠ°Π·ΡΠΈΡΡΠ²Π°Π½Π΅ ΠΈΠ»ΠΈ ΠΎΡΠΌΡΠ½Π° Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ°ΠΏΠ΅ΡΠ°ΡΠ°Π½ΠΈΡΠ΅ ΠΊΠ»Π°ΡΠΎΠ²Π΅ ΡΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ ΠΏΠΎ-Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π΅Π½ Π½Π°ΡΠΈΠ½ Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠΏΠ΅ΡΠΊΠ»Π°Ρ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈΡΠ΅ Π·Π° Π΄ΠΎΡΡΡΠΏ, Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΈΠ·ΡΠΈΡΠ½ΠΎ ΠΈΠ·Π±ΡΠΎΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΠΎΠ²Π΅ΡΠ΅, ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈ Π·Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅. ΠΏΠ°ΠΊΠ΅Ρ com.example.geometry; ΠΏΡΠ±Π»ΠΈΡΠ΅Π½ Π·Π°ΠΏΠ΅ΡΠ°ΡΠ°Π½ ΠΊΠ»Π°Ρ Shape ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° com.example.polar.Circle, com.example.quad.Rectangle, com.example.quad.simple.Square {β¦}
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru