какая послСдняя вСрсия Π΄ΠΆΠ°Π²Π° 2021

What can we do with Java16? ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π΅Π»ΠΈΠ·Π° JDK (ΠΌΠ°Ρ€Ρ‚ 2021)

какая послСдняя вСрсия Π΄ΠΆΠ°Π²Π° 2021. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ какая послСдняя вСрсия Π΄ΠΆΠ°Π²Π° 2021. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ какая послСдняя вСрсия Π΄ΠΆΠ°Π²Π° 2021. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ какая послСдняя вСрсия Π΄ΠΆΠ°Π²Π° 2021. Π€ΠΎΡ‚ΠΎ какая послСдняя вСрсия Π΄ΠΆΠ°Π²Π° 2021

JDK 16. Π§Π΅Π³ΠΎ Π½Π°ΠΌ ΠΆΠ΄Π°Ρ‚ΡŒ ΠΎΡ‚ Java Π² ΠΌΠ°Ρ€Ρ‚Π΅?

Π’ ΠΌΠ°Ρ€Ρ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π² ΠΈΡ… ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Ρ… срСдах Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΡˆΠ»ΠΎ сообщСниС «New JDK version is available», Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π»ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ΡˆΠ΅Π» ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ Ρ€Π΅Π»ΠΈΠ· Java 16 с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ Java SE (Standard Edition) 16 ΠΈ Java Development Kit 16 (JDK 16). ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΊ выпуску ΠΎΠΊΠΎΠ½Ρ‡Π΅Π½Π°, ΠΈ Π½Π°Π±ΠΎΡ€ Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (JEP), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² JDK ΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ доступС. Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ для 16-Π³ΠΎ Ρ€Π΅Π»ΠΈΠ·Π° Π½ΠΎΠ²Ρ‹Ρ… JEP ΡƒΠΆΠ΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. А ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ, 17-ΠΉ Ρ€Π΅Π»ΠΈΠ· Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ Π² сСнтябрС. Ах Π΄Π°, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ JEP для Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π΅Π»ΠΈΠ·ΠΎΠ² Java? Для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ° это всСгда Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ понятно.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ JEP Π² ΠΏΡ€Π΅Π²ΡŒΡŽ ΠΊ JDK.

ΠœΡ‹ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠ°ΠΌ, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌ ΠΈ просто Π»ΡŽΠ±ΠΈΡ‚Π΅Π»ΡΠΌ Java наш ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΈ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ самый ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΎΠ±Π·ΠΎΡ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ помСняСтся Π² JDK 16.

Π§Ρ‚ΠΎ измСнилось Π² ΠΎΠ±Ρ‰Π΅ΠΌ?

НСкоторыС ΠΈΠ· прСдстоящих основных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ JDK 16 Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ стСка ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² для «сборки мусора», ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ языка C++ 14, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π³ΠΈΠ±ΠΊΠΎΠ³ΠΎ (elastic) Metaspace для Π±ΠΎΠ»Π΅Π΅ быстрого Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ памяти Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму, измСнСния Π² ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, Π½ΠΎΠ²Ρ‹Π΅ API ΠΈ инструмСнты, ΠΏΠΎΡ€Ρ‚Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, инкапсулированиС Π½Π°Ρ‡ΠΈΠ½ΠΊΠΈ JDK ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π΅Ρ‰ΠΈ.

Нам Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π½Π°ΠΊΠΎΠ²Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ:

Π˜Ρ‚Π°ΠΊ, ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€ΠΎΠ»ΡŒ старых Π΄ΠΎΠ±Ρ€Ρ‹Ρ… Fortran ΠΈ C++ пСрСстали. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° трСбуСтся ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ вычислСний, JAVA Π½Π΅ справится ΠΈ ΠΏΠΎΡ€Π° это ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚ΡŒ.

Git Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ удобная Π²Π΅Ρ‰ΡŒ, нСзамСнимая Π² соврСмСнном процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ JDK 16 посвятил GIT нСсколько JEP.

Π’Π½Π΅ΡˆΠ½ΡΡ ΠΏΠ°ΠΌΡΡ‚ΡŒ, сборка муссора ΠΈ кэш. Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π΅Π»ΠΈΠ·Π° JAVA. Роль ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° микросСрвисной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ Ρ‚Ρ€Π΅Π΄ΡƒΠ΅Ρ‚ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠΉ.

Π“Π΄Π΅-Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆ Linux ΠΈ взаимодСйствиС JAVA с Π½ΠΈΠΌ бСсспорно Π½Π°Π΄ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒ, Π½ΠΎ Π² послСднСС врСмя Windows Ρ‚Π°ΠΊΠΆΠ΅ развиваСтся ΠΈ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ сСрвСрныС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π½Π° Π΅Π΅ основС. Начиная с этого Ρ€Π΅Π»ΠΈΠ·Π° произвоится ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π΄Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, Π²Π΅Π΄ΡƒΡ‰ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ инструмСнты.

JEP 397: Π˜Π·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ классы (sealed classes) становятся Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ:

Об изоляции классов Ρ€Π΅Ρ‡ΡŒ шла Ρ€Π°Π½Π΅Π΅ Π² JDK 15. ИмСнно Π² Ρ€Π°ΠΌΠΊΠ°Ρ… 15-Π³ΠΎ Ρ€Π΅Π»ΠΈΠ·Π° Π±Ρ‹Π»ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ‹ ΠΈ поставлСны ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ классы (sealed classes) Π² качСствС preview feature. Напомним, Ρ‡Ρ‚ΠΎ концСпция ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… классов прСдусматриваСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ возмоТности ΠΈΡ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ выполнСния для Π΄Ρ€ΡƒΠ³ΠΈΡ… классов. ЀактичСски это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π·Π°ΠΏΡ€Π΅Ρ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π΄Π°Π½Π½ΠΎΠ³ΠΎ (ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ) класса.

Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ класса ΠΈΠ»ΠΈ интСрфСйса самому ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, какая Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π·Π° Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ

ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΈ понятный способ, Ρ‡Π΅ΠΌ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ доступа (access modifiers), для ограничСния использования супСрклассов.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ дальнСйшСС Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ β€œΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ матчинга” (pattern Matching), прСдоставив Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ для ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ².

Π§Ρ‚ΠΎ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΈ ΠΊ Ρ‡Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚?

Π’ JLS придСтся ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ контСкстныС ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова (contextual keyword), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ замСнят Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Ρ€Π°Π½Π΅Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова Ρ‚ΠΈΠΏΠ° (estricted keyword ΠΈ restricted identifier). Для этого слСдуСт Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΈ Π½Π΅ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ символов ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² качСствС ΠΊΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов Π² срСдС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π’Π°ΠΊΠΆΠ΅, Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ компилятор Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΡΡ‚Ρ€ΠΎΠ³ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΏΡ€ΠΈ конвСрсии Ρ‚ΠΈΠΏΠΎΠ², Π² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ классы ΠΈΠ»ΠΈ интСрфСйсы.

JEP 396: Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ JDK Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ стала строгой:

Для Ρ‡Π΅Π³ΠΎ:

ΠŸΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ Ρ€Π΅ΠΌΠΎΠ½Ρ‚ΠΎΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎΡΡ‚ΡŒ JDK, ΠΊΠ°ΠΊ части Project Jigsaw, ΠΈ ΠΏΡ€ΠΈΠ·Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΎΡ‚ использования Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… элСмСнтов JDK ΠΊ стандартным API.ДСлаСтся это для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΠ·ΠΌΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ использованию Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… вСрсий Java.

Π­Ρ‚ΠΎΡ‚ JEP нСсСт Π² сСбС риск Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Java Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ инструмСнт jdeps для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опираСтся Π½Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ элСмСнты JDK, ΠΈ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π½Π° ΠΈΡ… стандартныС Π·Π°ΠΌΠ΅Π½Ρ‹.

Π§Ρ‚ΠΎ измСнилось:

2. Если ΠΊΠΎΠ΄ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ доступа ΠΊ внутрСнностям JDK Π²ΠΎ врСмя выполнСния, Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π» Π½Π° Java 16, Π΅ΠΌΡƒ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ придСтся явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΠΎΠΏΡ†ΠΈΠΉ JVM:

—illegal-access=permit/warn/debug: ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ всСх ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² JDK

—add-opens=module/package=target-module: ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°

—add-exports=module/package=target-module: экспортированиС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для статичСского доступа).

EP 395: Записи:

Записи Π±Ρ‹Π»ΠΈ Ρ€Π°Π½Π΅Π΅ Π²Π²Π΅Π΄Π΅Π½Ρ‹ Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° ΠΊΡ€ΠΈΡ‚ΠΈΠΊΡƒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Java стала слишком Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΎΠΉ ΠΈΠ·-Π·Π° большого количСства Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… шаблонов ΠΈΠ»ΠΈ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ². О записях шла Ρ€Π΅Ρ‡ΡŒ ΠΈ Ρ€Π°Π½Π΅Π΅. ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ прСдставлСны Π² JDK 14 ΠΈ JDK 15. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ свободно Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ язык программирования Java с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ записСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ классами, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹Ρ… носитСлСй нСизмСняСмых Π΄Π°Π½Π½Ρ‹Ρ…. Записи ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ.

Для Ρ‡Π΅Π³ΠΎ:

ΠŸΠΎΠΌΠΎΡ‡ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ нСизмСняСмых Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π½Π΅ Π½Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΈ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΉ ΠΈΡ… повСдСния.

АвтоматичСски Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, управляСмыС Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ equals ΠΈ accessors.

Π—Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Java, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ номинальная типизация ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ.

Π§Ρ‚ΠΎ измСнилось:

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ внятного описания Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ JDK Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ прСдоставляСт, Π½Π°ΠΌΠΈ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ ΠΏΡƒΡ‚Π΅ΠΌ Π±Ρ‹Π»ΠΎ установлСно, Ρ‡Ρ‚ΠΎ Π² Java 16 Π±Ρ‹Π»ΠΎ внСсСно ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅: Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… классах Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ статичСскиС Ρ‡Π»Π΅Π½Ρ‹.

JEP 394: Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сопоставлСния ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² для экзСмпляра:

Π”Π°Π½Π½Ρ‹ΠΉ JEP ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° instanceof. ИдСя эта ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π° Π² JDK 16, хотя Ρ€Π°Π½Π΅Π΅ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»Π°ΡΡŒ Π² Ρ€Π΅Π»ΠΈΠ·Π°Ρ… JDK 14 ΠΈ JDK 15.

Для Ρ‡Π΅Π³ΠΎ:

ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Π°Ρ ΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, такая ΠΊΠ°ΠΊ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½Π° Π±ΠΎΠ»Π΅Π΅ сТато ΠΈ бСзопасно с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сопоставлСния ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠ², описанных Π² ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°Ρ….

Π§Ρ‚ΠΎ измСнилось:

ЀактичСски это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° instanceof.

JEP 393: API доступа ΠΊ Foreign Memory (Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΈΠ½ΠΊΡƒΠ±Π°Ρ‚ΠΎΡ€):

API доступа ΠΊ Foreign Memory, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π½Π΅Π΅ инкубировался ΠΊΠ°ΠΊ Π² JDK 14, Ρ‚Π°ΠΊ ΠΈ Π² JDK 15, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΠ½ΠΊΡƒΠ±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² JDK 16 со Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡΠΌΠΈ. ΠŸΡ€ΠΈ этом Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ интСрфСйсов MemureSegment ΠΈ MemureAddresses стали Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅Ρ‚ΠΊΠΎ.

МногиС Java-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ доступ ΠΊ Β«Π·Π°Ρ€ΡƒΠ±Π΅ΠΆΠ½ΠΎΠΉ памяти» Foreign Memory, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ignite, mapDB, memcached, Lucene ΠΈ API ByteBuf ΠΎΡ‚ Netty. К соТалСнию, Java API Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π΅ обСспСчивал ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для доступа ΠΊ Foreign Memory.

Для Ρ‡Π΅Π³ΠΎ:

Для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ расходов ΠΈ ΡƒΡ…ΠΎΠ΄Π° ΠΎΡ‚ нСпрСдсказуСмости «сбора мусора». ОсобСнно это касаСтся Ρ‚Π΅Ρ… случаСв, ΠΊΠΎΠ³Π΄Π° Ρƒ вас Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ нСсколько процСссов ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ.

БСриализация ΠΈ дСсСриализация содСрТимого памяти ΠΏΡƒΡ‚Π΅ΠΌ прСобразования Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· mmap).

Π§Ρ‚ΠΎ измСнилось

