αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ Java SE 18

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžšαž™αŸˆαž–αŸαž›αž”αŸ’αžšαžΆαŸ†αž˜αž½αž™αžαŸ‚αž“αŸƒαž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸ Oracle αž”αžΆαž“αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžœαŸαž‘αž·αž€αžΆ Java SE 18 (Java Platform, Standard Edition 18) αžŠαŸ‚αž›αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‚αž˜αŸ’αžšαŸ„αž„αž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž  OpenJDK αž‡αžΆαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž™αŸ„αž„αŸ” αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžšαžŽαžΈαž›αžΎαž€αž›αŸ‚αž„αž“αŸƒαž€αžΆαžšαžŠαž€αž…αŸαž‰αž“αžΌαžœαž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αžŠαŸ‚αž›αž”αžΆαž“αž”αžŠαž·αžŸαŸαž’αž“αŸ„αŸ‡ Java SE 18 αžšαž€αŸ’αžŸαžΆαž—αžΆαž–αž†αž”αž‚αŸ’αž“αžΆαžαž™αž€αŸ’αžšαŸ„αž™αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž–αžΈαž˜αž»αž“αž“αŸƒαžœαŸαž‘αž·αž€αžΆ Javaβ€”αž‚αž˜αŸ’αžšαŸ„αž„ Java αžŠαŸ‚αž›αž”αžΆαž“αžŸαžšαžŸαŸαžšαž–αžΈαž˜αž»αž“αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž“αžΉαž„αž“αŸ…αžαŸ‚αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž€αžΆαžšαž€αŸ‚αž”αŸ’αžšαŸ‚αž“αŸ…αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ’αžšαŸ„αž˜αž€αŸ†αžŽαŸ‚αžαŸ’αž˜αžΈαŸ” Java SE 18 builds αžŠαŸ‚αž›αž’αžΆαž…αžŠαŸ†αž‘αžΎαž„αž”αžΆαž“ (JDK, JRE, αž“αž·αž„ Server JRE) αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαŸ€αž”αž…αŸ†αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Linux (x86_64, AArch64), Windows (x86_64) αž“αž·αž„ macOS (x86_64, AArch64)αŸ” αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αž‚αž˜αŸ’αžšαŸ„αž„ OpenJDK αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžŸαŸαž…αž€αŸ’αžαžΈαž™αŸ„αž„ Java 18 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΎαž€αž™αŸ‰αžΆαž„αž–αŸαž‰αž›αŸαž‰αž€αŸ’αžšαŸ„αž˜αž’αžΆαž‡αŸ’αž‰αžΆαž”αŸαžŽαŸ’αžŽ GPLv2 αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžšαžŽαžΈαž›αžΎαž€αž›αŸ‚αž„ GNU ClassPath αžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž˜αžΆαž“αž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αžαžΆαž˜αžœαž“αŸ’αžαž‘αŸ…αž“αžΉαž„αž•αž›αž·αžαž•αž›αž–αžΆαžŽαž·αž‡αŸ’αž‡αž€αž˜αŸ’αž˜αŸ”

Java SE 18 αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž…αžΆαžαŸ‹β€‹αžαŸ’αž“αžΆαž€αŸ‹β€‹αž‡αžΆβ€‹αž€αžΆαžšβ€‹αž…αŸαž‰β€‹αž•αŸ’αžŸαžΆαž™β€‹αž€αžΆαžšβ€‹αž‚αžΆαŸ†αž‘αŸ’αžšβ€‹αž‡αžΆβ€‹αž”αŸ’αžšαž…αžΆαŸ† αž αžΎαž™β€‹αž“αžΉαž„β€‹αž”αž“αŸ’αžβ€‹αž‘αž‘αž½αž›β€‹αž”αžΆαž“β€‹αž€αžΆαžšβ€‹αž’αžΆαž”αŸ‹αžŠαŸαžβ€‹αžšαž αžΌαžβ€‹αžŠαž›αŸ‹β€‹αž€αžΆαžšβ€‹αž…αŸαž‰β€‹αž•αŸ’αžŸαžΆαž™β€‹αž›αžΎαž€β€‹αž€αŸ’αžšαŸ„αž™αŸ” αžŸαžΆαžαžΆαž‚αžΆαŸ†αž‘αŸ’αžšαžšαž™αŸˆαž–αŸαž›αžœαŸ‚αž„ (LTS) αž‚αž½αžšαžαŸ‚αž‡αžΆ Java SE 17 αžŠαŸ‚αž›αž“αžΉαž„αž”αž“αŸ’αžαž‘αž‘αž½αž›αž”αžΆαž“αž€αžΆαžšαž’αžΆαž”αŸ‹αžŠαŸαžαžšαž αžΌαžαžŠαž›αŸ‹αž†αŸ’αž“αžΆαŸ† 2029αŸ” αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž™αžΎαž„αžšαŸ†αž›αžΉαž€αž’αŸ’αž“αž€αžαžΆαž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž“αŸƒ Java 10 αž‚αž˜αŸ’αžšαŸ„αž„αž“αŸαŸ‡αž”αžΆαž“αž”αŸ’αžαžΌαžšαž‘αŸ…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαžαŸ’αž˜αžΈαžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‰αž–αžΈαžœαžŠαŸ’αžαžαŸ’αž›αžΈαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžαŸ’αž˜αžΈαŸ” αž˜αž»αžαž„αžΆαžšαžαŸ’αž˜αžΈαž₯αž‘αžΌαžœαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαžΆαžαžΆαž˜αŸαžŠαŸ‚αž›αž”αžΆαž“αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž₯αžαžˆαž”αŸ‹αžˆαžš αžŠαŸ‚αž›αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŠαŸ‚αž›αžαŸ’αžšαŸ€αž˜αžšαž½αž…αž‡αžΆαžŸαŸ’αžšαŸαž… αž“αž·αž„αž–αžΈαžŸαžΆαžαžΆαžŽαžΆαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ†αž”αŸ‚αž€αž‡αžΆαžšαŸ€αž„αžšαžΆαž›αŸ‹αž”αŸ’αžšαžΆαŸ†αž˜αž½αž™αžαŸ‚αž˜αŸ’αžαž„ αžŠαžΎαž˜αŸ’αž”αžΈαžšαž€αŸ’αžŸαžΆαžŸαŸ’αžαŸαžšαž—αžΆαž–αž“αŸƒαž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžαŸ’αž˜αžΈαŸ”

αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαžαŸ’αž˜αžΈαž“αŸ…αž€αŸ’αž“αž»αž„ Java 18 αžšαž½αž˜αž˜αžΆαž“:

  • По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ задСйствована ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° UTF-8. Java API, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ тСкстовыС Π΄Π°Π½Π½Ρ‹Π΅ с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ символов, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ UTF-8 Π½Π° всСх ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…, нСзависимо ΠΎΡ‚ систСмных настроСк ΠΈ выставлСнной Π»ΠΎΠΊΠ°Π»ΠΈ. Для возвращСния старого повСдСния, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° выбираСтся с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ систСмной Π»ΠΎΠΊΠ°Π»ΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β«-Dfile.encoding=COMPATΒ».
  • Π’ состав Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ ΠΏΠ°ΠΊΠ΅Ρ‚ com.sun.net.httpserver, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ…ΠΎΠ΄ΠΈΡ‚ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° jwebserver ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹ΠΉ API с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ простого http-сСрвСра для ΠΎΡ‚Π΄Π°Ρ‡ΠΈ статичСского ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° (CGI ΠΈ servlet-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ). ВстроСнный http-сСрвСр Π½Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ для Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ доступом ΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°Ρ†Π΅Π»Π΅Π½ Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π½Π° использованиС Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для создания ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ², ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ тСстирования ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².
  • Π’ JavaDoc Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‚Π΅Π³Π° Β«@snippetΒ» для встраивания Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π° Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Π½Π° API, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ срСдства для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ коррСктности, подсвСтки синтаксиса ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с IDE.
  • ΠŸΠ΅Ρ€Π΅Π΄Π΅Π»Π°Π½Π° рСализация API java.lang.reflect (Core Reflection), ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ…, полях ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Π°Ρ… классов, Π° Ρ‚Π°ΠΊΠΆΠ΅ доступа ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ структурС классов. Π‘Π°ΠΌ API java.lang.reflect остался Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π΅Π½, Π½ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ‡Π΅Ρ€Π΅Π· использованиС дСскрипторов ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² (method handles), прСдоставляСмых ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ java.lang.invoke, вмСсто примСнСния Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π°. ИзмСнСниС ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ java.lang.reflect ΠΈ java.lang.invoke, ΠΈ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΈΡ… сопровоТдСниС.
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Ρ‚Ρ€Π΅Ρ‚ΡŒΡ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ рСализация API Vector, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… вычислСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ с использованиСм Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… инструкций процСссоров x86_64 ΠΈ AArch64 ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сразу ΠΊ нСскольким значСниям (SIMD). Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ прСдоставляСмых Π² JIT-компиляторС HotSpot возмоТностСй ΠΏΠΎ Π°Π²Ρ‚ΠΎΠ²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ скалярных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Π½ΠΎΠ²Ρ‹ΠΉ API Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ явно ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ для ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ….
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ SPI-интСрфСйс (service-provider interface) для Ρ€Π΅Π·ΠΎΠ»Π²ΠΈΠ½Π³Π° ΠΈΠΌΡ‘Π½ хостов ΠΈ IP-адрСсов, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² java.net.InetAddress Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ€Π΅Π·ΠΎΠ»Π²Π΅Ρ€Ρ‹, Π½Π΅ привязанныС ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой.
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° вторая ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ рСализация API Foreign Function & Memory, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ прилоТСния ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, находящимися Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Java runtime. Новый API позволяСт эффСктивно Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, выполняСмыС Π½Π΅ Π² JVM, ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ памяти, Π½Π΅ управляСмой JVM. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· Π²Π½Π΅ΡˆΠ½ΠΈΡ… раздСляСмых Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ процСсса Π±Π΅Π· использования JNI.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° вторая ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ рСализация сопоставлСния ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ Π² выраТСниях Β«switchΒ», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π² ΠΌΠ΅Ρ‚ΠΊΠ°Ρ… Β«caseΒ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ значСния, Π° Π³ΠΈΠ±ΠΊΠΈΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ сразу ΡΠ΅Ρ€ΠΈΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π½Π΅Π΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠ΅ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Β«if…elseΒ». Object o = 123L; String formatted = switch (o) { case Integer i -> String.format(Β«int %dΒ», i); case Long l -> String.format(Β«long %dΒ», l); case Double d -> String.format(Β«double %fΒ», d); case String s -> String.format(Β«String %sΒ», s); default -> o.toString(); };
  • ОбъявлСн ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Ρ‘Π½ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… выпусков ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ„ΠΈΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ связанныС с Π½ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Object.finalize(), Enum.finalize(), Runtime.runFinalization() ΠΈ System.runFinalization().
  • Π’ сборщиках мусора ZGC (Z Garbage Collector), SerialGC ΠΈ ParallelGC Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π΄Π΅Π΄ΡƒΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ строк.

αž”αŸ’αžšαž—αž–: opennet.ru

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