ИзданиС 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). Π Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½Π°Ρ‚Π° имплСмСнтация 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

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