ЀактичСски это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° instanceof. ИдСя эта Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π° Π² JDK 16, хотя Ρ€Π°Π½Π΅Π΅ Π±Ρ‹Π»Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ рассмотрСна Π² JDK 14 ΠΈ JDK 15.

JEP 392: Π£ΠΏΠ°ΠΊΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ инструмСнт Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ стал постоянным ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ:

Jpackage Π±Ρ‹Π» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ€Π°Π½Π΅Π΅ Π² качСствС ΠΈΠ½ΠΊΡƒΠ±Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ инструмСнта Π² JDK 14, Ρ‚Π°ΠΊΠΎΠ²Ρ‹ΠΌ ΠΎΠ½ оставался ΠΈ Π² JDK 15. Π‘ JDK 16 jpackage ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΏΡ€Π°Π²Π° постоянного модуля.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ jpackage Π½ΡƒΠΆΠ΅Π½ для ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Ρ… срСдств Java. МногиС Java-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ доступ ΠΊ foreign memory, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ignite, mapDB, memcached, Lucene ΠΈ API ByteBuf ΠΎΡ‚ Netty. К соТалСнию, Java API Ρ‚Π°ΠΊ ΠΈ Π½Π΅ обСспСчиваСт ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для доступа ΠΊ Foreign Memory.

Для Ρ‡Π΅Π³ΠΎ:

ΠŸΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ запуска Π²ΠΎ врСмя ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ.

Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ API-интСрфСйс ToolProvider для нСпосрСдствСнного Π²Ρ‹Π·ΠΎΠ²Π° ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

Π§Ρ‚ΠΎ измСнилось:

jpackage ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΏΡ€Π°Π²Π° постоянного модуля

JEP 390: Warning для value-based классов:

Битуация: ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅ классы-ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² (integer, double ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅), Π° Π·Π°Ρ‚Π΅ΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ ΠΈΡ… конструкторы. Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚? Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² JAVA 16 это ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π½ΠΎΠ²Ρ‹ΠΌ прСдупрСТдСниям, ΠΎ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ синхронизации экзСмпляров классов Π½Π° основС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Java.

JEP 389: Foreign Linker API:

ΠŸΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ внСшний API ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчивал Π±Ρ‹ статичСский, доступ Ρ‡Π΅Ρ€Π΅Π· Java ΠΊ ΠΊΠΎΠ΄Ρƒ, написанному Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌ языкС.

Π­Ρ‚ΠΎΡ‚ API Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° стадии ΠΈΠ½ΠΊΡƒΠ±Π°Ρ‚ΠΎΡ€Π° Π² JDK 16. ВмСстС с ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹ΠΌ API доступа ΠΊ Foreign MemoryΡ‡Π΅Ρ€Π΅Π· API внСшнСго ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠ° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ упрощаСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° связывания с собствСнными Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ выбросом собствСнных ошибок.

ЦСль:

ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ простоту Π² использовании java. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ JNI Π½ΠΎΠ²ΠΎΠΉ модСлью Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° языкС чистой Java.

ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ языка C : ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ объСм Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²Ρ‹ΡΠΎΠΊΠΎΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ C Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… x64 ΠΈ AArch64.

API Foreign Linker ΠΈ Π΅Π³ΠΎ рСализация Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ достаточно ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ для размСщСния Π² дальнСйшСм Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠΉ разрядности (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 32-разрядных x86) ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… «Π²Π½Π΅ΡˆΠ½ΠΈΡ…» Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, написанных Π½Π° языках, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΡ‚ C (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, C++, Fortran).

ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ: International Linker API Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΡΡ€Π°Π²Π½ΠΈΠΌΡƒΡŽ ΠΈΠ»ΠΈ Π»ΡƒΡ‡ΡˆΡƒΡŽ, Ρ‡Π΅ΠΌ JNI.

JEP 347: Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ языковых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ C++ 14

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ языка C++ 14 Π² исходном ΠΊΠΎΠ΄Π΅ JDK. НС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ, Π½ΠΎ ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ‚ΠΊΠΈΠ΅ инструкции ΠΏΠΎ использованию этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² ΠΊΠΎΠ΄Π΅ HotSpot.

Для Ρ‡Π΅Π³ΠΎ:

Π”ΡƒΠΌΠ°ΡŽ, Ρ‚ΡƒΡ‚ ΠΈ Ρ‚Π°ΠΊ всС ясно. ВозмоТности C++14 ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ для ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡.

JEP 357: ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡ ΠΈΠ· Mercurial Π² Git:

Для Ρ‡Π΅Π³ΠΎ:

ΠžΠΆΠΈΠ΄Π°ΡŽΡ‚ΡΡ прСимущСства Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ ΠΈ доступных рСсурсах Ρ‡Π΅Ρ€Π΅Π· хостинг систСмы управлСния вСрсиями.

JEP 369: ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡ Π½Π° GitHub:

ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ΡΡ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Host Git для сообщСства OpenJDK Π½Π° GitHub.

Для Ρ‡Π΅Π³ΠΎ:

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ всС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ OpenJDK с ΠΎΠ΄Π½ΠΈΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° GitHub вмСстС с JEP 357 (Migrate from Mercurial to Git) ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ всС вСрсии JAVA 11 ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΠ΅ обновлСния JDK, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡ… Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ.

JEP 376: ZGC: ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° стСка ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²:

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ стСка ZGC ΠΎΡ‚ safepoints ΠΊ «ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ» Ρ„Π°Π·Π΅.

Z Garbage Collector (ZGC) ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ всС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒΡŽ Π² HotSpot ΠΏΡ€ΠΈ сборкС мусора ΡƒΡˆΠ΅Π΄ΡˆΠΈΠΌΠΈ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ΅. На сСгодняшний дСнь ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ GC, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ JAVA ΠΊΡƒΡ‡ΠΈ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ мСтапространства, Π±Ρ‹Π»ΠΈ пСрСнСсСны ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с safepoints Π² «ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅» Ρ„Π°Π·Ρ‹.

Π­Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΎ Π² сСбя: ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ссылок, Π° Ρ‚Π°ΠΊΠΆΠ΅ класс Ρ€Π°Π·Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΊΠΎΡ€Π½Π΅ΠΉ. ЕдинствСнными опСрациями, всС Π΅Ρ‰Π΅ выполняСмыми Π² safepoints GC, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с подмноТСствами ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ «ΠΊΠΎΡ€Π½Ρ» ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ окончания с привязкой ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Для Ρ‡Π΅Π³ΠΎ:

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ стСка ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΈΠ· safepoints ZGC.

Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ стСка ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΈ упорядочСнной.

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ всю лишнюю ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈΠ· safepoints ZGC.

JEP 386: Alpine Linux Port:

ΠŸΠΎΡ€Ρ‚ JDK ΠΊ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°ΠΌ x64 ΠΈ AArch64 Π² Alpine Linux ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… дистрибутивах Linux, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ musl.

Из-Π·Π° нСбольшого Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΎΠ±Ρ€Π°Π·Π° Alpine Linux ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… развСртываниях, Π² микросСрвисных систСмах ΠΈ срСдах Π½Π° основС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ². Π Π°Π·ΠΌΠ΅Ρ€ ΠΎΠ±Ρ€Π°Π·Π° Docker для Linux мСньшС 6 ΠœΠ‘. Π’ Ρ‚Π°ΠΊΠΈΡ… срСдах использованиС Java Π² нСстандартных срСдах ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Tomcat, Jetty, Spring ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ популярным Ρ„Ρ€Π΅ΠΌΠ²ΠΎΡ€ΠΊΠ°ΠΌ эффСктивнСС Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² этих срСдах.

JEP 387: Elastic Metaspace

Π Π°Π½Π΅Π΅ ΠΏΡ€ΠΈ использовании Metaspace Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с высоким ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ задСйствованной памяти Π²Π½Π΅ JAVA ΠΊΡƒΡ‡ΠΈ. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ схСму распрСдСлСния Π½Π° основС Buddy для Π·Π°ΠΌΠ΅Π½Ρ‹ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ распрСдСлитСля памяти ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ раздСлСния памяти Π½Π° Ρ€Π°Π·Π΄Π΅Π»Ρ‹ для удовлСтворСния запросов памяти.

Π§Ρ‚ΠΎ измСнилось:

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅ΠΌΡƒΡŽ Buddy Allocation, ΠΏΠ°ΠΌΡΡ‚ΡŒ Metaspace Π±ΡƒΠ΄Π΅Ρ‚ скомпонована Π² кластСры ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ нСзависимо Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°.

JEP 388: Windows/AArch64 ΠŸΠΎΡ€Ρ‚

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ JDK ΠΊ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Windows/ AArch64.

Windows/ AArch64 стала, ΠΊΠ°ΠΊ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°. ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ с появлСниСм Π½ΠΎΠ²ΠΎΠ³ΠΎ сСрвСрного оборудования Π½Π° основС AArch64 (ARM64). Основной Ρ†Π΅Π»ΡŒΡŽ этого JEP являСтся Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ€Ρ‚Π° Π² основноС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ JDK, хотя само ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ остаСтся Π² основном ΠΏΠΎΠ»Π½Ρ‹ΠΌ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Руководство ΠΏΠΎ возмоТностям Java вСрсий 8-16

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ это руководство, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π½Π°ΠΉΡ‚ΠΈ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ Java, ΠΏΠΎΠ½ΡΡ‚ΡŒ различия ΠΌΠ΅ΠΆΠ΄Ρƒ дистрибутивами Java (AdoptOpenJdk, OpenJDK, OracleJDK ΠΈ Ρ‚. Π΄.), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±Π·ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ языка Java, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ вСрсии 8-16.

Π’Π°ΡˆΠ΅ΠΌΡƒ вниманию прСдлагаСтся обновлСнная вСрсия руководства ΠΎΡ‚ 05 апрСля 2021 Π³.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ информация

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‰ΠΈΠ΅ практичСскиС вопросы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Ρƒ людСй, ΠΏΡ‹Ρ‚Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Java для своСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

TL; DR МнС Π½ΡƒΠΆΠ½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ссылка для скачивания, ΠΈ я знаю ΠΎΠ±ΠΎ всСм ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌ. ΠšΡƒΠ΄Π° ΠΌΠ½Π΅ слСдуСт ΠΈΠ΄Ρ‚ΠΈ?

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° сайт AdoptOpenJDK, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ Java, Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ ΠΈ установитС Π΅Π΅. Π—Π°Ρ‚Π΅ΠΌ Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ ΠΊ этому руководству, Ρ‡Ρ‚ΠΎΠ±Ρ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΅Ρ‰Π΅ ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ вСрсиях Java.

TL;DR (Π°Π½Π³Π». too long; didn’t read β€” слишком Π΄Π»ΠΈΠ½Π½ΠΎ, Π½Π΅ Ρ‡ΠΈΡ‚Π°Π»)

Какая послСдняя вСрсия Java?

По ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π½Π° ΠΌΠ°Ρ€Ρ‚ 2021 Π³ΠΎΠ΄Π° Java 16 являСтся послСднСй Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΉ вСрсиСй Java.

ΠšΠ°ΠΊΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Java ΠΌΠ½Π΅ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ?

какая послСдняя вСрсия Π΄ΠΆΠ°Π²Π° 2021. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ какая послСдняя вСрсия Π΄ΠΆΠ°Π²Π° 2021. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ какая послСдняя вСрсия Π΄ΠΆΠ°Π²Π° 2021. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ какая послСдняя вСрсия Π΄ΠΆΠ°Π²Π° 2021. Π€ΠΎΡ‚ΠΎ какая послСдняя вСрсия Π΄ΠΆΠ°Π²Π° 2021

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΎΠ²Ρ‹Ρ… вСрсий, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ сцСнарии использования:

УнаслСдованныС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Π² компаниях часто Π·Π°ΡΡ‚Ρ€Π΅Π²Π°ΡŽΡ‚ Π½Π° Java 8 (см. Ρ€Π°Π·Π΄Π΅Π» Β«ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ всС Π΅Ρ‰Π΅ Π·Π°ΡΡ‚Ρ€Π΅Π²Π°ΡŽΡ‚ Π½Π° Java 8?Β» Π½ΠΈΠΆΠ΅). Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Java 8.

Если Π²Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ самыС послСдниС IDE, Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ ΠΈ инструмСнты сборки ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±Π΅Π· ΠΊΠΎΠ»Π΅Π±Π°Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Java 11 (LTS) ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ Java 16.

Π•ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Android, Π³Π΄Π΅ вСрсия Java Π² основном застряла Π½Π° Java 7 с с доступом ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ Π½Π°Π±ΠΎΡ€Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Java 8. Но Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° использованиС языка программирования Kotlin.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ всС Π΅Ρ‰Π΅ застряли Π½Π° Java 8?

Π•ΡΡ‚ΡŒ нСсколько ΠΏΡ€ΠΈΡ‡ΠΈΠ½, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ всС Π΅Ρ‰Π΅ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Java 8. Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…:

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ сборки (Maven, Gradle ΠΈ Ρ‚. Π΄.) ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ содСрТали ошибки с вСрсиями Java > 8 ΠΈ Π½ΡƒΠΆΠ΄Π°Π»ΠΈΡΡŒ Π² обновлСниях. Π”Π°ΠΆΠ΅ сСгодня, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с Java9+, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ инструмСнты сборки выводят прСдупрСТдСния Β«reflective accessΒ» ΠΏΡ€ΠΈ сборкС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Java, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ просто «каТутся Π½Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌΠΈΒ», Π΄Π°ΠΆΠ΅ Ссли сборки Π² порядкС.

НСкоторыС ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ использования Ρ‚ΠΎΠ»ΡŒΠΊΠΎ LTS-вСрсий ΠΈ ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π½Π° поставщиков своих ОБ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСдоставят ΠΈΠΌ эти сборки, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Подводя ΠΈΡ‚ΠΎΠ³: Ρƒ вас Π΅ΡΡ‚ΡŒ сочСтаниС практичСских вопросов (ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π²Π°ΡˆΠΈΡ… инструмСнтов, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ²) ΠΈ политичСских ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ вСрсии Java, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 8, Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ 1.8?

Π­Ρ‚ΠΎ просто ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Java 8. Π‘ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠΌ ΠΊ основанным Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выпускам с Java 9 схСма имСнования Ρ‚Π°ΠΊΠΆΠ΅ измСнилась, ΠΈ вСрсии Java большС Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ прСфикса 1.x. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΠΎΠΌΠ΅Ρ€ вСрсии выглядит Ρ‚Π°ΠΊ:

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ вСрсиями Java?

Π”ΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ я ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ?

ΠŸΡ€ΠΈΠ΄Ρ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… языков программирования с большими ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π²Π°ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ выпусками, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Python 2–3, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ Π»ΠΈ Ρ‚ΠΎ ΠΆΠ΅ самоС ΠΊ Java.

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ это Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, скаТСм, ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° полагаСтся Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Java 14, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ просто нСдоступны Π² JVM Java 8.

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ нСсколько Π²Π΅Ρ‰Π΅ΠΉ:

Π’Ρ‹ Π½Π΅ просто Β«ΠΈΠ·ΡƒΡ‡Π°Π΅Ρ‚Π΅Β» ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Java, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 12.

Π‘ΠΊΠΎΡ€Π΅Π΅, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ…ΠΎΡ€ΠΎΡˆΡƒΡŽ основу для всСх языковых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ Java 8. Π­Ρ‚ΠΎ послуТит Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ Π±Π°Π·ΠΎΠΉ.

И Π·Π°Ρ‚Π΅ΠΌ, ΠΈΠ· этого руководства Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ появились Π² Java 9-16, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… всСгда, ΠΊΠΎΠ³Π΄Π° это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

ΠšΠ°ΠΊΠΎΠ²Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ этих Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй Π½ΠΎΠ²Ρ‹Ρ… вСрсий Java?

ВзглянитС Π½Π° Ρ€Π°Π·Π΄Π΅Π» «ВозмоТности Java 8-16Β» Π½ΠΈΠΆΠ΅.

Но, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ: старыС, Π±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹ выпуска (3-5 Π»Π΅Ρ‚, Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ Java 8) ΠΎΠ·Π½Π°Ρ‡Π°Π»ΠΈ мноТСство Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ выпускС.

ШСстимСсячный Ρ†ΠΈΠΊΠ» выпуска ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ мСньшСС количСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π° выпуск, поэтому Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ быстро ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ языковыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Java 9-16.

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ JRE ΠΈ JDK?

Π”ΠΎ сих ΠΏΠΎΡ€ ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ Java. Но Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«JavaΒ»?

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ провСсти Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ JRE (Java Runtime Environment) ΠΈ JDK (Java Development Kit).

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈ, Π²Ρ‹ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ JRE, Ссли вас интСрСсовали Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Java. JRE Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚, ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ Java (JVM) ΠΈ инструмСнт ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Β«javaΒ».

Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Java Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ JDK. JDK Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя всС, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² JRE, Π° Ρ‚Π°ΠΊΠΆΠ΅ компилятор javac ΠΈ нСсколько Π΄Ρ€ΡƒΠ³ΠΈΡ… инструмСнтов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ javadoc (Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Java) ΠΈ jdb (ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Java).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π³ΠΎΠ²ΠΎΡ€ΡŽ Π² ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ?

Π’ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ Java 8 Π²Π΅Π±-сайт Oracle ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π» JRE ΠΈ JDK Π² качСствС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ, хотя JDK Ρ‚Π°ΠΊΠΆΠ΅ всСгда Π²ΠΊΠ»ΡŽΡ‡Π°Π» JRE Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅. Π’ Java 9 это Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ практичСски исчСзло, ΠΈ Π²Ρ‹ всСгда Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚Π΅ JDK. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² JDK Ρ‚Π°ΠΊΠΆΠ΅ измСнилась, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² Π½Π΅ΠΉ большС Π½Π΅ Π±Ρ‹Π»ΠΎ явной ΠΏΠ°ΠΏΠΊΠΈ JRE.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, хотя Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ дистрибутивы (см. Π Π°Π·Π΄Π΅Π» «Дистрибутивы JavaΒ») ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ JRE, ΠΏΠΎΡ…ΠΎΠΆΠ΅, сущСствуСт тСндСнция ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ JDK. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Java ΠΈ JDK взаимозамСняСмо.

Как ΠΌΠ½Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Java ΠΈΠ»ΠΈ JDK?

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ всС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Java Π½Π° свой ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€, β€” это Ρ€Π°Π·Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» jdk-<5-16>.zip. Π’Π°ΠΌ Π΄Π°ΠΆΠ΅ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ ΠΏΡ€Π°Π²Π° администратора для этого.

Π’Π°Ρˆ распакованный Ρ„Π°ΠΉΠ» Java Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

Магия происходит Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /bin, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² Windows выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ всС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, это Ρ€Π°Π·Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот Ρ„Π°ΠΉΠ» ΠΈ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /bin Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ PATH, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ java ΠΈΠ· любого мСста.

Π’ случаС, Ссли Π²Π°ΠΌ интСрСсно, установщики с графичСским интСрфСйсом, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Oracle ΠΈΠ»ΠΈ AdoptOpenJDK, выполняСт распаковку ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ PATH вмСсто вас.

Дистрибутивы Java

Π•ΡΡ‚ΡŒ мноТСство сайтов, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰ΠΈΡ… Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Java (Ρ‡ΠΈΡ‚Π°ΠΉ: JDK), ΠΈ нСясно, Β«ΠΊΡ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΈ с ΠΊΠ°ΠΊΠΈΠΌΠΈ лицСнзиями». Π­Ρ‚ΠΎΡ‚ Ρ€Π°Π·Π΄Π΅Π» ΠΏΡ€ΠΎΠ»ΡŒΠ΅Ρ‚ Π½Π° это Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ свСт.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ OpenJDK

Π§Ρ‚ΠΎ касаСтся исходного ΠΊΠΎΠ΄Π° Java (Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅: исходный ΠΊΠΎΠ΄ для вашСго JRE / JDK), сущСствуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½, ΠΆΠΈΠ²ΡƒΡ‰ΠΈΠΉ Π½Π° сайтС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° OpenJDK.

Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π΅ΡΡ‚ΡŒ нСсколько поставщиков, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ фактичСски ΡΠΎΠ·Π΄Π°ΡŽΡ‚ эти сборки, ΡΠ΅Ρ€Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ (см. TCK) ΠΈ Π·Π°Ρ‚Π΅ΠΌ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ ΠΈΡ….

И хотя поставщики Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚, скаТСм, ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса String ΠΏΠ΅Ρ€Π΅Π΄ созданиСм Π½ΠΎΠ²ΠΎΠΉ сборки Java, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ брэндинг (Π²ay!) ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, CLI), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ. Но Π² ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌ исходный ΠΊΠΎΠ΄ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ² для всСх дистрибутивов Java.

Π‘Π±ΠΎΡ€ΠΊΠΈ OpenJDK (ΠΎΡ‚ Oracle) ΠΈ OracleJDK

Один ΠΈΠ· поставщиков, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создаСт Java ΠΈΠ· исходного ΠΊΠΎΠ΄Π°, β€” это Oracle. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π΄Π²ΡƒΠΌ Ρ€Π°Π·Π½Ρ‹ΠΌ дистрибутивам Java, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ½Π°Ρ‡Π°Π»Ρƒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‡Π΅Π½ΡŒ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌΠΈ.

Π‘Π±ΠΎΡ€ΠΊΠΈ OpenJDK ΠΎΡ‚ Oracle (!). Π­Ρ‚ΠΈ сборки бСсплатны ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΎΡ€Π³ΠΎΠ²ΠΎΠΉ ΠΌΠ°Ρ€ΠΊΠΈ, Π½ΠΎ Oracle Π½Π΅ выпустит обновлСния для Π±ΠΎΠ»Π΅Π΅ старых вСрсий, скаТСм, Java 15, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ Java 16.

OracleJDK β€” это коммСрчСская сборка ΠΏΠΎΠ΄ Π±Ρ€Π΅Π½Π΄ΠΎΠΌ, выпускаСмая начиная с измСнСния Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ Π² 2019 Π³ΠΎΠ΄Ρƒ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ бСсплатно Π²ΠΎ врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π½ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ Oracle, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π΅Π΅ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ срСдС. ΠŸΡ€ΠΈ этом Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ всС обновлСния дистрибутива ΠΈ Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ½ΠΈΡ‚ΡŒ, Ссли с вашСй JVM Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈ (Π΄ΠΎ Java 8) сущСствовали Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ исходныС различия ΠΌΠ΅ΠΆΠ΄Ρƒ сборками OpenJDK ΠΈ сборками OracleJDK, ΠΏΡ€ΠΈ этом ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ OracleJDK Π±Ρ‹Π» Β«Π»ΡƒΡ‡ΡˆΠ΅Β». Но Π½Π° сСгодняшний дСнь ΠΎΠ±Π΅ вСрсии практичСски ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹, с нСбольшими отличиями.

Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ всС сводится ΠΊ Ρ‚ΠΎΠΌΡƒ, трСбуСтся Π»ΠΈ Π²Π°ΠΌ коммСрчСская ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° (Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°) для ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ вСрсии Java.

AdoptOpenJDK

Π’ 2017 Π³ΠΎΠ΄Ρƒ Π³Ρ€ΡƒΠΏΠΏΠ° участников, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ поставщиков Java User Group (Amazon, Microsoft, Pivotal, Red Hat ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅) создала сообщСство ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ AdoptOpenJDK.

Они ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ бСсплатныС Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Π΅ сборки OpenJDK с Π±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒΡŽ / обновлСниями ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ Π²Π°ΠΌ Π²Ρ‹Π±ΠΎΡ€ ΠΈΠ· Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин Java: HotSpot ΠΈ OpenJ9.

Π― ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π΅Π΅, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Java.

Azul Zulu, Amazon Corretto, SAPMachine

ΠŸΠΎΠ»Π½Ρ‹ΠΉ список сборок OpenJDK Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° сайтС OpenJDK Wikipedia. Π‘Ρ€Π΅Π΄ΠΈ Π½ΠΈΡ… Azul Zulu, Amazon Corretto, Π° Ρ‚Π°ΠΊΠΆΠ΅ SapMachine ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. Π£ΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎ говоря, различия сводятся ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ/ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ обслуТивания.

Но Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π° сайтах Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡŒΡŽΡ‚ΠΎΡ€ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ прСимущСствах ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ дистрибутива.

ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΎΠ±Π·ΠΎΡ€ дистрибутива OpenJDK

Π Π°Ρ„Π°ΡΠ»ΡŒ Π’ΠΈΠ½Ρ‚Π΅Ρ€Ρ…Π°Π»ΡŒΡ‚Π΅Ρ€ (Rafael Winterhalter) собрал большой список всСх доступных сборок OpenJDK, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈΡ… описания: ОБ, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ, ΠΎΠΊΠ½Π° лицСнзирования, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈ обслуТивания.

РСкомСндация

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠΌ с Π΅Ρ‰Π΅ Ρ€Π°Π·, Ρ‡Ρ‚ΠΎ с 2020 Π³ΠΎΠ΄Π°, Ссли Ρƒ вас Π½Π΅Ρ‚ особых Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ, Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» jdk.zip (.tar.gz/.msi/.pkg) ΠΏΠΎ адрСсу https://adoptopenjdk.net ΠΈΠ»ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚, прСдоставлСнный вашим поставщиком ОБ.

ВозмоТности Java 8-16

Как ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Π² самом Π½Π°Ρ‡Π°Π»Π΅ этого руководства: Π² сущности всС (Ссли Π²Ρ‹ Π½Π΅ Π±ΡƒΠ΄ΡŒΡ‚Π΅ слишком Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹) Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ языка Java 8 Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² Java 14. Π’ΠΎ ΠΆΠ΅ самоС касаСтся всСх Π΄Ρ€ΡƒΠ³ΠΈΡ… вСрсий Java ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ.

Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π·Π½Π°Π½ΠΈΠ΅ всСх языковых возмоТностСй Java 8 создаСт Ρ…ΠΎΡ€ΠΎΡˆΡƒΡŽ Π±Π°Π·Ρƒ Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ Java, Π° всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ вСрсии (Java 9-16) Π² Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ стСпСни Π΄Π°ΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ²Π΅Ρ€Ρ… этого Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ уровня.

Π’ΠΎΡ‚ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ вСрсии ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ:

Java 8 Π±Ρ‹Π»Π° массовым выпуском, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ список всСх Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π° Π²Π΅Π±-сайтС Oracle. Π—Π΄Π΅ΡΡŒ я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ Π΄Π²Π° основных Π½Π°Π±ΠΎΡ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ языка: лямбды ΠΈ Ρ‚. Π΄.

Π”ΠΎ Java 8 всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΠΎΠ²ΠΎΠ³ΠΎ Runnable, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ класс, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊ:

Π‘ лямбдами Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄ выглядит Ρ‚Π°ΠΊ:

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ссылки Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для интСрфСйсов ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языковыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΈ

Π’ Java 8 Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ стилС для ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΆΠ΅ извСстныС ΠΊΠ°ΠΊ Stream API. Π–ΠΈΠ²ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π”ΠΎ Java 8, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹ for, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с этим списком.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ API Streams Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ большС ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Π½Π° Java 8

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… этого руководства я ΠΌΠΎΠ³Ρƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π°Ρ‚ΡŒ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½Π΅Π΄Π°Π²Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Stream, Lambda ΠΈΠ»ΠΈ Optional ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² Java 8.

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ ΠΎΠ±Π·ΠΎΡ€, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ упраТнСния, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с ΠΌΠΎΠΈΠΌ курсом ΠΏΠΎ основным функциям Java 8.

Java 9 Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Π»Π° довольно большой вСрсиСй, с нСсколькими дополнСниями:

ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ

ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ нСсколько Π½ΠΎΠ²Ρ‹Ρ… Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для простого создания списков, Π½Π°Π±ΠΎΡ€ΠΎΠ² ΠΈ ΠΊΠ°Ρ€Ρ‚.

Streams

ΠŸΠΎΡ‚ΠΎΠΊΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ нСсколько Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ Π² Π²ΠΈΠ΄Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² takeWhile, dropWhile ΠΈ iterate.

Optionals

Optionals ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ ifPresentOrElse, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π»ΠΎ.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ private ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹:

Π”Ρ€ΡƒΠ³ΠΈΠ΅ возмоТности языка

И ΠΏΠ°Ρ€Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ try-with-resources ΠΈΠ»ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ diamond ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

JShell

НаконСц, Π² Java появилась ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ простыС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

HTTPClient

Π’ Java 9 появилась пСрвая ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ вСрсия Π½ΠΎΠ²ΠΎΠ³ΠΎ HttpClient. Π”ΠΎ этого Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ встроСнная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Http Π² Java Π±Ρ‹Π»Π° довольно Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ, ΠΈ Π²Π°ΠΌ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΏΡ€ΠΈΠ±Π΅Π³Π°Ρ‚ΡŒ ΠΊ использованию сторонних Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Apache HttpClient ΠΈΠ»ΠΈ OkHttp (кстати, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ!).

Project Jigsaw: ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Java ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ Jar с нСсколькими выпусками

Π’ Java 9 появилась систСма ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Jigsaw, которая Ρ‡Π΅ΠΌ-Ρ‚ΠΎ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ ΡΡ‚Π°Ρ€ΡƒΡŽ Π΄ΠΎΠ±Ρ€ΡƒΡŽ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ OSGI. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС Jigsaw Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Π·Π°Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ руководства β€” посмотритС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ ссылки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ большС ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Java 9

ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, это всСго лишь ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Java 9, ΠΈ Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ объяснСния ΠΈ упраТнСния, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с курсом основных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Java 9.

Π’Ρ‹Π²ΠΎΠ΄ Ρ‚ΠΈΠΏΠ° локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ: ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово var

ЧувствуСтС сСбя ΠΊΠ°ΠΊ Π² Javascript-Π΅, Π½Π΅ Ρ‚Π°ΠΊ Π»ΠΈ? Однако Java всС Π΅Ρ‰Π΅ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ var примСняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² (спасибо, dpash, Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ снова ΡƒΠΊΠ°Π·Π°Π»ΠΈ Π½Π° это).

Java 11 Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Π»Π° нСсколько мСньшСй вСрсиСй с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ ΠΈ Ρ„Π°ΠΉΠ»Ρ‹

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΏΠ°Ρ€Ρƒ Π½ΠΎΠ²Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² (здСсь пСрСчислСны Π½Π΅ всС):

Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ исходныС Ρ„Π°ΠΉΠ»Ρ‹

Начиная с Java 10, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ исходныС Ρ„Π°ΠΉΠ»Ρ‹ Java Π±Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΡ… компиляции. Π¨Π°Π³ ΠΊ написанию сцСнариСв.

Π’Ρ‹Π²ΠΎΠ΄ Ρ‚ΠΈΠΏΠ° локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (var) для лямбда-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

Π’ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ сказано всС:

HttpClient

HttpClient ΠΈΠ· Java 9 Π² Π΅Π³ΠΎ послСднСй, Π½Π΅ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ вСрсии.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ вкусности

Flight Recorder (РСгистратор ΠΏΠΎΠ»Π΅Ρ‚ΠΎΠ²), сборщик мусора No-Op, Nashorn-Javascript-Engine объявлСн deprecated (ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ) ΠΈ Ρ‚.Π΄.

Π’ Java 12 появилось нСсколько Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ исправлСний, Π½ΠΎ здСсь стоит ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Unicode 11 ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ просмотр Π½ΠΎΠ²ΠΎΠ³ΠΎ выраТСния switch, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎΠ»Π½Ρ‹ΠΉ список возмоТностСй здСсь, Π½ΠΎ, ΠΏΠΎ сути, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Unicode 12.1, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π²Π΅ Π½ΠΎΠ²Ρ‹Π΅ ΠΈΠ»ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€Π΅Π²ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ):

Switch Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (Preview β€” ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ вСрсия)

Switch выраТСния Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. И Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ лямбда-ΡΡ‚ΠΈΠ»ΡŒ синтаксиса для своих Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ошибками:

Π‘Ρ‚Π°Ρ€Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ switch выглядСли Ρ‚Π°ΠΊ:

Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π² Java 13 ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ switch ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

ΠœΠ½ΠΎΠ³ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹Π΅ строки (ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ вСрсия)

НаконСц-Ρ‚ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π½Π° Java:

Java 14 ΠΈ Π΄Π°Π»Π΅Π΅

Switch выраТСния (стандартноС)

Switch выраТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΏΡ€Π΅Π²ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π² вСрсиях 12 ΠΈ 13, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ стандартизированы.

Π’ настоящСС врСмя ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ классы Records (записСй), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ написания большого количСства шаблонов с использованиСм Java.

ВзглянитС Π½Π° этот класс Π΄ΠΎ Java 14, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π°Π½Π½Ρ‹Π΅, (ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ) ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ получСния / установки, equals / hashcode, toString.

Π‘ записями Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, это ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ вСрсия, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° Π² Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… выпусках.

ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ NullPointerExceptions

НаконСц, ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ NullPointerExceptions ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚, какая ΠΈΠΌΠ΅Π½Π½ΠΎ пСрСмСнная ΠΈΠΌΠ΅Π»Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NULL.

БопоставлСниС с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ для InstanceOf (ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ вСрсия)

РаньшС Π²Π°ΠΌ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ cast Π²Π°ΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ instanceof ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, эффСктивно сбросив гипс.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ для ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ (ΠΈΠ½ΠΊΡƒΠ±Π°Ρ‚ΠΎΡ€)

БущСствуСт инструмСнт jpackage (ΠΈΠ½ΠΊΡƒΠ±Π°Ρ‚ΠΎΡ€), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ вашС Java-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ зависимости.

Π‘Π±ΠΎΡ€Ρ‰ΠΈΠΊΠΈ мусора

Π‘Π±ΠΎΡ€Ρ‰ΠΈΠΊ мусора Concurrent Mark Sweep (CMS) Π±Ρ‹Π» ΡƒΠ΄Π°Π»Π΅Π½, ΠΈ Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ сборщик мусора Z.

Java 15

ВСкстовыС Π±Π»ΠΎΠΊΠΈ / многострочныС строки

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Π² качСствС ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Java 13 (см. Π’Ρ‹ΡˆΠ΅), многострочныС тСксты Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅.

Если Π²Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅Ρ‚ΠΊΠΎΠ΅ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠΎΠΌΡƒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ подклассы Π²Π°ΡˆΠΈΡ… классов, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΅ΡΡ‚ΡŒ такая sealed функция.

Записи ΠΈ сопоставлСниС с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Records ΠΈ Pattern Matching ΠΈΠ· Java 14 (см. Π’Ρ‹ΡˆΠ΅) всС Π΅Ρ‰Π΅ находятся Π² ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ вСрсии ΠΈ Π΅Ρ‰Π΅ Π½Π΅ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹.

Π”Π²ΠΈΠΆΠΎΠΊ JavaScript Rhinoceros

ПослС устарСвания Π² Java 11 ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Nashorn Javascript Engine Π±Ρ‹Π» ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ΄Π°Π»Π΅Π½ Π² JDK 15.

ZGC: Π³ΠΎΡ‚ΠΎΠ²ΠΎ ΠΊ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½

Z Garbage Collector Π½Π΅ ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²Π°Π½ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ большС. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ Π³ΠΎΡ‚ΠΎΠ² ΠΊ использованию Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½.

Java 16

ΠšΠ°Π½Π°Π»Ρ‹ сокСтов Π΄ΠΎΠΌΠ΅Π½Π° Unix

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΊ сокСтам Π΄ΠΎΠΌΠ΅Π½Π° Unix (Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ macOS ΠΈ Windows (10+).

ΠŸΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌΠ°Ρ Π·Π°ΠΌΠ΅Π½Π° JNI (Java Native Interface), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ привязку ΠΊ собствСнным Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ (ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎ C).

Записи ΠΈ сопоставлСниС с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ

Π—Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Π½Ρ‹Π΅ классы

Π—Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Π½Ρ‹Π΅ классы (начиная с Java 15, см. Π’Ρ‹ΡˆΠ΅) всС Π΅Ρ‰Π΅ находятся Π² ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ вСрсии.

Java 17 ΠΈ Π½ΠΎΠ²Π΅Π΅

Π‘ΡƒΠ΄Π΅Ρ‚ рассмотрСно здСсь, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Ρ‹. Π—Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π² блиТайшСС врСмя.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

К настоящСму Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρƒ вас Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ довольно Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ прСдставлСниС ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Π΅Ρ‰Π°Ρ…:

Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Java, ΠΊΠ°ΠΊΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈ Π³Π΄Π΅ Π΅Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ (подсказка: AdoptOpenJDK).

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ дистрибутив Java, ΠΊΠ°ΠΊΠΈΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π² Ρ‡Π΅ΠΌ различия.

ΠšΠ°ΠΊΠΎΠ²Ρ‹ различия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌΠΈ вСрсиями Java.

ΠžΡ‚Π·Ρ‹Π²Ρ‹, исправлСния ΠΈ ваш Π²ΠΊΠ»Π°Π΄ всСгда ΠΏΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ! ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π²Π½ΠΈΠ·Ρƒ.

Бпасибо Π·Π° ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅!

Благодарности

Π‘Ρ‚ΠΈΠ²Π΅Π½ ΠšΠΎΠ»Π΅Π±ΠΎΡ€Π½, написал Ρ„Π°Π½Ρ‚Π°ΡΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… доступных дистрибутивах Java.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *