Π‘Π»Π΅Π΄ ΡΠ΅ΡΡΠΌΠ΅ΡΠ΅ΡΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅, ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Oracle ΠΏΡΡΠ½Π° Java SE 19 (Java Platform, Standard Edition 19), ΠΊΠ°ΡΠΎ Π·Π° ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ ΠΏΡΠΎΠ΅ΠΊΡΡΡ OpenJDK. Π‘ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½ΡΠΊΠΎΠΈ ΠΎΡΡΠ°ΡΠ΅Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, Π² Java SE 19 Π΅ Π·Π°ΠΏΠ°Π·Π΅Π½Π° ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Java β ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΏΠΎ-ΡΠ°Π½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Java ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΡΠ΅ ΡΠ°Π±ΠΎΡΡΡ Π±Π΅Π· ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ΄ Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ. ΠΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ ΡΠ±ΠΎΡΠΊΠΈ Π½Π° Java SE 19 (JDK, JRE ΠΈ Server JRE) ΡΠ° Π½Π°Π»ΠΈΡΠ½ΠΈ Π·Π° Linux (x86_64, AArch64), Windows (x86_64) ΠΈ macOS (x86_64, AArch64). Π Π°Π·ΡΠ°Π±ΠΎΡΠ΅Π½Π°ΡΠ° Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° OpenJDK ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Java 19 Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΎΡΠ²ΠΎΡΠ΅Π½Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ GPLv2 Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΡ GNU ClassPath, ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°ΡΠ° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Ρ ΡΡΡΠ³ΠΎΠ²ΡΠΊΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ.
Java SE 19 Π΅ ΠΊΠ»Π°ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π° ΠΊΠ°ΡΠΎ Π²Π΅ΡΡΠΈΡ Ρ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°, Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π·Π° ΠΊΠΎΡΡΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΏΡΡΠΊΠ°Π½ΠΈ Π΄ΠΎ ΡΠ»Π΅Π΄Π²Π°ΡΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅. ΠΠ° Π²Π΅ΡΡΠΈΡ Ρ Π΄ΡΠ»Π³ΠΎΡΡΠΎΡΠ½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° (LTS) ΡΠ»Π΅Π΄Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Java SE 17, Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π·Π° ΠΊΠΎΡΡΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΏΡΡΠΊΠ°Π½ΠΈ Π΄ΠΎ 2029 Π³ΠΎΠ΄ΠΈΠ½Π°. ΠΠ°ΠΏΠΎΠΌΠ½ΡΠΌΠ΅, ΡΠ΅ ΠΎΡ Π²Π΅ΡΡΠΈΡ Java 10 ΠΏΡΠΎΠ΅ΠΊΡΡΡ ΠΏΡΠ΅ΠΌΠΈΠ½Π° Π½Π° Π½ΠΎΠ² ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, ΠΏΡΠ΅Π΄Π²ΠΈΠΆΠ΄Π°Ρ ΠΏΠΎ-ΠΊΡΠ°ΡΡΠΊ ΡΠΈΠΊΡΠ» Π·Π° ΠΈΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ Π²Π΅ΡΡΠΈΠΈ. ΠΠΎΠ²Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ ΡΠ΅Π³Π° ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° Π² Π΅Π΄Π½Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΎΡΠ½ΠΎΠ²Π½Π° ΠΊΠ»ΠΎΠ½ΠΊΠ°, Π² ΠΊΠΎΡΡΠΎ ΡΠ΅ Π²ΠΊΠ»ΡΡΠ²Π°Ρ Π³ΠΎΡΠΎΠ²ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΈ ΠΎΡ ΠΊΠΎΡΡΠΎ Π½Π° Π²ΡΠ΅ΠΊΠΈ ΡΠ΅ΡΡ ΠΌΠ΅ΡΠ΅ΡΠ° ΡΠ΅ ΠΎΡΠΊΠ»ΠΎΠ½ΡΠ²Π°Ρ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ Π·Π° ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ.
ΠΡ Π½ΠΎΠ²ΠΎΡΡΠΈΡΠ΅ Π² Java 19 ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈΠΌ:
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ°Π±Π»ΠΎΠ½ΠΈ Π·Π°ΠΏΠΈΡΠΈ (record pattern), ΡΠ°Π·ΡΠΈΡΡΠ²Π°ΡΠ° ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΠ° ΡΠ΅ Π² Java 16 Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΡΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Ρ ΠΎΠ±ΡΠ°Π·Π΅Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΠΎΡ ΠΊΠ»Π°ΡΠΎΠ²Π΅ ΡΠΈΠΏ record. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: record Point(int x, int y) {} void printSum(Object o) { if (o instanceof Point(int x, int y)) { System.out.println(x+y); } }
- Π ΡΠ±ΠΎΡΠΊΠΈΡΠ΅ Π·Π° Linux Π΅ ΠΎΡΠΈΠ³ΡΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° RISC-V.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° API FFM (Foreign Function & Memory), ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ Π½Π° Java ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ Ρ Π²ΡΠ½ΡΠ΅Π½ ΠΊΠΎΠ΄ ΠΈ Π΄Π°Π½Π½ΠΈ ΡΡΠ΅Π· ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡ Π²ΡΠ½ΡΠ½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΏΠ°ΠΌΠ΅Ρ ΠΈΠ·Π²ΡΠ½ JVM.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΏΠΎΡΠΎΡΠΈ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°ΡΠΈ Π»Π΅ΠΊΠΎΠ²Π΅ΡΠ½ΠΈ ΠΏΠΎΡΠΎΡΠΈ, ΠΊΠΎΠ΅ΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ»Π΅ΡΠ½ΡΠ²Π° Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° Π²ΠΈΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° ΡΠ΅ΡΠ²ΡΡΡΠ° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° API Vector, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π·Π° Π²Π΅ΠΊΡΠΎΡΠ½ΠΈ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π²Π΅ΠΊΡΠΎΡΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ x86_64 ΠΈ AArch64, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠΈ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΡΡ Ρ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π½Π°Π²Π΅Π΄Π½ΡΠΆ (SIMD). Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π½ΠΈΡΠ΅ ΠΎΡ JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° HotSpot Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½Π° Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠΊΠ°Π»Π°ΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Π½ΠΎΠ²ΠΈΡΡ API ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΡΠ²Π΅Π½ ΠΊΠΎΠ½ΡΡΠΎΠ» Π²ΡΡΡ Ρ Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΡΡΠ° Π·Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈ.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΡΡΠ΅ΡΠ° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΡΠ΅Π°Π»ΠΈΠ·ΡΠΈΡ Π½Π° ΡΠ°Π±Π»ΠΎΠ½Π½ΠΎΡΠΎ ΡΡΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π² ΠΈΠ·ΡΠ°Π·ΠΈΡΠ΅ βswitchβ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ° Π² ΠΌΠ΅ΡΠΊΠΈΡΠ΅ βcaseβ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π½Π΅ ΡΠΎΡΠ½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ, Π° Π³ΡΠ²ΠΊΠ°Π²ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΈ, ΠΎΠ±Ρ Π²Π°ΡΠ°ΡΠΈ ΡΠ΅ΡΠΈΡ ΠΎΡ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ, Π·Π° ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄ΠΈ Π΅ ΡΡΡΠ±Π²Π°Π»ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΎΠ±Π΅ΠΌΠΈΡΡΠΈ Π²Π΅ΡΠΈΠ³ΠΈ ΠΎΡ ΠΈΠ·ΡΠ°Π·ΠΈ βifβ¦elseβ. Object o = 123L; String formatted = switch (o) { case Integer i -> String.format(βint %dβ, i); case Long l -> String.format(βlong %dβ, l); case Double d -> String.format(βdouble %fβ, d); case String s -> String.format(βString %sβ, s); default -> o.toString(); };
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π΅Π½ API Π·Π° ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎΡΡ, ΡΠ»Π΅ΡΠ½ΡΠ²Π°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅Π· ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π·Π°Π΄Π°ΡΠΈ, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½ΠΈ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠΎΡΠΎΡΠΈ, ΠΊΠ°ΡΠΎ Π΅Π΄ΠΈΠ½Π΅Π½ Π±Π»ΠΎΠΊ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
