ИзданиС на Java SE 15

По ΡˆΠ΅ΡΡ‚ мСсСци Ρ€Π°Π·Π²ΠΎΡ˜, Oracle ослободСн ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Јава Π‘Π• 15 (Јава ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°, стандардно ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ 15), ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ со ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ OpenJDK сС користи ΠΊΠ°ΠΊΠΎ Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°. Java SE 15 ΠΎΠ΄Ρ€ΠΆΡƒΠ²Π° компатибилност Π½Π°Π½Π°Π·Π°Π΄ со ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ изданија Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Java; ситС ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ напишани Java ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ ќС Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ Π±Π΅Π· ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΊΠΎΠ³Π° ќС Π±ΠΈΠ΄Π°Ρ‚ лансирани спорСд Π½ΠΎΠ²Π°Ρ‚Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π°. ΠŸΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈ Π·Π° ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ Java SE 15 builds (JDK, JRE ΠΈ Server JRE) ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈ Π·Π° Linux (x86_64), Windows ΠΈ macOS. Π Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Ρ€Π°Π·Π²ΠΈΠ΅Π½Π° ΠΎΠ΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ OpenJDK Јава 15 Π΅ цСлосно со ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Ρ†Π°Ρ‚Π° GPLv2, со исклучоци ΠΎΠ΄ GNU ClassPath ΠΊΠΎΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°Π°Ρ‚ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π°ΡšΠ΅ со ΠΊΠΎΠΌΠ΅Ρ€Ρ†ΠΈΡ˜Π°Π»Π½ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈ.

Java SE 15 Π΅ класифициран ΠΊΠ°ΠΊΠΎ ΠΎΠΏΡˆΡ‚Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π·Π° ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° ΠΈ ќС ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈ Π΄Π° Π΄ΠΎΠ±ΠΈΠ²Π° Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ° Π΄ΠΎ слСдното ΠΈΠ·Π΄Π°Π½ΠΈΠ΅. Π€ΠΈΠ»ΠΈΡ˜Π°Π»Π°Ρ‚Π° Π·Π° Π΄ΠΎΠ»Π³ΠΎΡ€ΠΎΡ‡Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° (LTS) Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π±ΠΈΠ΄Π΅ Java SE 11, која ќС ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈ Π΄Π° Π΄ΠΎΠ±ΠΈΠ²Π° Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ° Π΄ΠΎ 2026 Π³ΠΎΠ΄ΠΈΠ½Π°. ΠŸΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½Π°Ρ‚Π° LTS Π³Ρ€Π°Π½ΠΊΠ° Π½Π° Java 8 ќС Π±ΠΈΠ΄Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΠΆΠ°Π½Π° Π΄ΠΎ Π΄Π΅ΠΊΠ΅ΠΌΠ²Ρ€ΠΈ 2020 Π³ΠΎΠ΄ΠΈΠ½Π°. Π‘Π»Π΅Π΄Π½ΠΎΡ‚ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° LTS Π΅ Π·Π°ΠΊΠ°ΠΆΠ°Π½ΠΎ Π·Π° сСптСмври 2021 Π³ΠΎΠ΄ΠΈΠ½Π°. Π”Π° потсСтимС Π΄Π΅ΠΊΠ° ΠΏΠΎΡ‡Π½ΡƒΠ²Π°Ρ˜ΡœΠΈ ΠΎΠ΄ ΠΎΠ±Ρ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Java 10, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ сС ΠΏΡ€Π΅Ρ„Ρ€Π»ΠΈ Π½Π° Π½ΠΎΠ² Ρ€Π°Π·Π²ΠΎΠ΅Π½ процСс, ΡˆΡ‚ΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π° ΠΏΠΎΠΊΡ€Π°Ρ‚ΠΎΠΊ циклус Π·Π° Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°ΡšΠ΅ Π½Π° Π½ΠΎΠ²ΠΈ изданија. Π‘Π΅Π³Π° Π΅ Ρ€Π°Π·Π²ΠΈΠ΅Π½Π° Π½ΠΎΠ²Π° функционалност Π²ΠΎ Π΅Π΄Π½Π° ΠΏΠΎΡΡ‚ΠΎΡ˜Π°Π½ΠΎ Π°ΠΆΡƒΡ€ΠΈΡ€Π°Π½Π° Π³Π»Π°Π²Π½Π° Π³Ρ€Π°Π½ΠΊΠ°, која Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π° Π³ΠΎΡ‚ΠΎΠ²ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΈ ΠΎΠ΄ која Ρ„ΠΈΠ»ΠΈΡ˜Π°Π»ΠΈΡ‚Π΅ сС Ρ€Π°Π·Π³Ρ€Π°Π½ΡƒΠ²Π°Π°Ρ‚ Π½Π° сСкои ΡˆΠ΅ΡΡ‚ мСсСци Π·Π° Π΄Π° сС стабилизираат Π½ΠΎΠ²ΠΈΡ‚Π΅ изданија.

На ΠΈΠ½ΠΎΠ²Π°Ρ†ΠΈΠΈ Јава 15 нСкој ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΌΠ°Ρ€ΠΊΠ°:

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

    package com.example.geometry;

    public sealed class Shape
    permits 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 мс.) ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ с нСбольшими, Ρ‚Π°ΠΊ ΠΈ с ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌΠΈ ΠΊΡƒΡ‡Π°ΠΌΠΈ, Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΎΡ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сотСн ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚ Π΄ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚.
  • Π‘Ρ‚Π°Π±ΠΈΠ»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ ΠΏΡ€ΠΈΠ·Π½Π°Π½ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌ для повсСмСстного использования
    сборщик мусора Shenandoah зСмјодСлско, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ приостановками (Low-Pause-Time Garbage Collector). Shenandoah Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Red Hat ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»Π΅Π½ использованиСм Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, ΡΠΎΠΊΡ€Π°Ρ‰Π°ΡŽΡ‰Π΅Π³ΠΎ врСмя остановок Π²ΠΎ врСмя сборки мусора Π·Π° счёт провСдСния чистки ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ с Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Java-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π Π°Π·ΠΌΠ΅Ρ€ вносимых сборщиком мусора Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ прСдсказуСм ΠΈ Π½Π΅ зависит ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΊΡƒΡ‡ΠΈ, Ρ‚.Π΅. для ΠΊΡƒΡ‡ Π² 200 MB ΠΈ 200 GB Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ (Π½Π΅ выходят Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ 50 мс ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡƒΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² 10 мс);

  • Π‘Ρ‚Π°Π±ΠΈΠ»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΈ Π²Π²Π΅Π΄Π΅Π½Π° Π² язык ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° тСкстуални Π±Π»ΠΎΠΊΠΎΠ²ΠΈ β€” Π½ΠΎΠ²ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² исходный ΠΊΠΎΠ΄ многострочныС тСкстовыС Π΄Π°Π½Π½Ρ‹Π΅ Π±Π΅Π· примСнСния Π² Π½ΠΈΡ… экранирования символов ΠΈ сохраняя исходноС форматирования тСкста Π² Π±Π»ΠΎΠΊΠ΅. ΠžΠ±Ρ€Π°ΠΌΠ»Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ° осущСствляСтся трСмя Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ.

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

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

    ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°Π²Π΅Π΄Π΅Ρ‚Π΅:

    Низа html = """


    »Јава 1\
    Π΅ Ρ‚ΡƒΠΊΠ°!

    """;

  • ΠŸΡ€Π΅Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΎ API Legacy DatagramSocket. Π‘Ρ‚Π°Ρ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ 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 записи = group.getEntries();
    }

    Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π±Π΅Π· Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Ρ‚Π° β€žΠ“Ρ€ΡƒΠΏΠ½Π° Π³Ρ€ΡƒΠΏΠ° = (Π“Ρ€ΡƒΠΏΠ°) objβ€œ:

    if (obj instanceof Group group) {
    var записи = group.getEntries();
    }

  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ вторая ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ рСализация ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова Β«Ρ€Π΅ΠΊΠΎΡ€Π΄", кој ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π° Ρ„ΠΎΡ€ΠΌΠ° Π·Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°ΡšΠ΅ класи, ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°Ρ˜ΡœΠΈ Π²ΠΈ Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅Ρ‚Π΅ Сксплицитно Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°ΡšΠ΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π½Π° ниско Π½ΠΈΠ²ΠΎ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС equals(), hashCode() ΠΈ toString() Π²ΠΎ случаи ΠΊΠΎΠ³Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ сС складираат само Π²ΠΎ полиња Ρ‡ΠΈΠ΅ ΠΎΠ΄Π½Π΅ΡΡƒΠ²Π°ΡšΠ΅ Π½Π΅ сС ΠΌΠ΅Π½ΡƒΠ²Π°. Кога класата користи стандардни ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ equals(), hashCode() ΠΈ toString(), ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈ Π±Π΅Π· Π½ΠΈΠ²Π½Π° Сксплицитна Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°:

    јавна Π΅Π²ΠΈΠ΄Π΅Π½Ρ†ΠΈΡ˜Π° Π½Π° банкарска Ρ‚Ρ€Π°Π½ΡΠ°ΠΊΡ†ΠΈΡ˜Π° (Π»ΠΎΠΊΠ°Π»Π΅Π½ Π΄Π°Ρ‚ΡƒΠΌ,
    двојна сума
    Опис Π½Π° Π½ΠΈΠ·Π°Ρ‚Π°) {}

    Оваа Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΡ˜Π° автоматски ќС Π΄ΠΎΠ΄Π°Π΄Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ equals(), hashCode() ΠΈ toString() ΠΏΠΎΠΊΡ€Π°Ρ˜ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ конструктор ΠΈ getter.

  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ API Foreign-Memory Access, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Java-прилоТСниям бСзопасно ΠΈ эффСктивно ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ областям памяти, Π²Π½Π΅ ΠΊΡƒΡ‡ΠΈ Java, манипулируя Π½ΠΎΠ²Ρ‹ΠΌΠΈ абстракциями MemorySegment, MemoryAddress ΠΈ MemoryLayout.
  • ОнСвозмоТСно ΠΈ объявлСна ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅ΠΉ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° ΠΎΠΏΡ‚ΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Biased Locking, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ²ΡˆΠ°ΡΡΡ Π² HotSpot JVM для сокращСния Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов ΠΈΠ·-Π·Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ. Данная Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° потСряла Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π° систСмах с Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½Ρ‹ΠΌΠΈ инструкциями, прСдоставляСмыми соврСмСнными CPU, ΠΈ слишком Ρ‚Ρ€ΡƒΠ΄ΠΎΡ‘ΠΌΠΊΠ° для сопровоТдСния ΠΈΠ·-Π·Π° своСй слоТности.
  • ОбјавСно ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ RMI Activation, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Ρ‘Π½ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… выпусков. ΠžΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ RMI Activation устарСл, ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Ρ‘Π½ Π² разряд ΠΎΠΏΡ†ΠΈΠΈ Π΅Ρ‰Ρ‘ Π² Java 8 ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅ примСняСтся Π² соврСмСнной ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅.
  • Π˜Π·Π±Ρ€ΠΈΡˆΠ°Π½ΠΎ JavaScript-Π΄Π²ΠΈΠΆΠΎΠΊ Nashorn, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» объявлСн ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ Π² Java SE 11.
  • ΠžΡ‚ΡΡ‚Ρ€Π°Π½Π΅Ρ‚ΠΎ ΠΏΠΎΡ€Ρ‚Ρ‹ для ОБ Solaris ΠΈ процСссоров SPARC (Solaris/SPARC, Solaris/x64 ΠΈ Linux/SPARC). Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΡ€Ρ‚ΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ сообщСству ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй OpenJDK, Π½Π΅ тратя врСмя Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ особСнностСй, спСцифичных для Solaris ΠΈ SPARC.

Π˜Π·Π²ΠΎΡ€: opennet.ru

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€