Π‘Π»Π΅Π΄ ΡΠ΅ΡΡ ΠΌΠ΅ΡΠ΅ΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, Oracle
Java SE 15 ΡΠ΅ ΠΊΠ»Π°ΡΠΈΡΠΈΡΠΈΡΠ° ΠΊΠ°ΡΠΎ Π²Π΅ΡΡΠΈΡ Π·Π° ΠΎΠ±ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° ΠΈ ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎ ΡΠ»Π΅Π΄Π²Π°ΡΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅. ΠΠ»ΠΎΠ½ΡΡ Π·Π° Π΄ΡΠ»Π³ΠΎΡΡΠΎΡΠ½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° (LTS) ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ Java SE 11, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎ 2026 Π³. ΠΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΡ LTS ΠΊΠ»ΠΎΠ½ Π½Π° Java 8 ΡΠ΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π΄ΠΎ Π΄Π΅ΠΊΠ΅ΠΌΠ²ΡΠΈ 2020 Π³. Π‘Π»Π΅Π΄Π²Π°ΡΠΎΡΠΎ LTS ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π΅ Π½Π°ΡΡΠΎΡΠ΅Π½ΠΎ Π·Π° ΡΠ΅ΠΏΡΠ΅ΠΌΠ²ΡΠΈ 2021 Π³. ΠΠ΅ΠΊΠ° Π²ΠΈ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΠ΅ Π·Π°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ Ρ ΠΏΡΡΠΊΠ°Π½Π΅ΡΠΎ Π½Π° Java 10, ΠΏΡΠΎΠ΅ΠΊΡΡΡ ΠΏΡΠ΅ΠΌΠΈΠ½Π° ΠΊΡΠΌ Π½ΠΎΠ² ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π° ΠΏΠΎ-ΠΊΡΠ°ΡΡΠΊ ΡΠΈΠΊΡΠ» Π·Π° ΡΠΎΡΠΌΠΈΡΠ°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ Π²Π΅ΡΡΠΈΠΈ. ΠΠΎΠ²Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π²Π΅ΡΠ΅ Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½Π° Π² Π΅Π΄ΠΈΠ½ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π³Π»Π°Π²Π΅Π½ ΠΊΠ»ΠΎΠ½, ΠΊΠΎΠΉΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π° Π³ΠΎΡΠΎΠ²ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΈ ΠΎΡ ΠΊΠΎΠΉΡΠΎ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ ΡΠ°Π·ΠΊΠ»ΠΎΠ½ΡΠ²Π°Ρ Π½Π° Π²ΡΠ΅ΠΊΠΈ ΡΠ΅ΡΡ ΠΌΠ΅ΡΠ΅ΡΠ°, Π·Π° Π΄Π° ΡΠ΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Ρ Π½ΠΎΠ²ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ.
ΠΠ°
-
ΠΠ³ΡΠ°Π΄Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌΠ° Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠΈΡΡΠΎΠ² ΠΏΠΎΠ΄ΠΏΠΈΡ EdDSA (Edwards-Curve Digital Signature Algorithm)RFC 8032 ). ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° EdDSA Π½Π΅ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ, Π·Π°ΡΠΈΡΠ΅Π½Π° Π΅ ΠΎΡ Π°ΡΠ°ΠΊΠΈ ΠΎΡ ΡΡΡΠ°Π½ΠΈΡΠ½ΠΈ ΠΊΠ°Π½Π°Π»ΠΈ (ΠΎΡΠΈΠ³ΡΡΠ΅Π½ΠΎ Π΅ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ) ΠΈ Π΅ ΠΏΠΎ-Π±ΡΡΠ·Π° Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΠΎΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠ°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ECDSA, Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° Π΅Π·ΠΈΠΊ C, ΡΡΡ ΡΡΡΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° Π·Π°ΡΠΈΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ EdDSA, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π΅Π»ΠΈΠΏΡΠΈΡΠ½Π° ΠΊΡΠΈΠ²Π° ΡΡΡ 126-Π±ΠΈΡΠΎΠ² ΠΊΠ»ΡΡ, ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΏΠΎΠ΄ΠΎΠ±Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ Π½Π° ECDSA Ρ Π΅Π»ΠΈΠΏΡΠΈΡΠ½Π° ΠΊΡΠΈΠ²Π° secp256r1 ΠΈ 128-Π±ΠΈΡΠΎΠ² ΠΊΠ»ΡΡ. -
ΠΠΎΠ±Π°Π²Π΅Π½ΠΎ ΠΎΡ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π·Π°ΠΏΠ΅ΡΠ°ΡΠ°Π½ΠΈ ΠΊΠ»Π°ΡΠΎΠ²Π΅ ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΎΡ Π΄ΡΡΠ³ΠΈ ΠΊΠ»Π°ΡΠΎΠ²Π΅ ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ Π·Π° Π½Π°ΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅, ΡΠ°Π·ΡΠΈΡΡΠ²Π°Π½Π΅ ΠΈΠ»ΠΈ ΠΎΡΠΌΡΠ½Π° Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ. ΠΠ°ΠΏΠ΅ΡΠ°ΡΠ°Π½ΠΈΡΠ΅ ΠΊΠ»Π°ΡΠΎΠ²Π΅ ΡΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ ΠΏΠΎ-Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π΅Π½ Π½Π°ΡΠΈΠ½ Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠΏΠ΅ΡΠΊΠ»Π°Ρ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈΡΠ΅ Π·Π° Π΄ΠΎΡΡΡΠΏ, Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΈΠ·ΡΠΈΡΠ½ΠΎ ΠΈΠ·Π±ΡΠΎΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΠΎΠ²Π΅ΡΠ΅, ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈ Π·Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅.ΠΏΠ°ΠΊΠ΅Ρ com.example.geometry;
ΠΏΡΠ±Π»ΠΈΡΠ΅Π½ Π·Π°ΠΏΠ΅ΡΠ°ΡΠ°Π½ ΠΊΠ»Π°Ρ Shape
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° 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 ms.) ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΠΊΡΠΎ Ρ ΠΌΠ°Π»ΠΊΠΈ, ΡΠ°ΠΊΠ° ΠΈ Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΠΈ ΠΊΡΠΏΡΠΈΠ½ΠΈ, Π²Π°ΡΠΈΡΠ°ΡΠΈ ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎΡΡΠΎΡΠΈΠ½ ΠΌΠ΅Π³Π°Π±Π°ΠΉΡΠ° Π΄ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ°Π±Π°ΠΉΡΠ°.
- Π‘ΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½ ΠΈ Π½Π°ΠΌΠ΅ΡΠ΅Π½ Π·Π° ΠΎΠ±ΡΠ° ΡΠΏΠΎΡΡΠ΅Π±Π°
Π±ΠΎΠΊΠ»ΡΠΊΡΠΈΡShenandoah , ΡΠ°Π±ΠΎΡΠ΅Ρ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ ΠΏΠ°ΡΠ·ΠΈ (Low-Pause-Time Garbage Collector). Shenandoah Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΎΡ Red Hat ΠΈ Π΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡΠ΅Π»Π΅Π½ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌ, ΠΊΠΎΠΉΡΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΡΠΏΠΈΡΠ°Π½Π΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° Π±ΠΎΠΊΠ»ΡΠΊΠ°, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ Ρ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Java ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π Π°Π·ΠΌΠ΅ΡΡΡ Π½Π° Π·Π°ΠΊΡΡΠ½Π΅Π½ΠΈΡΡΠ°, Π²ΡΠ²Π΅Π΄Π΅Π½ΠΈ ΠΎΡ ΡΡΠ±ΠΈΡΠ°ΡΠ° Π½Π° ΠΎΡΠΏΠ°Π΄ΡΡΠΈ, Π΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ΠΈΠΌ ΠΈ Π½Π΅ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ΠΊΡΠΏΡΠΈΠ½Π°ΡΠ°, Ρ.Π΅. Π·Π° ΠΊΡΠΏΡΠΈΠ½ΠΈ ΠΎΡ 200 MB ΠΈ 200 GB Π·Π°Π±Π°Π²ΡΠ½ΠΈΡΡΠ° ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈ (Π½Π΅ ΠΈΠ·Π»ΠΈΠ·Π°ΠΉ Π½Π°Π΄ 50 ms ΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° 10 ms); - ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΈ Π²ΡΠ²Π΅Π΄Π΅Π½Π° Π² Π΅Π·ΠΈΠΊΠ°
ΡΠ΅ΠΊΡΡΠΎΠ²ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅ - Π½ΠΎΠ²Π° ΡΠΎΡΠΌΠ° Π½Π° Π½ΠΈΠ·ΠΎΠ²ΠΈ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΈ, ΠΊΠΎΡΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΡΠ΅Π΄ΠΎΠ²ΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΈ Π΄Π°Π½Π½ΠΈ Π² ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄, Π±Π΅Π· Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π΅ΠΊΡΠ°Π½ΠΈΡΠ°Π½Π΅ Π½Π° Π·Π½Π°ΡΠΈ ΠΈ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΎΡΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°Π½Π΅ Π² Π±Π»ΠΎΠΊΠ°. ΠΠ»ΠΎΠΊΡΡ Π΅ ΡΠ°ΠΌΠΊΠΈΡΠ°Π½ Ρ ΡΡΠΈ Π΄Π²ΠΎΠΉΠ½ΠΈ ΠΊΠ°Π²ΠΈΡΠΊΠΈ.ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ΄Π°
ΠΠΈΠ· html = " Β» +
"\n\t" + " Β» +
"\n\t\t" + " \"Java 1 Π΅ ΡΡΠΊ!\" Β» +
"\n\t" + " Β» +
"\n" + " ";ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅:
ΠΠΈΠ· html = """
Β»Java 1\
Π΅ ΡΡΠΊ!
"""; -
ΠΡΠ΅ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΠ°ΡΠ»Π΅Π΄Π΅Π½ DatagramSocket API. Π‘ΡΠ°ΡΠΈΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° 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) {
ΠΡΡΠΏΠ° Π³ΡΡΠΏΠ° = (ΠΡΡΠΏΠ°) obj;
var entries = group.getEntries();
}Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ°Π²ΠΈΡΠ΅ Π±Π΅Π· Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΡΠ° βΠΡΡΠΏΠΎΠ²Π° Π³ΡΡΠΏΠ° = (ΠΡΡΠΏΠ°) objβ:
if (obj instanceof Group group) {
var entries = group.getEntries();
} -
ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π²ΡΠΎΡΠΎ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½ΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π°ΡΠ° Π΄ΡΠΌΠ° "ΡΠ΅ΠΊΠΎΡΠ΄ ", ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½Π° ΡΠΎΡΠΌΠ° Π·Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠ»Π°ΡΠΎΠ²Π΅, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΡΠ΅ ΠΈΠ·ΡΠΈΡΠ½ΠΎΡΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ, ΠΊΠ°ΡΠΎ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ equals(), hashCode() ΠΈ toString() Π² ΡΠ»ΡΡΠ°ΠΈΡΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ ΡΠ°ΠΌΠΎ Π² ΠΏΠΎΠ»Π΅ΡΠ°, ΡΠΈΠ΅ΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ. ΠΠΎΠ³Π°ΡΠΎ Π΄Π°Π΄Π΅Π½ ΠΊΠ»Π°Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ equals(), hashCode() ΠΈ toString(), ΡΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΌΠΈΠ½Π΅ Π±Π΅Π· ΡΡΡ Π½Π°ΡΠ° ΠΈΠ·ΡΠΈΡΠ½Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡ:ΠΏΡΠ±Π»ΠΈΡΠ΅Π½ Π·Π°ΠΏΠΈΡ Π½Π° Π±Π°Π½ΠΊΠΎΠ²Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ (Π΄Π°ΡΠ° Π½Π° ΠΌΠ΅ΡΡΠ½Π° Π΄Π°ΡΠ°,
Π΄Π²ΠΎΠΉΠ½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° Π½ΠΈΠ·) {}Π’Π°Π·ΠΈ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ equals(), hashCode() ΠΈ toString() Π² Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈ getter.
-
ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π²ΡΠΎΡΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π΅Π½ ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° API Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΡΠΆΠ΄Π° ΠΏΠ°ΠΌΠ΅Ρ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π½Π° Java ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° Π΄Π° ΠΎΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ ΡΠΈΠ³ΡΡΠ΅Π½ ΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ΅Π³ΠΈΠΎΠ½ΠΈ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈΠ·Π²ΡΠ½ Java heap ΡΡΠ΅Π· ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈΡΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ MemorySegment, MemoryAddress ΠΈ MemoryLayout. -
Ρ ΠΎΡΠ° Ρ ΡΠ²ΡΠ΅ΠΆΠ΄Π°Π½ΠΈΡ ΠΈ ΠΎΡΡ Π²ΡΡΠ»ΠΈΡ Π° ΡΠ΅Ρ Π½ΠΈΠΊΠ°ΡΠ° Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠΈΡΡΡΠ°ΡΡΠ½ΠΎ Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π² HotSpot JVM, Π·Π° Π΄Π° ΡΠ΅ Π½Π°ΠΌΠ°Π»ΡΡ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅ Π·Π° Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅. Π’Π°Π·ΠΈ ΡΠ΅Ρ Π½ΠΈΠΊΠ° Π΅ Π·Π°Π³ΡΠ±ΠΈΠ»Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠΈ Π·Π° ΡΠΈΡΡΠ΅ΠΌΠΈ Ρ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈ ΠΎΡ ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ, ΠΈ Π΅ ΡΠ²ΡΡΠ΄Π΅ ΡΡΡΠ΄ΠΎΠ΅ΠΌΠΊΠ° Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠ²ΠΎΡΡΠ° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ. -
ΠΠ±ΡΠ²Π΅Π½ ΠΎΡΡΠ°ΡΡΠ» ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌΠΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° RMI , ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π°Ρ Π² Π±ΡΠ΄Π΅ΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅. ΠΡΠ±Π΅Π»ΡΠ·Π²Π° ΡΠ΅, ΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° RMI Π΅ ΠΎΡΡΠ°ΡΡΠ»ΠΎ, ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ΅Π½ΠΎ Π² ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΡΠ° Π½Π° ΠΎΠΏΡΠΈΡ Π² Java 8 ΠΈ ΠΏΠΎΡΡΠΈ Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½Π°ΡΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°. -
ΠΠ·ΡΡΠΈΡΠΎ JavaScript Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Π½ΠΎΡΠΎΡΠΎΠ³ , ΠΊΠΎΠΉΡΠΎ Π±Π΅ΡΠ΅ ΠΎΡΡ Π²ΡΡΠ»Π΅Π½ Π² Java SE 11. -
ΠΡΠ΅ΠΌΠ°Ρ Π½Π°ΡΠΎ ΠΏΠΎΡΡΠΎΠ²Π΅ Π·Π° Solaris OS ΠΈ SPARC ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ (Solaris/SPARC, Solaris/x64 ΠΈ Linux/SPARC). ΠΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅Π·ΠΈ ΠΏΠΎΡΡΠΎΠ²Π΅ ΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π½Π° ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ° Π΄Π° ΡΡΠΊΠΎΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° OpenJDK, Π±Π΅Π· Π΄Π° Π³ΡΠ±ΠΈ Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° Solaris ΠΈ SPARC.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru