какая послСдняя вСрсия jdk

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

Π—Π΄Π΅ΡΡŒ Π΅ΡΡ‚ΡŒ всС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… вСрсиях ΠΈ функциях Java.

какая послСдняя вСрсия jdk. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ какая послСдняя вСрсия jdk. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ какая послСдняя вСрсия jdk. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ какая послСдняя вСрсия jdk. Π€ΠΎΡ‚ΠΎ какая послСдняя вСрсия jdk
Java 8, Java 11, Java 13, Java 14 β€” какая Ρ€Π°Π·Π½ΠΈΡ†Π°?

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°
17 фСвраля Π±Ρ‹Π» ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Руководство ΠΏΠΎ вСрсиям ΠΈ возмоТностям Java
Π’ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊ Π½Π΅ΠΌΡƒ Julegg написал
Π’Π°ΠΌ Ρƒ ΠœΠ°Ρ€ΠΊΠΎ ΡƒΠΆΠ΅ описаниС java-14 добавилось. Π‘ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ Ρ‚ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½?

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

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

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

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

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

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

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

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

ΠšΠ°ΠΊΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Java я Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ?

НовыС вСрсии Java Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ выходят ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 6 мСсяцСв. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Java 15 Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π° Π½Π° ΡΠ΅Π½Ρ‚ΡΠ±Ρ€ΡŒ 2020 Π³ΠΎΠ΄Π°, Java 16 Π½Π° ΠΌΠ°Ρ€Ρ‚ 2021 Π³ΠΎΠ΄Π° ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ Ρ†ΠΈΠΊΠ»Ρ‹ выпуска Java Π±Ρ‹Π»ΠΈ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π»ΠΈΠ½Π½Π΅Π΅, Π΄ΠΎ 3-5 Π»Π΅Ρ‚. Π­Ρ‚ΠΎΡ‚ Π³Ρ€Π°Ρ„ΠΈΠΊ дСмонстрируСт это:

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

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

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

БущСствуСт мноТСство Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΈΡ‡ΠΈΠ½, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ всС Π΅Ρ‰Π΅ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Java 8. Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…:

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ вСрсии Java Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ 1.X?

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

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

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

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

Java особСнная Π² этом ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½Π° Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ совмСстима. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° Java 5 ΠΈΠ»ΠΈ 8 Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной Java 8-14 β€” с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Π°ΠΌ сСйчас Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ.

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

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

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

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

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

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

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ 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-14>.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, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ½Π°Ρ‡Π°Π»Ρƒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‡Π΅Π½ΡŒ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌΠΈ.

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈ (Π΄ΠΎ 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, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈΡ… описания: ОБ, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ, ΠΎΠΊΠ½Π° лицСнзирования, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈ обслуТивания.

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

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

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

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

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

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

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 (кстати, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ).

Π’ Java 9 Ρƒ Java появился собствСнный соврСмСнный ΠΊΠ»ΠΈΠ΅Π½Ρ‚ β€” хотя ΠΎΠ½ находится Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΏΡ€Π΅Π²ΡŒΡŽ, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Π² Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ… вСрсиях Java.

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

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

Π’ Java 10 Π±Ρ‹Π»ΠΎ нСсколько ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ сборка мусора ΠΈ Ρ‚.Π΄. Но СдинствСнноС Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹, ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, вСроятно, Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅, β€” это Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова var, Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ Ρ‚ΠΈΠΏΠ° локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

Π’Ρ‹Π²ΠΎΠ΄ Ρ‚ΠΈΠΏΠ° локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ: ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово 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 (ΠΏΡ€Π΅Π²ΡŒΡŽ)

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

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

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

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

НаконСц, NullPointerExceptions Ρ‚ΠΎΡ‡Π½ΠΎ описываСт, какая пСрСмСнная Π±Ρ‹Π»Π° null.

БопоставлСниС с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ для InstanceOf (ΠΏΡ€Π΅Π²ΡŒΡŽ)

Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Ρ€Π°Π½Π΅Π΅ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ (cast) Π²Π°ΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ instanceof, ΠΊΠ°ΠΊ здСсь:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, Π±ΠΎΠ»Π΅Π΅ эффСктивно, ΡƒΠ΄Π°Π»ΠΈΠ² cast.

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

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

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

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

Java 15 ΠΈ Π΄Π°Π»Π΅Π΅

Π‘ΡƒΠ΄Π΅Ρ‚ рассмотрСно здСсь, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡ… выпустят. Π—Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π² блиТайшСС врСмя!

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

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

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

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

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

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

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

Руководство ΠΏΠΎ возмоТностям 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 ΠΌΠ½Π΅ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ?

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

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

УнаслСдованныС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Π² компаниях часто Π·Π°ΡΡ‚Ρ€Π΅Π²Π°ΡŽΡ‚ Π½Π° 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.

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

Leave a Reply

Your email address will not be published. Required fields are marked *