Π Π΅Π»ΠΈΠ· Π½Π° Java SE 15.

Π‘Π»Π΅Π΄ ΡˆΠ΅ΡΡ‚ΠΈΠΌΠ΅ΡΠ΅Ρ‡Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, компания Oracle пусна ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Java SE 15 (Java Platform, Standard Edition 15), чиято Π΅Ρ‚Π°Π»ΠΎΠ½Π½Π° рСализация Π΅ ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ OpenJDK. Π’ Java SE 15 Π΅ Π·Π°ΠΏΠ°Π·Π΅Π½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ с ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈ вСрсии Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Java, всички ΠΏΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π° написани Java ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ Ρ‰Π΅ работят Π±Π΅Π· ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π½Π° Π½ΠΎΠ²Π°Ρ‚Π° вСрсия. Π“ΠΎΡ‚ΠΎΠ²ΠΈ Π·Π° инсталиранС ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π·Π° Java SE 15 (JDK, JRE ΠΈ Server 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 ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ ΠΏΡ€Π΅ΠΌΠΈΠ½Π° Π½Π° Π½ΠΎΠ² процСс Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½e Π½Π° ΠΏΠΎ-ΠΊΡ€Π°Ρ‚ΠΊΠΈ Ρ†ΠΈΠΊΠ»ΠΈ Π·Π° Π½ΠΎΠ²ΠΈ издания. Новата функционалност Π²Π΅Ρ‡Π΅ сС Ρ€Π°Π·Π²ΠΈΠ²Π° Π² Π΅Π΄Π½Π° постоянно Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π³Π»Π°Π²Π½Π° ΠΊΠ»ΠΎΠ½ΠΊΠ°, Π² която сС Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ Π³ΠΎΡ‚ΠΎΠ²ΠΈ измСнСния, ΠΎΡ‚ която Π½Π° всСки ΡˆΠ΅ΡΡ‚ мСсСца сС отклоняват ΠΊΠ»ΠΎΠ½ΠΊΠΈ Π·Π° стабилизиранС Π½Π° Π½ΠΎΠ²ΠΈΡ‚Π΅ издания.

ΠžΡ‚ нововъвСдСния Java 15 ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈΠΌ:

  • Π’Π³Ρ€Π°Π΄Π΅Π½ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌΠ° Π·Π° създаванС Π½Π° Ρ†ΠΈΡ„Ρ€ΠΎΠ² подпис EdDSA (Edwards-Curve Digital Signature Algorithm) RFC 8032). ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π°Ρ‚Π° рСализация Π½Π° EdDSA Π½Π΅ зависи ΠΎΡ‚ Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ, Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π° Π΅ ΠΎΡ‚ Π°Ρ‚Π°ΠΊΠΈ ΠΏΠΎ странични ΠΊΠ°Π½Π°Π»ΠΈ (осигурСно Π΅ постоянно Π²Ρ€Π΅ΠΌΠ΅ Π·Π° всички изчислСния) ΠΈ ΠΏΠΎ производитСлност ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰Π° рСализация ECDSA, написана Π½Π° C, ΠΏΡ€ΠΈ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π°. НапримСр, 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 мс);
  • Π‘Ρ‚Π°Π±ΠΈΠ»ΠΈΠ·ΠΈΡ€Π°Π½Π° ΠΈ въвСдСна Π² Π΅Π·ΠΈΠΊΠ° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° Π½Π° тСкстови Π±Π»ΠΎΠΊΠΎΠ²Π΅ β€” Π½ΠΎΠ²Π° Ρ„ΠΎΡ€ΠΌΠ° Π½Π° стрингови Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΈ, позволяваща Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° многострочни тСкстови Π΄Π°Π½Π½ΠΈ Π² изходния ΠΊΠΎΠ΄ Π±Π΅Π· Π΄Π° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΅ΠΊΡ€Π°Π½ΠΈΡ€Π°Π½Π΅ Π½Π° символитС ΠΈ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΎΡ‚ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° тСкста Π² Π±Π»ΠΎΠΊΠ°. ΠžΠ±Ρ€Π°ΠΌΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π±Π»ΠΎΠΊΠ° става с Ρ‚Ρ€ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΈ ΠΊΠ°Π²ΠΈΡ‡ΠΊΠΈ.

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

    String html = β€ž<HTML>” +
    β€ž\n\t” + β€ž<BODY>” +
    Β«\n\t\tΒ» + Β«

    Java 15 is here!

    Β» +
    β€ž\n\t” + β€ž</BODY>” +
    β€ž\n” + β€ž</HTML>”;

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

    String html = β€ž"""
    <HTML>
    <BODY>

    Java 15
    Π΅ Ρ‚ΡƒΠΊ!β€œ</H1>
    </BODY>
    </HTML>""";

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

    Π‘Π΅ΡˆΠ΅:

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

    Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΌΠΈΠ½Π΅ Π±Π΅Π· опрСдСлянСто Π½Π° Β«Group group = (Group) objΒ»:

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

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

    public record BankTransaction(LocalDate date,
    double amount,
    String description) {}

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

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

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

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