Java SE 16 tso tawm

ПослС ΡˆΠ΅ΡΡ‚ΠΈ мСсяцСв Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ компания Oracle выпустила ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ Java SE 16 (Java Platform, Standard Edition 16), Π² качСствС эталонной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ OpenJDK. Π’ Java SE 16 сохранСна обратная ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΌΠΈ выпусками ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Java, всС Ρ€Π°Π½Π΅Π΅ написанныС Java-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π±ΡƒΠ΄ΡƒΡ‚ работоспособны ΠΏΡ€ΠΈ запускС ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²ΠΎΠΉ вСрсии. Π“ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ для установки сборки Java SE 16 (JDK, JRE ΠΈ Server JRE) ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹ для Linux (x86_64, AArch64), Windows ΠΈ macOS. Разработанная Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° OpenJDK эталонная рСализация Java 16 ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Π° ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GPLv2 с ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ GNU ClassPath, Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΠΌΠΈ динамичСскоС связываниС с коммСрчСскими ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°ΠΌΠΈ.

Java SE 16 отнСсён ΠΊ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ выпусков с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ сроком ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ, обновлСния для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ Π΄ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ€Π΅Π»ΠΈΠ·Π°. Π’ качСствС Π²Π΅Ρ‚ΠΊΠΈ с Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ сроком ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ (LTS) слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Java SE 11, обновлСния для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ Π΄ΠΎ 2026 Π³ΠΎΠ΄Π°. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ LTS-Ρ€Π΅Π»ΠΈΠ· Π½Π°ΠΌΠ΅Ρ‡Π΅Π½ Π½Π° ΡΠ΅Π½Ρ‚ΡΠ±Ρ€ΡŒ 2021 Π³ΠΎΠ΄Π°. Напомним, Ρ‡Ρ‚ΠΎ начиная с выпуска Java 10 ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠ΅Ρ€Π΅ΡˆΡ‘Π» Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‰ΠΈΠΉ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ Ρ†ΠΈΠΊΠ» формирования Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π΅Π»ΠΈΠ·ΠΎΠ². Новая Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ развиваСтся Π² ΠΎΠ΄Π½ΠΎΠΉ постоянно обновляСмой master-Π²Π΅Ρ‚ΠΊΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΡƒΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ измСнСния ΠΈ ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π· Π² ΡˆΠ΅ΡΡ‚ΡŒ мСсяцСв ΠΎΡ‚Π²Π΅Ρ‚Π²Π»ΡΡŽΡ‚ΡΡ Π²Π΅Ρ‚ΠΊΠΈ для стабилизации Π½ΠΎΠ²Ρ‹Ρ… выпусков.

ΠŸΡ€ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ выпуска Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π° с систСмы управлСния вСрсиями Mercurial Π½Π° Git ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ совмСстной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ GitHub. ΠžΠΆΠΈΠ΄Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ миграция ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ хранСния, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ доступ ΠΊ измСнСниям Π·Π° всю ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ рСцСнзирования ΠΊΠΎΠ΄Π° ΠΈ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ API для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… процСссов. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Git ΠΈ GitHub Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΡˆΠΈΡ… ΠΊ Git.

Cov yam ntxwv tshiab hauv Java 16 suav nrog:

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ jdk.incubator.vector с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ API Vector, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… вычислСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ с использованиСм Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… инструкций процСссоров x86_64 ΠΈ AArch64 ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сразу ΠΊ нСскольким значСниям (SIMD). Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ прСдоставляСмых Π² JIT-компиляторС HotSpot возмоТностСй ΠΏΠΎ Π°Π²Ρ‚ΠΎΠ²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ скалярных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Π½ΠΎΠ²Ρ‹ΠΉ API позволяСт явно ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ для ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ….
  • Π’ ΠΊΠΎΠ΄Π΅ JDK ΠΈ VM HotSpot, написанном Π½Π° C++, Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ возмоТности, появившиСся Π² спСцификации C++14. Π Π°Π½Π΅Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°Π»ΠΎΡΡŒ использованиС стандартов C++98/03.
  • Π’ сборщик мусора ZGC (Z Garbage Collector), Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π² пассивном Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈ насколько это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡ‰ΠΈΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈΠ·-Π·Π° сборки мусора, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ стСков ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π±Π΅Π· приостановки выполнСния ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² прилоТСния. Π’ ZGC Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ приостановки Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ постоянныС Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сотСн микросСкунд.
  • Π’ классах SocketChannel, ServerSocketChannel ΠΈ java.nio.channels Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Unix-сокСтов (AF_UNIX).
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΏΠΎΡ€Ρ‚ для Linux-дистрибутива Alpine cΠΎ стандартной Π‘ΠΈ-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ musl, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ популярСн Π² окруТСниях для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², микросСрвисов, ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… ΠΈ встраиваСмых систСм. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚ Π² ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… окруТСниях позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Java ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ прилоТСния. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ jlink ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ всС Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ минимальноС ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅, достаточноС для выполнСния прилоТСния, Ρ‡Ρ‚ΠΎ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ спСцифичныС для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π·Ρ‹.
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Elastic Metaspace, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ выдСлСния ΠΈ возвращСния памяти, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ классов (metaspace) Π² JVM HotSpot. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Elastic Metaspace сниТаСт Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ памяти, ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы Π² Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ΅ классов, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π±Π»Π°Π³ΠΎΡ‚Π²ΠΎΡ€Π½ΠΎ влияСт Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ выполняСмых сСрвСрных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π·Π° счёт Π±ΠΎΠ»Π΅Π΅ быстрого Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС памяти, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ классов. Для Π²Ρ‹Π±ΠΎΡ€Π° Ρ€Π΅ΠΆΠΈΠΌΠ° высвобоТдСния памяти послС Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ классов ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° опция Β«-XX:MetaspaceReclaimPolicy=(balanced|aggressive|none)Β».
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΠΎΡ€Ρ‚ JDK для систСм Windows, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π½Π° ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ с процСссорами Π½Π° Π±Π°Π·Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ AArch64.
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ API Foreign-Memory Access, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Java-прилоТСниям бСзопасно ΠΈ эффСктивно ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ областям памяти, Π²Π½Π΅ ΠΊΡƒΡ‡ΠΈ Java, манипулируя Π½ΠΎΠ²Ρ‹ΠΌΠΈ абстракциями MemorySegment, MemoryAddress ΠΈ MemoryLayout.
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ API Foreign Linker, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ доступ ΠΈΠ· Java ΠΊ Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ. ВмСстС с API Foreign-Memory Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ созданиС обвязок Π½Π°Π΄ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ раздСляСмыми Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° jpackage, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ для самодостаточных (self-contained) Java-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° базируСтся Π½Π° javapackager ΠΈΠ· JavaFX ΠΈ позволяСт Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ…, Ρ€ΠΎΠ΄Π½Ρ‹Ρ… для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ (msi ΠΈ exe для Windows, pkg ΠΈ dmg для macOS, deb ΠΈ rpm для Linux). ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ зависимости.
  • Π’ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ строгая инкапсуляция всСх Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… элСмСнтов JDK, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ критичСских API, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ sun.misc.Unsafe. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ†ΠΈΠΈ Β«β€”illegal-accessΒ» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ выставлСно Π² Β«denyΒ» вмСсто Β«permitΒ», Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ обращСния ΠΈΠ· ΠΊΠΎΠ΄Π° ΠΊ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Ρƒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… классов, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ ΠΏΠΎΠ»Π΅ΠΉ. Для ΠΎΠ±Ρ…ΠΎΠ΄Π° ограничСния слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ Β«β€”illegal-access=permitΒ».
  • Π‘Ρ‚Π°Π±ΠΈΠ»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° рСализация сопоставлСния c ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ Β«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) {}

    Cov lus tshaj tawm no yuav cia li ntxiv cov kev siv ntawm qhov sib npaug (), hashCode() thiab toString() txoj hauv kev ntxiv rau cov qauv tsim thiab cov txheej txheem getter.

  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π·Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Π½Ρ‹Ρ… (Β«sealedΒ») классов ΠΈ интСрфСйсов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ классами ΠΈ интСрфСйсами для наслСдования, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ пСрСопрСдСлСния Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π—Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Π½Ρ‹Π΅ классы Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ способ ограничСния использования супСркласса, Ρ‡Π΅ΠΌ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ доступа, основанный Π½Π° явном пСрСчислСнии подклассов, Ρ€Π°Π·Ρ€Π΅ΡˆΡ‘Π½Π½Ρ‹Ρ… для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ. package com.example.geometry; public sealed class Shape permits com.example.polar.Circle, com.example.quad.Rectangle, com.example.quad.simple.Square {…}

Tau qhov twg los: opennet.ru

Ntxiv ib saib