Π‘Π»Π΅Π΄ ΡΠ΅ΡΡ ΠΌΠ΅ΡΠ΅ΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Oracle ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Java SE 27 (Java Platform, Standard Edition 27), ΡΠΈΡΡΠΎ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π΅ ΠΏΡΠΎΠ΅ΠΊΡΡΡ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ OpenJDK. Π‘ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½ΡΠΊΠΎΠΈ ΠΎΡΡΠ°ΡΠ΅Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, Java SE 27 Π·Π°ΠΏΠ°Π·Π²Π° ΠΎΠ±ΡΠ°ΡΠ½Π°ΡΠ° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Java - ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΏΠΎ-ΡΠ°Π½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Java ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΡΠ΅ ΡΠ°Π±ΠΎΡΡΡ Π±Π΅Π· ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ΄ Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ. ΠΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈΡΠ΅ Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ ΡΠ±ΠΎΡΠΊΠΈ Π½Π° Java SE 27 (JDK, JRE ΠΈ Server JRE) ΡΠ° Π½Π° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° Linux (x86_64, AArch64), Windows (x86_64) ΠΈ macOS (x86_64, AArch64). Π Π΅ΡΠ΅ΡΠ΅Π½ΡΠ½Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Java SE 27, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½Π° Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° OpenJDK, Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΎΡΠ²ΠΎΡΠ΅Π½Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ GPLv2 Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π° GNU ClassPath, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Ρ ΡΡΡΠ³ΠΎΠ²ΡΠΊΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ.
Java SE 27 ΠΏΠΎΠΏΠ°Π΄Π° Π² ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΡΠ° Π½Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅ Ρ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ ΡΡΠΎΠΊ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π·Π° ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΈΠ·Π΄Π°Π²Π°Π½ΠΈ Π΄ΠΎ ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ ΡΠ΅Π»ΠΈΠ·. ΠΠ°ΡΠΎ ΠΊΠ»ΠΎΠ½ Ρ Π΄ΡΠ»ΡΠ³ ΡΡΠΎΠΊ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° (LTS) ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Java SE 25, Java SE 21 ΠΈΠ»ΠΈ Java SE 17, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π·Π° ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·Π»ΠΈΠ·Π°Ρ Π΄ΠΎ 2033, 2031 ΠΈ 2029 Π³ΠΎΠ΄ΠΈΠ½Π° ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ (ΠΎΠ±ΡΠΎΠ΄ΠΎΡΡΡΠΏΠ½ΠΈ - Π΄ΠΎ ΡΠ΅ΠΏΡΠ΅ΠΌΠ²ΡΠΈ 2030, 2028 ΠΈ 2026 Π³ΠΎΠ΄ΠΈΠ½Π°). Π Π°Π·ΡΠΈΡΠ΅Π½Π°ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° LTS ΠΊΠ»ΠΎΠ½Π° Java SE 8 ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ Π΄ΠΎ 2030 Π³ΠΎΠ΄ΠΈΠ½Π°, Π° Java SE 11 - Π΄ΠΎ 2032 Π³ΠΎΠ΄ΠΈΠ½Π°.
Π‘ΡΠ΅Π΄ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² Java SE 27 (1, 2, 3, 4):
- ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π·Π° Π²ΡΠΈΡΠΊΠΈ ΡΡΠ΅Π΄ΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ±ΠΎΡΡΠΈΠΊΡΡ Π½Π° Π±ΠΎΠΊΠ»ΡΠΊ G1 (Garbage-First), ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π΄ΠΈ Π΅ Π±ΠΈΠ» ΠΏΡΠΈΠ»Π°Π³Π°Π½ Π·Π° ΡΡΡΠ²ΡΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ. G1 Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ Π·Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΠΌΡΠ»ΡΠΈΠΏΡΠΎΡΠ΅ΡΠΎΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Ρ Π³ΠΎΠ»ΡΠΌ ΠΎΠ±Π΅ΠΌ ΠΏΠ°ΠΌΠ΅Ρ ΠΈ Π±Π°Π»Π°Π½ΡΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎΡΡ Π½Π° Π·Π°Π±Π°Π²ΡΠ½ΠΈΡΡΠ° ΠΈ Π²ΠΈΡΠΎΠΊΠ° ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΠ΅Π»Π½Π° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ. Π ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ° G1 ΡΠ°Π·Π΄Π΅Π»Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΌΠ°Π»ΠΊΠΈ ΡΠ΅Π³ΠΈΠΎΠ½ΠΈ ΠΈ ΠΏΡΡΠ²ΠΎ ΠΏΠΎΡΠΈΡΡΠ²Π° ΡΠ΅Π·ΠΈ ΡΠ΅Π³ΠΈΠΎΠ½ΠΈ, ΠΊΡΠ΄Π΅ΡΠΎ ΠΈΠΌΠ° Π½Π°ΠΉ-ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π΄Π°Π½Π½ΠΈ.
- Π HotSpot JVM ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠ° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΈΡΠ΅ Π·Π°Π³Π»Π°Π²ΠΈΡ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅. Π Π°Π·ΠΌΠ΅ΡΡΡ Π½Π° Π·Π°Π³Π»Π°Π²ΠΈΡΡΠ° ΠΏΡΠΈ 64-Π±ΠΈΡΠΎΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π΅ Π½Π°ΠΌΠ°Π»Π΅Π½ ΠΎΡ 96 Π½Π° 64 Π±ΠΈΡΠ°, ΠΊΠΎΠ΅ΡΠΎ Π΅ Π½Π°ΠΌΠ°Π»ΠΈΠ»ΠΎ ΠΊΠΎΠ½ΡΡΠΌΠ°ΡΠΈΡΡΠ° Π½Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΈ Π΅ ΡΠ²Π΅Π»ΠΈΡΠΈΠ»ΠΎ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡΠ° Π΄Π°Π½Π½ΠΈΡΠ΅ Π΄Π° ΠΏΠΎΠΏΠ°Π΄Π½Π°Ρ Π² ΠΊΠ΅ΡΠ° Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ°. Π ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅ SPECjbb2015 ΠΊΠΎΠ½ΡΡΠΌΠ°ΡΠΈΡΡΠ° Π½Π° ΠΏΠ°ΠΌΠ΅Ρ Π΅ Π½Π°ΠΌΠ°Π»Π΅Π½Π° Ρ 22%, Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° CPU Π΅ Π½Π°ΠΌΠ°Π»Π΅Π½ΠΎ Ρ 8%, Π° Π±ΡΠΎΡΡ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ ΠΏΠΎ ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° Π±ΠΎΠΊΠ»ΡΠΊΠ° Π΅ Π½Π°ΠΌΠ°Π»ΡΠ» Ρ 15%. ΠΡΠΈ ΡΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° JSON ΠΏΠ°ΡΡΠ΅ΡΠ° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ Π½Π° ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅ Π΅ Π½Π°ΠΌΠ°Π»Π΅Π½ΠΎ Ρ 10%.
- Π ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° TLS 1.3 Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Ρ ΠΈΠ±ΡΠΈΠ΄Π½ΠΈ ΡΡ Π΅ΠΌΠΈ Π·Π° ΡΡΠ³Π»Π°ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π΅, ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΡΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ML-KEM (CRYSTALS-Kyber), ΡΡΡΠΎΠΉΡΠΈΠ² Π½Π° ΠΏΠΎΠ΄Π±ΠΈΡΠ°Π½Π΅ ΠΎΡ ΠΊΠ²Π°Π½ΡΠΎΠ²ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠΈ, Ρ ΠΊΠ»Π°ΡΠΈΡΠ΅ΡΠΊΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° Π΅Π»ΠΈΠΏΡΠΈΡΠ½ΠΈ ΠΊΡΠΈΠ²ΠΈ ECDHE: X25519MLKEM768 (ECDHE Ρ ΠΊΡΠΈΠ²Π° X25519 + ML-KEM-768), SecP256r1MLKEM76 (ECDHE Ρ ΠΊΡΠΈΠ²Π° secp256r1 + ML-KEM-768) ΠΈ SecP384r1MLKEM1024 (ECDHE Ρ ΠΊΡΠΈΠ²Π° secp384r1 + ML-KEM-1024). Π API javax.net.ssl Π’Π΅Π·ΠΈ ΡΡ Π΅ΠΌΠΈ ΡΠ° Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΈ Π½Π΅ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ°, Π·Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ.
- Π ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠ° JDK Flight Recorder (JFR), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π·Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³, ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ°Π½Π΅ ΠΈ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°, Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π² Π·Π°ΠΏΠ°Π·Π΅Π½Π°ΡΠ° Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠ½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π½Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄, Π½Π°ΡΠ°Π»Π½ΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°. ΠΡΠΎΠΌΡΠ½Π°ΡΠ° ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΡΠ²Π° ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Π½ΠΈ ΠΎΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ, ΠΊΠ°ΡΠΎ ΡΠΎΠΊΠ΅Π½ΠΈ Π·Π° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅ Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ API, ΠΏΡΠ΅Π΄Π°Π²Π°Π½ΠΈ ΡΡΠ΅Π· ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ°.
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π΅ ΡΡΠ΅ΡΠ°ΡΠ° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡ Π½Π° API Lazy Constants Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΎΠ±Π΅ΠΊΡΠΈ, ΡΡΠ΄ΡΡΠΆΠ°ΡΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΈ Π΄Π°Π½Π½ΠΈ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Π½ΠΈ Π² JVM ΠΊΠ°ΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ. ΠΠ° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΈ Π½Π° ΠΏΠΎΠ»Π΅ΡΠ°ΡΠ° Ρ ΠΊΠ»ΡΡΠΎΠ²Π° Π΄ΡΠΌΠ° "final". ΠΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΡ "final", Π½ΠΎΠ²ΠΈΡΡ API ΡΠ°Π·Π΄Π΅Π»Ρ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΠΈ ΡΡΡ Π½Π°ΡΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, Π³Π°ΡΠ°Π½ΡΠΈΡΠ°, ΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΡΠ°ΠΌΠΎ Π²Π΅Π΄Π½ΡΠΆ, ΡΡΠΊΡΠ°ΡΠ°Π²Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π·Π° ΡΠ²ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ (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); } }
- Π ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° ΡΡΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Ρ ΠΎΠ±ΡΠ°Π·Π΅Ρ Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠΏΠ΅ΡΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π΅Π½ Π²Π°ΡΠΈΠ°Π½Ρ Π·Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ (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 β¦ }
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ Π·Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅ ΡΠ΅Π΄ΠΌΠΈΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π΅Π½ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π° API Π·Π° ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½Π° ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·ΡΠΌ (Structured Concurrency), ΠΊΠΎΠΉΡΠΎ ΠΎΠΏΡΠΎΡΡΡΠ²Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅Π· ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π·Π°Π΄Π°ΡΠΈ, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½ΠΈ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠΎΡΠΎΡΠΈ, ΠΊΠ°ΡΠΎ Π΅Π΄ΠΈΠ½Π΅Π½ Π±Π»ΠΎΠΊ.
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π΅ Π΄Π²Π°Π½Π°Π΄Π΅ΡΠ΅ΡΠ°ΡΠ° ΡΠ΅ΡΡΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ Π½Π° API Vector, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° Π²Π΅ΠΊΡΠΎΡΠ½ΠΈ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΈΠ·Π²ΡΡΡΠ²Π°Π½ΠΈ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π²Π΅ΠΊΡΠΎΡΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ x86_64 ΠΈ AArch64, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠΈ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΡΡ Ρ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ (SIMD). Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π½ΠΈΡΠ΅ Π² JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° HotSpot Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½Π° Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠΊΠ°Π»Π°ΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Π½ΠΎΠ²ΠΈΡΡ API ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΠ²Π½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΡΡΠ° Π·Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈ.
- ΠΠΎΡΡΡΠΏΠ΅Π½ Π΅ ΡΡΠ΅ΡΠΈΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π΅Π½ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π° API Π·Π° ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ Ρ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΡΠΊΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅, ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ ΠΈ ΡΠΏΠΈΡΡΡΠΈ Ρ ΠΎΡΠ·ΠΎΠ²Π°Π½ΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΠΎΡΠΌΠ°ΡΠ° PEM (Privacy-Enhanced Mail).
ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Π³ΡΠ°ΡΠΈΡΠ΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ JavaFX 27. Π ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ ΡΠ°ΡΠΎΠ²Π΅ ΡΠ΅ ΠΎΡΠ°ΠΊΠ²Π° ΠΈ ΠΈΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° GraalVM 27, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° JavaScript (Node.js), Python, Ruby, R, Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ Π΅Π·ΠΈΡΠΈ Π·Π° JVM (Java, Scala, Clojure, Kotlin) ΠΈ Π΅Π·ΠΈΡΠΈ, Π·Π° ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π±ΠΈΡΠΊΠΎΠ΄ Π½Π° LLVM (C, C++, Rust).
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
