ВСрсия Π½Π° Java SE 15

Π‘Π»Π΅Π΄ ΡˆΠ΅ΡΡ‚ мСсСца Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, Oracle освободСн ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° JavaSE 15 (Java Platform, Standard Edition 15), ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ OpenJDK с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°Ρ‚ΠΎ Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½Π° рСализация. Java SE 15 ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ΠΎΠ±Ρ€Π°Ρ‚Π½Π° ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ с ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈ издания Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Java; всички написани ΠΏΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π° Java ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ Ρ‰Π΅ работят Π±Π΅Π· ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π±ΡŠΠ΄Π°Ρ‚ стартирани ΠΏΠΎΠ΄ Π½ΠΎΠ²Π°Ρ‚Π° вСрсия. Π“ΠΎΡ‚ΠΎΠ²ΠΈ Π·Π° инсталиранС ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΠΈ Π½Π° Java SE 15 (JDK, JRE ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ JRE) ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈ Π·Π° Linux (x86_64), Windows ΠΈ macOS. Π Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½Π° рСализация, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½Π° ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° OpenJDK Java 15 Π΅ с напълно ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π· GPLv2, с ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΡ‚ GNU ClassPath, позволяващи Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ с Ρ‚ΡŠΡ€Π³ΠΎΠ²ΡΠΊΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈ.

Java SE 15 сС класифицира ΠΊΠ°Ρ‚ΠΎ вСрсия Π·Π° ΠΎΠ±Ρ‰Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° ΠΈ Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΎ слСдващото ΠΈΠ·Π΄Π°Π½ΠΈΠ΅. ΠšΠ»ΠΎΠ½ΡŠΡ‚ Π·Π° Π΄ΡŠΠ»Π³ΠΎΡΡ€ΠΎΡ‡Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° (LTS) трябва Π΄Π° бъдС Java SE 11, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΎ 2026 Π³. ΠŸΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡΡ‚ LTS ΠΊΠ»ΠΎΠ½ Π½Π° Java 8 Ρ‰Π΅ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Π΄ΠΎ Π΄Π΅ΠΊΠ΅ΠΌΠ²Ρ€ΠΈ 2020 Π³. Π‘Π»Π΅Π΄Π²Π°Ρ‰ΠΎΡ‚ΠΎ LTS ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π΅ насрочСно Π·Π° сСптСмври 2021 Π³. НСка Π²ΠΈ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΠΌ, Ρ‡Π΅ Π·Π°ΠΏΠΎΡ‡Π²Π°ΠΉΠΊΠΈ с пусканСто Π½Π° Java 10, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ ΠΏΡ€Π΅ΠΌΠΈΠ½Π° към Π½ΠΎΠ² процСс Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π° ΠΏΠΎ-ΠΊΡ€Π°Ρ‚ΡŠΠΊ Ρ†ΠΈΠΊΡŠΠ» Π·Π° Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ вСрсии. Новата функционалност Π²Π΅Ρ‡Π΅ Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½Π° Π² Π΅Π΄ΠΈΠ½ постоянно Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ Π³Π»Π°Π²Π΅Π½ ΠΊΠ»ΠΎΠ½, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π° Π³ΠΎΡ‚ΠΎΠ²ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΈ ΠΎΡ‚ ΠΊΠΎΠΉΡ‚ΠΎ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅Ρ‚Π΅ сС разклоняват Π½Π° всСки ΡˆΠ΅ΡΡ‚ мСсСца, Π·Π° Π΄Π° сС стабилизират Π½ΠΎΠ²ΠΈΡ‚Π΅ вСрсии.

На ΠΈΠ½ΠΎΠ²Π°Ρ†ΠΈΠΈ Java 15 ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΌΠ°Ρ€ΠΊΠ°:

  • Π’Π³Ρ€Π°Π΄Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌΠ° Π·Π° създаванС Π½Π° Ρ†ΠΈΡ„Ρ€ΠΎΠ² подпис EdDSA (Edwards-Curve Digital Signature Algorithm) RFC 8032). ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π°Ρ‚Π° рСализация Π½Π° EdDSA Π½Π΅ зависи ΠΎΡ‚ Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ, Π·Π°Ρ‰ΠΈΡ‚Π΅Π½Π° Π΅ ΠΎΡ‚ Π°Ρ‚Π°ΠΊΠΈ ΠΎΡ‚ странични ΠΊΠ°Π½Π°Π»ΠΈ (осигурСно Π΅ постоянно Π²Ρ€Π΅ΠΌΠ΅ Π½Π° всички изчислСния) ΠΈ Π΅ ΠΏΠΎ-Π±ΡŠΡ€Π·Π° Π² производитСлност ΠΎΡ‚ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰Π°Ρ‚Π° рСализация Π½Π° ECDSA, написана Π½Π° Π΅Π·ΠΈΠΊ C, със ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π°. НапримСр EdDSA, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ Π΅Π»ΠΈΠΏΡ‚ΠΈΡ‡Π½Π° ΠΊΡ€ΠΈΠ²Π° със 126-Π±ΠΈΡ‚ΠΎΠ² ΠΊΠ»ΡŽΡ‡, ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΏΠΎΠ΄ΠΎΠ±Π½Π° производитСлност Π½Π° ECDSA с Π΅Π»ΠΈΠΏΡ‚ΠΈΡ‡Π½Π° ΠΊΡ€ΠΈΠ²Π° secp256r1 ΠΈ 128-Π±ΠΈΡ‚ΠΎΠ² ΠΊΠ»ΡŽΡ‡.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΎ ΠΎΡ‚ СкспСримСнтална ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Π·Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½ΠΈ класовС ΠΈ интСрфСйси, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈ класовС ΠΈ интСрфСйси Π·Π° наслСдяванС, Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ ΠΈΠ»ΠΈ отмяна Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ. Π—Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½ΠΈΡ‚Π΅ класовС ΡΡŠΡ‰ΠΎ прСдоставят ΠΏΠΎ-Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ Π·Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° супСрклас, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ, въз основа Π½Π° ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ изброяванС Π½Π° подкласовСтС, Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈ Π·Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅.

    ΠΏΠ°ΠΊΠ΅Ρ‚ com.example.geometry;

    ΠΏΡƒΠ±Π»ΠΈΡ‡Π΅Π½ Π·Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½ клас Shape
    позволява com.example.polar.Circle,
    com.example.quad.Rectangle,
    com.example.quad.simple.Square {…}

  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΎ ΠΎΡ‚ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° скрити класовС, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΡ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄Π° Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ класовС. ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° Ρ†Π΅Π» Π½Π° скрититС класовС Π΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π² Ρ€Π°ΠΌΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚ класовС ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° изпълнСниС ΠΈ Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΈΠ½Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ, Ρ‡Ρ€Π΅Π· Ρ€Π°Π·ΠΌΠΈΡΡŠΠ». Π’Π°ΠΊΠΈΠ²Π° класовС ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠΌΠ°Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ ΠΆΠΈΠ·Π½Π΅Π½ Ρ†ΠΈΠΊΡŠΠ», Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½Π΅Ρ‚ΠΎ ΠΈΠΌ Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ ΠΎΡ‚ статично Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½ΠΈ класовС Π½Π΅ Π΅ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΎ ΠΈ Ρ‰Π΅ Π΄ΠΎΠ²Π΅Π΄Π΅ само Π΄ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚. Π‘ΠΊΡ€ΠΈΡ‚ΠΈΡ‚Π΅ класовС ΡΡŠΡ‰ΠΎ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π°Ρ‚ нСобходимостта ΠΎΡ‚ нСстандартния API sun.misc.Unsafe::defineAnonymousClass, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½ Π·Π° ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅ Π² Π±ΡŠΠ΄Π΅Ρ‰Π΅.
  • ΠšΠΎΠ»Π΅ΠΊΡ‚ΠΎΡ€ΡŠΡ‚ Π·Π° Π±ΠΎΠΊΠ»ΡƒΠΊ ZGC (Z Garbage Collector) Π΅ стабилизиран ΠΈ сС ΠΏΡ€ΠΈΠ·Π½Π°Π²Π° Π·Π° Π³ΠΎΡ‚ΠΎΠ² Π·Π° ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅. ZGC Ρ€Π°Π±ΠΎΡ‚ΠΈ Π² пасивСн Ρ€Π΅ΠΆΠΈΠΌ, ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π° латСнтността, Π΄ΡŠΠ»ΠΆΠ°Ρ‰Π° сС Π½Π° ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π±ΠΎΠΊΠ»ΡƒΠΊΠ°, Π΄ΠΎΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π΅ възмоТно (Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° спиранС ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ZGC Π½Π΅ надвишава 10 ms.) ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΊΠ°ΠΊΡ‚ΠΎ с ΠΌΠ°Π»ΠΊΠΈ, Ρ‚Π°ΠΊΠ° ΠΈ с ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΈ ΠΊΡƒΠΏΡ‡ΠΈΠ½ΠΈ, Π²Π°Ρ€ΠΈΡ€Π°Ρ‰ΠΈ ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΡ‚ няколкостотин ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚Π° Π΄ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚Π°.
  • Π‘Ρ‚Π°Π±ΠΈΠ»ΠΈΠ·ΠΈΡ€Π°Π½ ΠΈ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ Π·Π° ΠΎΠ±Ρ‰Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°
    боклукчия Shenandoah, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ ΠΏΠ°ΡƒΠ·ΠΈ (Low-Pause-Time Garbage Collector). Shenandoah Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΎΡ‚ Red Hat ΠΈ Π΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡ‚Π΅Π»Π΅Π½ с ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ, ΠΊΠΎΠΉΡ‚ΠΎ намалява Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° спиранС ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° Π±ΠΎΠΊΠ»ΡƒΠΊΠ°, ΠΊΠ°Ρ‚ΠΎ изпълнява почистванС ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ с ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Java прилоТСния. Π Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° Π·Π°ΠΊΡŠΡΠ½Π΅Π½ΠΈΡΡ‚Π°, въвСдСни ΠΎΡ‚ ΡΡŠΠ±ΠΈΡ€Π°Ρ‡Π° Π½Π° ΠΎΡ‚ΠΏΠ°Π΄ΡŠΡ†ΠΈ, Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΠΈΠΌ ΠΈ Π½Π΅ зависи ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° ΠΊΡƒΠΏΡ‡ΠΈΠ½Π°Ρ‚Π°, Ρ‚.Π΅. Π·Π° ΠΊΡƒΠΏΡ‡ΠΈΠ½ΠΈ ΠΎΡ‚ 200 MB ΠΈ 200 GB забавянията Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΈ (Π½Π΅ ΠΈΠ·Π»ΠΈΠ·Π°ΠΉ Π½Π°Π΄ 50 ms ΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° 10 ms);

  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π΅ стабилизирана ΠΈ въвСдСна Π² Π΅Π·ΠΈΠΊΠ° тСкстови Π±Π»ΠΎΠΊΠΎΠ²Π΅ - Π½ΠΎΠ²Π° Ρ„ΠΎΡ€ΠΌΠ° Π½Π° Π½ΠΈΠ·ΠΎΠ²ΠΈ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΈ, която Π²ΠΈ позволява Π΄Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎΡ€Π΅Π΄ΠΎΠ²ΠΈ тСкстови Π΄Π°Π½Π½ΠΈ Π² изходния ΠΊΠΎΠ΄, Π±Π΅Π· Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π΅ΠΊΡ€Π°Π½ΠΈΡ€Π°Π½Π΅ Π½Π° Π·Π½Π°Ρ†ΠΈ ΠΈ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΎΡ‚ΠΎ тСкстово Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°Π½Π΅ Π² Π±Π»ΠΎΠΊΠ°. Π‘Π»ΠΎΠΊΡŠΡ‚ Π΅ Ρ€Π°ΠΌΠΊΠΈΡ€Π°Π½ с Ρ‚Ρ€ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΈ ΠΊΠ°Π²ΠΈΡ‡ΠΊΠΈ.

    НапримСр, вмСсто ΠΊΠΎΠ΄Π°

    Низ html = " » +
    "\n\t" + " Β» +
    "\n\t\t" + " \"Java 1 Π΅ Ρ‚ΡƒΠΊ!\" Β» +
    "\n\t" + " Β» +
    "\n" + " ";

    ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° посочитС:

    Низ html = """


    Β»Java 1\
    Π΅ Ρ‚ΡƒΠΊ!

    """;

  • ΠŸΡ€Π΅Ρ€Π°Π±ΠΎΡ‚Π΅Π½ НаслСдСн DatagramSocket API. Π‘Ρ‚Π°Ρ€ΠΈΡ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° java.net.DatagramSocket ΠΈ java.net.MulticastSocket са Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΈ с ΠΌΠΎΠ΄Π΅Ρ€Π½Π° рСализация, която Π΅ ΠΏΠΎ-лСсна Π·Π° отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° ΠΈ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΅ ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠ° с Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ‚ΡŠΠΊΠ°Ρ‡Π΅Π½ стан. Π’ случай Π½Π° възмоТна Π½Π΅ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ със ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡ ΠΊΠΎΠ΄, старата рСализация Π½Π΅ Π΅ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚Π° ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π° Ρ‡Ρ€Π΅Π· опцията jdk.net.usePlainDatagramSocketImpl.
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π²Ρ‚ΠΎΡ€ΠΎ СкспСримСнтално изпълнСниС ΡΡŠΠ²ΠΏΠ°Π΄Π°Ρ‰ ΠΌΠΎΠ΄Π΅Π» Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° β€žinstanceofβ€œ, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΈ позволява Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π΄Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ Π»ΠΎΠΊΠ°Π»Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π°Ρ‚Π° стойност. НапримСр, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ β€žif (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}β€œ, Π±Π΅Π· ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ Π΄Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ β€žString s = (String) objβ€œ.

    Π‘Π΅ΡˆΠ΅:

    if (obj instanceof Group) {
    Π“Ρ€ΡƒΠΏΠ° Π³Ρ€ΡƒΠΏΠ° = (Π“Ρ€ΡƒΠΏΠ°) obj;
    var entries = group.getEntries();
    }

    Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π±Π΅Π· дСфиницията β€žΠ“Ρ€ΡƒΠΏΠΎΠ²Π° Π³Ρ€ΡƒΠΏΠ° = (Π“Ρ€ΡƒΠΏΠ°) objβ€œ:

    if (obj instanceof Group group) {
    var entries = group.getEntries();
    }

  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π²Ρ‚ΠΎΡ€ΠΎ СкспСримСнтално внСдряванС Π½Π° ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π°Ρ‚Π° Π΄ΡƒΠΌΠ° "Ρ€Π΅ΠΊΠΎΡ€Π΄", ΠΊΠΎΠΉΡ‚ΠΎ прСдоставя ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π° Ρ„ΠΎΡ€ΠΌΠ° Π·Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° класовС, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅Ρ‚Π΅ ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎΡ‚ΠΎ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π½Π° ниско Π½ΠΈΠ²ΠΎ, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ equals(), hashCode() ΠΈ toString() Π² случаитС, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΄Π°Π½Π½ΠΈΡ‚Π΅ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ само Π² ΠΏΠΎΠ»Π΅Ρ‚Π°, Ρ‡ΠΈΠ΅Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ сС промСня. ΠšΠΎΠ³Π°Ρ‚ΠΎ Π΄Π°Π΄Π΅Π½ клас ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° стандартни Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ equals(), hashCode() ΠΈ toString(), Ρ‚ΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΌΠΈΠ½Π΅ Π±Π΅Π· тяхната ΠΈΠ·Ρ€ΠΈΡ‡Π½Π° дСфиниция:

    ΠΏΡƒΠ±Π»ΠΈΡ‡Π΅Π½ запис Π½Π° Π±Π°Π½ΠΊΠΎΠ²Π° транзакция (Π΄Π°Ρ‚Π° Π½Π° мСстна Π΄Π°Ρ‚Π°,
    Π΄Π²ΠΎΠΉΠ½ΠΎ количСство
    ОписаниС на низ) {}

    Π’Π°Π·ΠΈ дСкларация Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Ρ‰Π΅ Π΄ΠΎΠ±Π°Π²ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ equals(), hashCode() ΠΈ toString() Π² допълнСниС към ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ конструктор ΠΈ getter.

  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π²Ρ‚ΠΎΡ€ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π΅Π½ ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° API Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Ρ‡ΡƒΠΆΠ΄Π° ΠΏΠ°ΠΌΠ΅Ρ‚, позволяващ Π½Π° Java прилоТСнията Π΄Π° ΠΎΡΡŠΡ‰Π΅ΡΡ‚Π²ΡΠ²Π°Ρ‚ сигурСн ΠΈ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π΅Π½ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Ρ€Π΅Π³ΠΈΠΎΠ½ΠΈ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° извън Java heap Ρ‡Ρ€Π΅Π· ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈΡ‚Π΅ абстракции MemorySegment, MemoryAddress ΠΈ MemoryLayout.
  • Ρ…ΠΎΡ€Π° с уврСТдания ΠΈ ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»ΠΈΡ…Π° Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°Ρ‚Π° Π·Π° оптимизация Π½Π° пристрастно Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π² HotSpot JVM, Π·Π° Π΄Π° сС намалят Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅. Π’Π°Π·ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π΅ Π·Π°Π³ΡƒΠ±ΠΈΠ»Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ си Π·Π° систСми с Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΈ инструкции, прСдоставСни ΠΎΡ‚ ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ процСсори, ΠΈ Π΅ Ρ‚Π²ΡŠΡ€Π΄Π΅ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠ° Π·Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° ΠΏΠΎΡ€Π°Π΄ΠΈ своята слоТност.
  • ОбявСн остарял ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ АктивиранС Π½Π° RMI, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ бъдС ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ Π² Π±ΡŠΠ΄Π΅Ρ‰ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅. ΠžΡ‚Π±Π΅Π»ΡΠ·Π²Π° сС, Ρ‡Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° RMI Π΅ остаряло, прСмСстСно Π² катСгорията Π½Π° опция Π² Java 8 ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ‚Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°.
  • Π˜Π·Ρ‚Ρ€ΠΈΡ‚ΠΎ JavaScript Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π» носорог, ΠΊΠΎΠΉΡ‚ΠΎ бСшС ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»Π΅Π½ Π² Java SE 11.
  • ΠŸΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ΠΎ ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅ Π·Π° Solaris OS ΠΈ SPARC процСсори (Solaris/SPARC, Solaris/x64 ΠΈ Linux/SPARC). ΠŸΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π΅Π·ΠΈ ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅ Ρ‰Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π½Π° общността Π΄Π° ускори Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π½ΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° OpenJDK, Π±Π΅Π· Π΄Π° Π³ΡƒΠ±ΠΈ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° спСцифични Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° Solaris ΠΈ SPARC.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€