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

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

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

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

  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° шаблонов записСй (record pattern), Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰Π°Ρ ΠΏΠΎΡΠ²ΠΈΠ²ΡˆΡƒΡŽΡΡ Π² Java 16 Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сопоставлСния с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ срСдствами для Ρ€Π°Π·Π±ΠΎΡ€Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ классов Ρ‚ΠΈΠΏΠ° record. НапримСр: record Point(int x, int y) {} void printSum(Object o) { if (o instanceof Point(int x, int y)) { System.out.println(x+y); } }
  • Π’ сборках для Linux обСспСчСна ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ RISC-V.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° API FFM (Foreign Function & Memory), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ взаимодСйствиС Java-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с внСшними ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ· Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ доступ ΠΊ памяти Π²Π½Π΅ JVM.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… собой лСгковСсныС ΠΏΠΎΡ‚ΠΎΠΊΠΈ, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰ΠΈΠ΅ написаниС ΠΈ сопровоТдСниС Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° чСтвёртая ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ рСализация API Vector, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… вычислСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ с использованиСм Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… инструкций процСссоров x86_64 ΠΈ AArch64 ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сразу ΠΊ нСскольким значСниям (SIMD). Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ прСдоставляСмых Π² JIT-компиляторС HotSpot возмоТностСй ΠΏΠΎ Π°Π²Ρ‚ΠΎΠ²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ скалярных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Π½ΠΎΠ²Ρ‹ΠΉ API Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ явно ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ для ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ….
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Ρ‚Ρ€Π΅Ρ‚ΡŒΡ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ рСализация сопоставлСния ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ Π² выраТСниях Β«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(); };
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ API для cΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°, ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π·Π° счёт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡, выполняСмых Π² Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ…, ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°.

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

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