ИздаванС на Java SE 25 LTS и OpenJDK 25

Π‘Π»Π΅Π΄ ΡˆΠ΅ΡΡ‚ мСсСца Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° компанията 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). Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π°Ρ‚Π° Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° OpenJDK Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½Π° рСализация Π½Π° Java SE 25 Π΅ напълно ΠΎΡ‚Π²ΠΎΡ€Π΅Π½Π° ΠΏΠΎΠ΄ лицСнзия 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 -> "okay"; case 1 -> "warning"; case 2 -> "error"; case int i -> "unknown status: " + 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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster