Π‘Π»Π΅Π΄ ΡΠ΅ΡΡ ΠΌΠ΅ΡΠ΅ΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Oracle ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° (Java Platform, Standard Edition 15), ΡΠΈΡΡΠΎ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π΅ ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡ OpenJDK. Π Java SE 15 Π΅ Π·Π°ΠΏΠ°Π·Π΅Π½Π° ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° Java ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ°, Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Java ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΡΠ΅ ΡΠ°Π±ΠΎΡΡΡ Π±Π΅Π· ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Ρ Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ. ΠΠΎΡΠΎΠ²ΠΈΡΠ΅ Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ Java SE 15 (JDK, JRE ΠΈ Server JRE) Π·Π° Linux (x86_64), Windows ΠΈ macOS. ΠΡΠ°Π»ΠΎΠ½Π½Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½Π° Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° OpenJDK Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΎΡΠ²ΠΎΡΠ΅Π½Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ GPLv2 Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π° GNU ClassPath, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Ρ ΡΡΡΠ³ΠΎΠ²ΡΠΊΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ.
Java SE 15 Π΅ ΠΎΡΠ½Π΅ΡΠ΅Π½ ΠΊΡΠΌ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈΡΠ΅ Π½Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅ Ρ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ ΡΡΠΎΠΊ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°, Ρ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΠ΅ ΠΈΠ·Π΄Π°Π²Π°Ρ Π΄ΠΎ ΡΠ»Π΅Π΄Π²Π°ΡΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅. ΠΠ° Π²Π΅ΡΡΠΈΡ Ρ Π΄ΡΠ»ΡΠ³ ΡΡΠΎΠΊ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° (LTS) ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Java SE 11, Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π·Π° ΠΊΠΎΡΡΠΎ ΡΠ΅ ΡΠ΅ ΠΈΠ·Π΄Π°Π²Π°Ρ Π΄ΠΎ 2026 Π³ΠΎΠ΄ΠΈΠ½Π°. ΠΡΠ΅Π΄ΠΈΡΠ½Π°ΡΠ° LTS Π²Π΅ΡΡΠΈΡ Java 8 ΡΠ΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π΄ΠΎ Π΄Π΅ΠΊΠ΅ΠΌΠ²ΡΠΈ 2020 Π³ΠΎΠ΄ΠΈΠ½Π°. Π‘Π»Π΅Π΄Π²Π°ΡΠ°ΡΠ° LTS Π²Π΅ΡΡΠΈΡ Π΅ ΠΏΠ»Π°Π½ΠΈΡΠ°Π½Π° Π·Π° ΡΠ΅ΠΏΡΠ΅ΠΌΠ²ΡΠΈ 2021 Π³ΠΎΠ΄ΠΈΠ½Π°. ΠΠ°ΠΏΠΎΠΌΠ½ΡΠΌΠ΅, ΡΠ΅ ΠΎΡ Π²Π΅ΡΡΠΈΡ Java 10 ΠΏΡΠΎΠ΅ΠΊΡΡΡ ΠΏΡΠ΅ΠΌΠΈΠ½Π° Π½Π° Π½ΠΎΠ² ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π΄Π²ΠΈΠΆΠ΄Π° ΠΏΠΎ-ΠΊΡΠ°ΡΡΠΊ ΡΠΈΠΊΡΠ» Π½Π° Π½ΠΎΠ²ΠΈΡΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΡ. ΠΠΎΠ²Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ ΡΠ΅Π³Π° ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° Π² ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΎΡΠ½ΠΎΠ²Π½Π° Π»ΠΈΠ½ΠΈΡ, Π² ΠΊΠΎΡΡΠΎ ΡΠ΅ Π²ΠΊΠ»ΡΡΠ²Π°Ρ Π³ΠΎΡΠΎΠ²ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΠΈ ΠΎΡ ΠΊΠΎΡΡΠΎ Π½Π° Π²ΡΠ΅ΠΊΠΈ ΡΠ΅ΡΡ ΠΌΠ΅ΡΠ΅ΡΠ° ΡΠ΅ ΠΎΡΠ΄Π΅Π»ΡΡ Π»ΠΈΠ½ΠΈΠΈ Π·Π° ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈΡΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΡ.
ΠΡ :
- ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌΠ° Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΈΡΡΠΎΠ²Π° ΠΏΠΎΠ΄ΠΏΠΈΡΡ EdDSA (Edwards-Curve Digital Signature Algorithm ). ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ EdDSA Π½Π΅ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΈΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ, Π·Π°ΡΠΈΡΠ΅Π½Π° Π΅ ΠΎΡ Π°ΡΠ°ΠΊΠΈ ΠΏΠΎ ΡΡΡΠ°Π½ΠΈΡΠ΅Π½ ΠΊΠ°Π½Π°Π» (ΠΎΡΠΈΠ³ΡΡΠ΅Π½ΠΎ Π΅ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ) ΠΈ ΠΏΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΠΏΡΠ΅Π²ΡΠ·Ρ ΠΎΠΆΠ΄Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠ°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ECDSA, Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° Π΅Π·ΠΈΠΊΠ° Π‘ΠΈ, ΠΏΡΠΈ ΡΡΡΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° Π·Π°ΡΠΈΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, EdDSA ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π΅Π»ΠΈΠΏΡΠΈΡΠ½Π° ΠΊΡΠΈΠ²Π° Ρ 126-Π±ΠΈΡΠΎΠ² ΠΊΠ»ΡΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ, ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° ECDSA Ρ Π΅Π»ΠΈΠΏΡΠΈΡΠ½Π° ΠΊΡΠΈΠ²Π° secp256r1 ΠΈ 128-Π±ΠΈΡΠΎΠ² ΠΊΠ»ΡΡ.
- Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π·Π°ΠΏΠ΅ΡΠ°ΡΠ°Π½ΠΈ (βsealedβ) ΠΊΠ»Π°ΡΠΎΠ²Π΅ ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΎΡ Π΄ΡΡΠ³ΠΈ ΠΊΠ»Π°ΡΠΎΠ²Π΅ ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ Π·Π° Π½Π°ΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅, ΡΠ°Π·ΡΠΈΡΡΠ²Π°Π½Π΅ ΠΈΠ»ΠΈ ΠΏΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ°ΠΏΠ΅ΡΠ°ΡΠ°Π½ΠΈΡΠ΅ ΠΊΠ»Π°ΡΠΎΠ²Π΅ ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΏΠΎ-Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π΅Π½ Π½Π°ΡΠΈΠ½ Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° Π½Π° ΡΡΠΏΠ΅ΡΠΊΠ»Π°ΡΠ°, Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈΡΠ΅ Π·Π° Π΄ΠΎΡΡΡΠΏ, ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈ Π½Π° ΡΠ²Π½ΠΎ ΠΈΠ·Π±ΡΠΎΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΠΎΠ²Π΅ΡΠ΅, ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈ Π·Π° ΡΠ°Π·ΡΠΈΡΡΠ²Π°Π½Π΅.
package com.example.geometry;
public sealed class Shape
permits com.example.polar.Circle,
com.example.quad.Rectangle,
com.example.quad.simple.Square {β¦} - ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠΊΡΠΈΡΠΈ ΠΊΠ»Π°ΡΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡ Π±Π°ΠΉΡΠΊΠΎΠ΄Π° Π½Π° Π΄ΡΡΠ³ΠΈ ΠΊΠ»Π°ΡΠΎΠ²Π΅. ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ΅Π» Π½Π° ΡΠΊΡΠΈΡΠΈΡΠ΅ ΠΊΠ»Π°ΡΠΎΠ²Π΅ Π΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π²ΡΠ² ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°Ρ ΠΊΠ»Π°ΡΠΎΠ²Π΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΈΠ½Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ, ΡΡΠ΅Π· . ΠΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΊΠ»Π°ΡΠΎΠ²Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠΌΠ°Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ ΠΆΠΈΠ·Π½Π΅Π½ ΡΠΈΠΊΡΠ», Π·Π°ΡΠΎΠ²Π° ΡΡΡ Π½Π°ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π΄ΠΎΡΡΡΠΏ ΠΎΡ ΡΡΠ°ΡΠΈΡΠ½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈ ΠΊΠ»Π°ΡΠΎΠ²Π΅ Π½Π΅ Π΅ ΠΎΠΏΡΠ°Π²Π΄Π°Π½Π° ΠΈ ΡΠ°ΠΌΠΎ ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ. Π‘ΠΊΡΠΈΡΠΈ ΠΊΠ»Π°ΡΠΎΠ²Π΅ ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡ API sun.misc.Unsafe::defineAnonymousClass, ΠΊΠΎΠΉΡΠΎ Π΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄Π΅Π½ Π·Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π² Π±ΡΠ΄Π΅ΡΠ΅.
- Π‘ΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΈ ΠΏΡΠΈΠ·Π½Π°ΡΠ° Π·Π° Π³ΠΎΡΠΎΠ²Π° Π·Π° ΡΠΈΡΠΎΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅, ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π°ΡΠ° ΡΡΠ±ΠΈΡΠ°ΡΠΊΠ° Π½Π° Π±ΠΎΠΊΠ»ΡΠΊ ZGC (Z Garbage Collector). ZGC ΡΠ°Π±ΠΎΡΠΈ Π² ΠΏΠ°ΡΠΈΠ²Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ, ΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠ° Π·Π°Π±Π°Π²ΡΠ½ΠΈΡΡΠ° Π²ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ Π½Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π±ΠΎΠΊΠ»ΡΠΊ (Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΡΠΏΠΈΡΠ°Π½Π΅ ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ZGC Π½Π΅ Π½Π°Π΄Π²ΠΈΡΠ°Π²Π° 10 ΠΌΡ.) ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΠΊΡΠΎ Ρ ΠΌΠ°Π»ΠΊΠΈ, ΡΠ°ΠΊΠ° ΠΈ Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΠΈ ΠΊΡΠΏΡΠΈΠ½ΠΈ, Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΡΠΎΡΠΈΠ½ ΠΌΠ΅Π³Π°Π±Π°ΠΉΡΠ° Π΄ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ°Π±Π°ΠΉΡΠΈ.
- Π‘ΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΈ ΠΏΡΠΈΠ·Π½Π°ΡΠ° Π·Π° Π³ΠΎΡΠΎΠ²Π° Π·Π° ΡΠΈΡΠΎΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅
ΡΡΠ±ΠΈΡΠ°ΡΠΊΠ° Π½Π° Π±ΠΎΠΊΠ»ΡΠΊ , ΡΠ°Π±ΠΎΡΠ΅ΡΠ° Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ ΡΠΏΠΈΡΠ°Π½ΠΈΡ (Low-Pause-Time Garbage Collector). Shenandoah Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½Π° ΠΎΡ Red Hat ΠΈ Π΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡΠ΅Π»Π½Π° Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌ, ΠΊΠΎΠΉΡΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΡΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π±ΠΎΠΊΠ»ΡΠΊ, ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π°ΠΉΠΊΠΈ ΡΠΈΡΡΠ΅Π½Π΅ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ Ρ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Java ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π Π°Π·ΠΌΠ΅ΡΡΡ Π½Π° Π·Π°Π±Π°Π²ΡΠ½ΠΈΡΡΠ°, Π²Π½Π°ΡΡΠ½ΠΈ ΠΎΡ ΡΡΠ±ΠΈΡΠ°ΡΠ° Π½Π° Π±ΠΎΠΊΠ»ΡΠΊ, Π΅ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌ ΠΈ Π½Π΅ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ΠΊΡΠΏΡΠΈΠ½Π°ΡΠ°, Ρ.Π΅. Π·Π° ΠΊΡΠΏΡΠΈΠ½ΠΈ ΠΎΡ 200 MB ΠΈ 200 GB Π·Π°Π±Π°Π²ΡΠ½ΠΈΡΡΠ° ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈ ( 50 ΠΌΡ ΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΏΠΎΠΏΠ°Π΄Π°Ρ Π² 10 ΠΌΡ); - Π‘ΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΈ Π²ΡΠ²Π΅Π΄Π΅Π½Π° Π² Π΅Π·ΠΈΠΊΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° β Π½ΠΎΠ²Π° ΡΠΎΡΠΌΠ° Π½Π° ΡΡΡΠΈΠ½Π³ΠΎΠ²ΠΈ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΈ, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π²Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠΈΠ½Π½ΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΈ Π΄Π°Π½Π½ΠΈ Π² ΠΈΠ·Ρ
ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡ ΠΎΡ Π΅ΠΊΡΠ°Π½ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ ΠΈ Π·Π°ΠΏΠ°Π·Π²Π°ΠΉΠΊΠΈ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΎΡΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΠΊΡΡΠ° Π² Π±Π»ΠΎΠΊΠ°. ΠΠ±ΡΠ°ΠΌΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π±Π»ΠΎΠΊΠ° ΡΡΠ°Π²Π° Ρ ΡΡΠΈ Π΄Π²ΠΎΠΉΠ½ΠΈ ΠΊΠ°Π²ΠΈΡΠΊΠΈ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ΄
String html = Β«<HTML>Β» +
Β«\n\tΒ» + Β«<BODY>Β» +
Β«\n\t\tΒ» + Β«"Java 15 is here!"
Β» +
Β«\n\tΒ» + Β«<\/BODY>Β» +
Β«\nΒ» + Β«<\/HTML>Β»;ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΡΠΎΡΠΈ:
String html = «»»
<HTML>
<BODY>"Java 15\
Π΅ ΡΡΠΊ!Β»<\/H1>
<\/BODY>
<\/HTML>»»»; - API Legacy DatagramSocket. Π‘ΡΠ°ΡΠΈΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ java.net.DatagramSocket ΠΈ java.net.MulticastSocket ΡΠ° Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΈ Ρ ΠΌΠΎΠ΄Π΅ΡΠ½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΊΠΎΡΡΠΎ Π΅ ΠΏΠΎ-ΠΏΡΠΎΡΡΠ° Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°, ΠΈ Π΅ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠ° Ρ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΏΠΎΡΠΎΡΠΈ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½ΠΈ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° . Π ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½Π° Π½Π΅ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ ΡΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡ ΠΊΠΎΠ΄, ΡΡΠ°ΡΠ°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π΅ Π΅ ΠΈΠ·ΡΡΠΈΡΠ° ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π° ΡΡΠ΅Π· ΠΎΠΏΡΠΈΡΡΠ° jdk.net.usePlainDatagramSocketImpl.
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π΅ Π²ΡΠΎΡΠ° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Β«instanceofΒ», ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»Π½ΠΎ Π΄Π° ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈ Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π·Π° ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅ Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° ΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ Β«if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}Β» Π±Π΅Π· ΡΠ²Π½ΠΎΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Β«String s = (String) objΒ».
ΠΠ΅ΡΠ΅:
if (obj instanceof Group) {
Group group = (Group) obj;
var entries = group.getEntries();
}Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ΅ ΠΌΠΈΠ½Π΅ΠΌ Π±Π΅Π· ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ΡΠΎ Π½Π° Β«Group group = (Group) objΒ»:
if (obj instanceof Group group) {
var entries = group.getEntries();
} - Π²ΡΠΎΡΠ° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π°ΡΠ° Π΄ΡΠΌΠ° ««, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½Π° ΡΠΎΡΠΌΠ° Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΊΠ»Π°ΡΠΎΠ²Π΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ° Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π΅ ΡΠ²Π½ΠΎΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½ΠΈΡΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΊΠ°ΡΠΎ equals(), hashCode() ΠΈ toString(), Π² ΡΠ»ΡΡΠ°ΠΈΡΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Ρ ΡΠ°ΠΌΠΎ Π² ΠΏΠΎΠ»Π΅ΡΠ°, ΡΠΈΡΡΠΎ ΡΠ°Π±ΠΎΡΠ° Π½Π΅ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ. ΠΠΎΠ³Π°ΡΠΎ Π² ΠΊΠ»Π°ΡΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠΈΠΏΠΈΡΠ½ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ equals(), hashCode() ΠΈ toString(), ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΌΠΈΠ½Π΅ Π±Π΅Π· ΡΡΡ
Π½ΠΎΡΠΎ ΡΠ²Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅:
public record BankTransaction(LocalDate date,
double amount,
String description) {}Π’Π°Π·ΠΈ ΠΎΠ±ΡΠ²Π° ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ equals(), hashCode() ΠΈ toString() Π² Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅, ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°ΡΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² Π΄Π°Π½Π½ΠΈΡΠ΅ (getter).
- Π²ΡΠΎΡΠΈΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π΅Π½ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π° API Foreign-Memory Access, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π½Π° Java ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Ρ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΎΠ±Π»Π°ΡΡΠΈ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΈΠ·Π²ΡΠ½ ΠΊΡΠΏΡΠΈΠ½Π°ΡΠ° Π½Π° Java, ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°ΠΉΠΊΠΈ Π½ΠΎΠ²ΠΈΡΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ MemorySegment, MemoryAddress ΠΈ MemoryLayout.
- ΠΈ ΠΎΠ±ΡΠ²Π΅Π½Π° Π·Π° ΠΎΡΡΠ°ΡΡΠ»Π° ΡΠ΅Ρ Π½ΠΈΠΊΠ°ΡΠ° Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Biased Locking, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π² HotSpot JVM Π·Π° Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅ ΠΎΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ. Π’Π°Π·ΠΈ ΡΠ΅Ρ Π½ΠΈΠΊΠ° Π΅ Π·Π°Π³ΡΠ±ΠΈΠ»Π° Π°ΠΊΡΡΠ°Π»Π½ΠΎΡΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ Ρ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠ½ΠΈ ΠΎΡ ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΠ΅ CPU, ΠΈ Π΅ ΡΠ²ΡΡΠ΄Π΅ ΡΡΡΠ΄ΠΎΠ΅ΠΌΠΊΠ° Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΠ° ΡΠΈ.
- ΠΎΡΡΠ°ΡΡΠ» ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ , ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΈΠ·ΡΡΠΈΡ Π² Π΅Π΄Π½ΠΎ ΠΎΡ Π±ΡΠ΄Π΅ΡΠΈΡΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΡ. ΠΡΠ±Π΅Π»ΡΠ·Π²Π° ΡΠ΅, ΡΠ΅ RMI Activation Π΅ ΠΎΡΡΠ°ΡΡΠ», ΠΏΡΠ΅Π²Π΅Π΄Π΅Π½ Π΅ Π² ΡΠ°Π·ΡΡΠ΄ ΠΎΠΏΡΠΈΡ ΠΎΡΠ΅ Π² Java 8 ΠΈ ΠΏΠΎΡΡΠΈ Π½Π΅ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° Π² ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½Π°ΡΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°.
- JavaScript Π΄Π²ΠΈΠ³Π°ΡΠ΅Π» , ΠΊΠΎΠΉΡΠΎ Π±Π΅ΡΠ΅ ΠΎΠ±ΡΠ²Π΅Π½ Π·Π° ΠΎΡΡΠ°ΡΡΠ» Π² Java SE 11.
- ΠΏΠΎΡΡΠΎΠ²Π΅ Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Solaris ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈΡΠ΅ SPARC (Solaris/SPARC, Solaris/x64 ΠΈ Linux/SPARC). ΠΠ·ΡΡΠΈΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈΡΠ΅ ΠΏΠΎΡΡΠΎΠ²Π΅ ΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π½Π° ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ° Π΄Π° ΡΡΠΊΠΎΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π² OpenJDK, Π±Π΅Π· Π΄Π° Π³ΡΠ±ΠΈ Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π΅ Π½Π° Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ Π·Π° Solaris ΠΈ SPARC.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
