Π‘Π»Π΅Π΄ ΡΠ΅ΡΡΠΈΠΌΠ΅ΡΠ΅ΡΠ½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Oracle ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Java SE 25 (Java Platform, Standard Edition 24), Π·Π° ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡ OpenJDK ΠΊΠ°ΡΠΎ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ½Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ. Π‘ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½ΡΠΊΠΎΠΈ ΠΎΡΡΠ°ΡΠ΅Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, Java SE 25 Π·Π°ΠΏΠ°Π·Π²Π° ΠΎΠ±ΡΠ°ΡΠ½Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Java β ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ ΠΏΡΠ΅Π΄ΠΈ Java ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΡΠ΅ ΡΠ°Π±ΠΎΡΡΡ Π±Π΅Π· ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ. ΠΠΎΡΠΎΠ²ΠΈΡΠ΅ Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ Java SE 25 (JDK, JRE ΠΈ Server JRE) ΡΠ° ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ Π·Π° Linux (x86_64, AArch64), Windows (x86_64) ΠΈ macOS (x86_64, AArch64). Π Π΅ΡΠ΅ΡΠ΅Π½ΡΠ½Π°ΡΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Java SE 25, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½Π° Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° OpenJDK, Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΎΡΠ²ΠΎΡΠ΅Π½Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ GPLv2 Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π° GNU ClassPath, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Ρ ΡΡΡΠ³ΠΎΠ²ΡΠΊΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ.
Java SE 25 Π΅ ΠΊΠ»Π°ΡΠΈΡΠΈΡΠΈΡΠ°Π½ ΠΊΠ°ΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Ρ ΡΠ΄ΡΠ»ΠΆΠ΅Π½ ΡΡΠΎΠΊ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°, Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π·Π° ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΈΠ·Π΄Π°Π²Π°Π½ΠΈ Π΄ΠΎ 2033 Π³ΠΎΠ΄ΠΈΠ½Π° (ΠΎΠ±ΡΠ΅ΡΡΠ²Π΅Π½ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΈΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ ΠΈΠ·Π»ΠΈΠ·Π°Ρ Π΄ΠΎ ΡΠ΅ΠΏΡΠ΅ΠΌΠ²ΡΠΈ 2030 Π³ΠΎΠ΄ΠΈΠ½Π°). ΠΠ°ΡΠΎ ΠΊΠ»ΠΎΠ½ Ρ Π΄ΡΠ»ΡΠ³ ΡΡΠΎΠΊ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° (LTS) ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°Ρ Π΄Π° ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΠΈ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ΡΠ΅ Java SE 17 ΠΈ 21, Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π·Π° ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΈΠ·Π΄Π°Π²Π°Π½ΠΈ Π΄ΠΎ 2029 ΠΈ 2031 Π³ΠΎΠ΄ΠΈΠ½Π° ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ (ΠΎΠ±ΡΠ΅ΡΡΠ²Π΅Π½ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΈ β Π΄ΠΎ 2026 ΠΈ 2028 Π³ΠΎΠ΄ΠΈΠ½Π°). Π£Π΄ΡΠ»ΠΆΠ΅Π½Π°ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° LTS ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ΡΠ΅ Java SE 8 ΠΈ 11 ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ Π΄ΠΎ 2030 ΠΈ 2032 Π³ΠΎΠ΄ΠΈΠ½Π°.
Π‘ΡΠ΅Π΄ Π½ΠΎΠ²ΠΎΠ²ΡΠ²Π΅Π΄Π΅Π½ΡΡΠ° Π² Java SE 25 (1, 2, 3, 4):
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π΅Π½ API StableValue Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΎΠ±Π΅ΠΊΡΠΈ, ΡΡΠ΄ΡΡΠΆΠ°ΡΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΈ Π΄Π°Π½Π½ΠΈ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Π½ΠΈ Π² JVM ΠΊΠ°ΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ. ΠΠ° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΈ Π½Π° ΠΏΠΎΠ»Π΅ΡΠ° Ρ ΠΊΠ»ΡΡΠΎΠ²Π° Π΄ΡΠΌΠ° βfinalβ. API StableValue ΡΠ°Π·Π΄Π΅Π»Ρ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΠΈ ΡΡΡ Π½Π°ΡΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, Π³Π°ΡΠ°Π½ΡΠΈΡΠ°, ΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΡΠ°ΠΌΠΎ Π²Π΅Π΄Π½ΡΠΆ, Π½Π°ΠΌΠ°Π»ΡΠ²Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΡΠ²ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ (constant-folding) Π² ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈΡ ΠΊΠΎΠ΄, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° Π±ΡΡ Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΡΠ°ΠΌΠΎ Π² Π²ΡΡΡΠ΅ΡΠ½ΠΈΡ ΠΊΠΎΠ΄ Π½Π° JDK. class Application { // ΠΠ΅ΡΠ΅: // static final UserService USERS = new UserService(); // Π‘ΡΠ°Π½Π°: static final StableValue USERS = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); } }
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π΅Π½ API Π·Π° ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ Ρ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΡΠΊΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅, ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ ΠΈ ΡΠΏΠΈΡΡΡΠΈ Ρ ΠΎΡΠ·ΠΎΠ²Π°Π½ΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΠΎΡΠΌΠ°Ρ PEM (Pivacy-Enhanced Mail).
- ΠΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ (Scoped Values), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠΈ ΡΡΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΈ Π΄Π°Π½Π½ΠΈ Π² ΠΏΠΎΡΠΎΡΠΈ ΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ ΠΎΠ±ΠΌΠ΅Π½ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π΄ΡΡΠ΅ΡΠ½ΠΈ ΠΏΠΎΡΠΎΡΠΈ (ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅ ΡΠ΅ Π½Π°ΡΠ»Π΅Π΄ΡΠ²Π°Ρ). Scoped Values ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π°Ρ, Π·Π° Π΄Π° Π·Π°ΠΌΠ΅Π½ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈΡΠ΅ ΠΏΠΎ ΠΏΠΎΡΠΎΠΊ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ (thread-local variables) ΠΈ ΡΠ° ΠΏΠΎ-Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΏΠΎΡΠΎΡΠΈ (Ρ ΠΈΠ»ΡΠ΄ΠΈ ΠΈ ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ ΠΏΠΎΡΠΎΡΠΈ). ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ Scoped Values ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΈΡΠ΅ ΠΏΠΎ ΠΏΠΎΡΠΎΠΊ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π΅, ΡΠ΅ ΠΏΡΡΠ²ΠΈΡΠ΅ ΡΠ΅ Π·Π°ΠΏΠΈΡΠ²Π°Ρ ΡΠ°ΠΌΠΎ Π²Π΅Π΄Π½ΡΠΆ, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠΎΠΌΠ΅Π½ΡΠ½ΠΈ ΠΈ ΠΎΡΡΠ°Π²Π°Ρ Π΄ΠΎΡΡΡΠΏΠ½ΠΈ ΡΠ°ΠΌΠΎ Π·Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡΠΎΠΊΠ°.
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ API Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΡΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π΅ (KDF, key derivation function), ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅ Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°ΡΠ° Π΄ΡΠ»ΠΆΠΈΠ½Π° Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΡΠ°ΠΉΠ½ΠΈΡ ΠΊΠ»ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠ°ΡΠΎΠ»Π°ΡΠ°) ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ Π½Π°Π±ΠΎΡ ΠΎΡ Π΄Π°Π½Π½ΠΈ.
- ΠΡΠ΅ΠΌΠ°Ρ Π½Π°Ρ Π΅ ΠΊΠΎΠ΄ΡΡ ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° 32-Π±ΠΈΡΠΎΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ x86. ΠΡΠ΅ΠΊΡΠ°ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° 32-Π±ΠΈΡΠΎΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ x86 ΠΎΠΏΡΠΎΡΡΠΈ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ ΠΈ ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° JDK, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈΡΠ΅, Π±Π΅Π· ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° fallback ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π·Π° 32-Π±ΠΈΡΠΎΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ x86.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π΅Π΄Π½ΠΎ ΠΈΠ·ΡΠ°Π·ΡΠ²Π°Π½Π΅ βimport module Mβ Π·Π° Π²Π½ΠΎΡ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ, Π΅ΠΊΡΠΏΠΎΡΡΠΈΡΠ°Π½ΠΈ ΠΎΡ ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ». ΠΡΠΎΠΌΡΠ½Π°ΡΠ° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΎΠΏΡΠΎΡΡΡΠ²Π° ΠΏΠΎΠ²ΡΠΎΡΠ½Π°ΡΠ° ΡΠΏΠΎΡΡΠ΅Π±Π° Π½Π° ΠΌΠΎΠ΄ΡΠ»Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΠΉΠΊΠΈ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΊΠ»Π°ΡΠΎΠ²Π΅ Π±Π΅Π· ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈΠΌ Π² ΠΉΠ΅ΡΠ°ΡΡ ΠΈΡΡΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΊΠ°Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° βimport module java.baseβ ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π²Π½Π°ΡΡΠ½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ 54 ΠΏΠ°ΠΊΠ΅ΡΠ°, ΠΊΠΎΠΈΡΠΎ Π²Π»ΠΈΠ·Π°Ρ Π² ΠΌΠΎΠ΄ΡΠ»Π° java.base, ΠΈ ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° Π΅ ΡΡΡΠ±Π²Π°Π»ΠΎ Π΄Π° ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Π²Π°Ρ ΠΏΠΎΠΎΡΠ΄Π΅Π»Π½ΠΎ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ βimport java.io.*β, βimport java.util.*β ΠΈ Ρ.Π½.).
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ΅Π½ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π° ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π·Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΌΠ°Π»ΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½Π°ΡΠ° ΡΠΎΡΠΌΠ° Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΈΠ·Π»ΠΈΡΠ½ΠΈ ΠΊΠ»Π°ΡΠΎΠ²Π΅, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅ Π²Π½Π°ΡΡΡ ΡΠΈΠΏΠΈΡΠ½ΠΈ API ΠΈ ΡΠ° Π½Π°Π»ΠΈΡΠ½ΠΈ ΠΎΠΏΡΠΎΡΡΠ΅Π½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° Π²Ρ ΠΎΠ΄/ΠΈΠ·Ρ ΠΎΠ΄. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ βHello, World!β ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ²Π΅Π΄Π΅Π½ΠΎ Π΄ΠΎ: void main() { IO.println(βHello, World!β); }
- ΠΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ super(β¦), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΌ Π΄Π»Ρ ΡΠ²Π½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ· ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, Π΅ΡΠ»ΠΈ ΡΡΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π΅ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ. class Outer { void hello() { System.out.println("Hello"); } class Inner { Inner() { hello(); super(); } } }
- ΠΠΎΠ±Π°Π²Π΅Π½ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠ²Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΡΠ±ΠΎΡΡΠΈΠΊΠ° Π½Π° Π±ΠΎΠΊΠ»ΡΠΊΠ° Shenandoah, Π² ΠΊΠΎΠΉΡΠΎ ΠΎΡΠ΄Π΅Π»Π½ΠΎ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ ΡΡΠ°ΡΠΈ ΠΈ Π½Π°ΡΠΊΠΎΡΠΎ ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ, Π·Π° Π΄Π° ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ Ρ ΠΊΡΠ°ΡΡΠΊ ΠΆΠΈΠ²ΠΎΡ. ΠΠΎΠ²ΠΈΡΡ ΡΠ΅ΠΆΠΈΠΌ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΏΠΎ-ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ΠΈΠΌΠ° ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΠ΅Π»Π½Π° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ, ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ ΠΈ Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΏΡΠΈ ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° Π±ΠΎΠΊΠ»ΡΠΊΠ°. ΠΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΡΡ Shenandoah ΡΠ΅Π»ΠΈ Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΡΠΏΠΈΡΠ°Π½Π΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° Π±ΠΎΠΊΠ»ΡΠΊΠ°, ΠΊΠ°ΡΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌ ΠΎΠ±Π΅ΠΌ ΡΠ°Π±ΠΎΡΠ° ΡΡΠΏΠΎΡΠ΅Π΄Π½ΠΎ Ρ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Java ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
- ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ΠΎ Π΅ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠ΅Ρ Π·Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½Π° (Ahead-of-Time) Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° Π½Π° ΠΊΠ»Π°ΡΠΎΠ²Π΅, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΡΠΊΠΎΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΡΠ° Π½Π° HotSpot JVM ΡΡΠ΅Π· Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠ»Π°ΡΠΎΠ²Π΅ΡΠ΅ Π² Π²Π΅ΡΠ΅ Π·Π°ΡΠ΅Π΄Π΅Π½ΠΎ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠ°Π½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅. ΠΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π²Π΅ΡΠ΅ Π½Π΅ ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° Π·Π°ΠΏΠΈΡ Π½Π° Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° ΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΊΠ΅Ρ, Π΄ΠΎΡΡΠ°ΡΡΡΠ½Π° Π΅ Π΅Π΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°: java -XX:AOTCacheOutput=app.aot -cp app.jar com.example.App β¦
- ΠΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° HotSpot Java VM Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠΈΠ»ΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ, ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈ ΠΏΡΠΈ ΠΏΡΠ΅Π΄Ρ ΠΎΠ΄Π½ΠΎΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. ΠΡΠΎΠΌΡΠ½Π°ΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° Π΄Π° Π½Π΅ ΡΡΠ±ΠΈΡΠ° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΠΈ Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° Π½Π°ΡΠΈΠ²Π΅Π½ ΠΊΠΎΠ΄ Π±Π΅Π· Π΄Π° ΡΠ°ΠΊΠ° Π·Π° ΡΠΎΡΠΌΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΡΠΈΠ»Π°.
- Π HotSpot JVM Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΈ Π·Π°Π³Π»Π°Π²ΠΈΡ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ, ΡΠ°Π·ΠΌΠ΅ΡΡΡ Π½Π° ΠΊΠΎΠΈΡΠΎ Π½Π° 64-Π±ΠΈΡΠΎΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π΅ Π½Π°ΠΌΠ°Π»Π΅Π½ ΠΎΡ 96 Π΄ΠΎ 64 Π±ΠΈΡΠ° (ΠΎΡ 12 Π΄ΠΎ 8 Π±Π°ΠΉΡΠ°). ΠΠ°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° Π·Π°Π³Π»Π°Π²ΠΈΡΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ Π½Π°ΠΌΠ°Π»ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡΡ Π½Π° ΠΊΡΠΏΠ° ΠΈ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΠΈΡΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΠΊΠ΅ΡΠ°.
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° ΡΠ΅ΡΡΠΎΠ²Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° API Vector, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° Π²Π΅ΠΊΡΠΎΡΠ½ΠΈ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π²Π΅ΠΊΡΠΎΡΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ x86_64 ΠΈ AArch64 ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΡΡ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ (SIMD). ΠΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΡ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° HotSpot Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½Π° Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠΊΠ°Π»ΡΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Π½ΠΎΠ²ΠΎΡΠΎ API ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΠ²Π½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΡΡΠ° Π·Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈ.
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ Π·Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅ ΠΏΠ΅ΡΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π΅Π½ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π° API Π·Π° ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎΡΡ (Structured Concurrency), ΠΎΠΏΡΠΎΡΡΡΠ²Π°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅Π· ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π·Π°Π΄Π°ΡΠΈ, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½ΠΈ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠΎΡΠΎΡΠΈ, ΠΊΠ°ΡΠΎ Π΅Π΄ΠΈΠ½Π΅Π½ Π±Π»ΠΎΠΊ.
- Π ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° ΡΡΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Ρ ΠΎΠ±ΡΠ°Π·Π΅Ρ Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ ΡΡΠ΅ΡΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π΅Π½ Π²Π°ΡΠΈΠ°Π½Ρ Π·Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ (int, byte, char ΠΈ Π΄ΡΡΠ³ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ° ΠΎΠ±Π΅ΠΊΡΠΈ) Π²ΡΠ² Π²ΡΠΈΡΠΊΠΈ Π²ΠΈΠ΄ΠΎΠ²Π΅ ΡΠ°Π±Π»ΠΎΠ½ΠΈ, Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Β«instanceofΒ» ΠΈ Π² Π±Π»ΠΎΠΊΠΎΠ²Π΅ΡΠ΅ Β«switchΒ». switch (x.getStatus()) { case 0 -> Β«ΠΎΠΊΠ΅ΠΉΒ»; case 1 -> Β«ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅Β»; case 2 -> Β«Π³ΡΠ΅ΡΠΊΠ°Β»; case int i -> Β«Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΡΡΠ°ΡΡΡ: Β» + i; } if (i instanceof byte b) { β¦ b β¦ }
- Π JDK Flight Recorder (JFR) Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ°Π½Π΅ Ρ ΠΏΠΎ-ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΡΡΠΈ Π½Π° CPU Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Linux. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° Π·Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ²Π΅ΡΠ½ΠΈ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΈ Β«FlameGraphΒ».
- ΠΠΎΠ²ΠΈΡΠ΅Π½Π° Π΅ ΡΡΠ°Π±ΠΈΠ»Π½ΠΎΡΡΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° JDK Flight Recorder (JFR) ΠΏΡΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ Π²Π·ΠΈΠΌΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±ΠΈ ΠΎΡ ΡΡΠ΅ΠΊΠΎΠ²Π΅ΡΠ΅ Π½Π° Java ΠΏΠΎΡΠΎΡΠΈ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±Ρ ΠΎΠ΄Π° Π½Π° ΡΡΠ΅ΠΊΠ° Π½Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΡΠ°ΠΌΠΎ ΠΏΡΠ΅Π· Β«Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΈ ΡΠΎΡΠΊΠΈΒ» (safepoints).
- Π JDK Flight Recorder (JFR) ΡΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° ΡΡΠ°ΡΠΈΡΠΎΠ²ΠΊΠ° ΠΈ ΠΎΡΠ΅Π½ΠΊΠ° Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅. ΠΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ΅ ΡΡΠ°ΡΠΈΡΠΎΠ²ΠΊΠ° Π½Π° ΡΡΠ΅ΠΊΠ° Π½Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡΡΠ° Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΈ Π·Π°ΠΏΠΈΡ Π½Π° ΡΠΎΡΠ½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡΡΠ° Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ, ΠΎΠ±Ρ Π²Π°ΡΠ°ΡΠ° ΡΠ°ΠΊΠΈΠ²Π° ΠΌΠ΅ΡΡΠΈΠΊΠΈ, ΠΊΠ°ΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ Π±ΡΠΎΠΉ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
