ΠΠ°ΠΊ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ?
UUID (universally unique identifier) β ΡΡΠ°Π½Π΄Π°ΡΡ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ². ΠΠ½Π°ΡΠ΅Π½ΠΈΡ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°ΠΊΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΊΠ°ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΈ MAC-Π°Π΄ΡΠ΅Ρ, Π·Π° ΡΡΠ΅Ρ ΡΠ΅Π³ΠΎ ΠΎΠ½ΠΈ ΠΎΡΡΠ°ΡΡΡΡ Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠΉ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌΠΈ, Π΄Π°ΠΆΠ΅ Π±ΡΠ΄ΡΡΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ. ΠΠΎΠΆΠ½ΠΎ Ρ ΡΠ°Π·Π½ΡΡ ΠΌΠ°ΡΠΈΠ½ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π·Π°ΠΏΠΈΡΠΈ Ρ UUID-ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ, ΠΈ Π½Π΅ Π±ΠΎΡΡΡΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ°.
UUID Π±ΡΠ²Π°Π΅Ρ ΠΏΡΡΠΈ ΡΠ°Π·Π½ΡΡ Π²Π΅ΡΡΠΈΠΉ, Π²Π΅ΡΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠ·Π΄Π°Π½ΠΈΡ. Π€ΠΎΡΠΌΠ°Ρ ΠΎΡΡΠ°Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌ: ΡΡΠΎ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ 128-Π±ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° (Π΄Π²Π° long-Π°), ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π΄Π΅ΡΠΈΡΠ°ΠΌΠΈ Π½Π° Π³ΡΡΠΏΠΏΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°:
25b32eaa-3017-4ad7-9224-383f6bfa5212
Π Java ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΈΠΌΠΌΡΡΠ°Π±Π΅Π»ΡΠ½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ UUID ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ° java.util. Π Π½ΡΠΌ Π½Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ, ΡΠΎΠ»ΡΠΊΠΎ getter-Ρ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ ΡΠΎΡΡΠ°Π²Π½ΡΡ ΡΠ°ΡΡΠ΅ΠΉ, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ°Π±ΡΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ.
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΏΠΎ Π΄Π²ΡΠΌ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (ΡΡΠ°ΡΡΠΈΠ΅ ΠΈ ΠΌΠ»Π°Π΄ΡΠΈΠ΅ 64 Π±ΠΈΡΠ° Π² Π²ΠΈΠ΄Π΅ long ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²). nameUUIDFromBytes ΡΡΡΠΎΠΈΡ ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π±Π°ΠΉΡΠΎΠ² UUID Π²Π΅ΡΡΠΈΠΈ 3. randomUUID Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΉ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π²Π΅ΡΡΠΈΠΈ 4, Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ SecureRandom.
Java Guruπ€ #java
UUID (universally unique identifier) β ΡΡΠ°Π½Π΄Π°ΡΡ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ². ΠΠ½Π°ΡΠ΅Π½ΠΈΡ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°ΠΊΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΊΠ°ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΈ MAC-Π°Π΄ΡΠ΅Ρ, Π·Π° ΡΡΠ΅Ρ ΡΠ΅Π³ΠΎ ΠΎΠ½ΠΈ ΠΎΡΡΠ°ΡΡΡΡ Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠΉ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌΠΈ, Π΄Π°ΠΆΠ΅ Π±ΡΠ΄ΡΡΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ. ΠΠΎΠΆΠ½ΠΎ Ρ ΡΠ°Π·Π½ΡΡ ΠΌΠ°ΡΠΈΠ½ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π·Π°ΠΏΠΈΡΠΈ Ρ UUID-ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ, ΠΈ Π½Π΅ Π±ΠΎΡΡΡΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ°.
UUID Π±ΡΠ²Π°Π΅Ρ ΠΏΡΡΠΈ ΡΠ°Π·Π½ΡΡ Π²Π΅ΡΡΠΈΠΉ, Π²Π΅ΡΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠ·Π΄Π°Π½ΠΈΡ. Π€ΠΎΡΠΌΠ°Ρ ΠΎΡΡΠ°Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌ: ΡΡΠΎ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ 128-Π±ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° (Π΄Π²Π° long-Π°), ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π΄Π΅ΡΠΈΡΠ°ΠΌΠΈ Π½Π° Π³ΡΡΠΏΠΏΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°:
25b32eaa-3017-4ad7-9224-383f6bfa5212
Π Java ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΈΠΌΠΌΡΡΠ°Π±Π΅Π»ΡΠ½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ UUID ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ° java.util. Π Π½ΡΠΌ Π½Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ, ΡΠΎΠ»ΡΠΊΠΎ getter-Ρ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ ΡΠΎΡΡΠ°Π²Π½ΡΡ ΡΠ°ΡΡΠ΅ΠΉ, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ°Π±ΡΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ.
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΏΠΎ Π΄Π²ΡΠΌ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (ΡΡΠ°ΡΡΠΈΠ΅ ΠΈ ΠΌΠ»Π°Π΄ΡΠΈΠ΅ 64 Π±ΠΈΡΠ° Π² Π²ΠΈΠ΄Π΅ long ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²). nameUUIDFromBytes ΡΡΡΠΎΠΈΡ ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π±Π°ΠΉΡΠΎΠ² UUID Π²Π΅ΡΡΠΈΠΈ 3. randomUUID Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΉ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π²Π΅ΡΡΠΈΠΈ 4, Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ SecureRandom.
Java Guruπ€ #java
π10β€3π₯2π1
Π§Π΅ΠΌ IllegalArgumentException Π»ΡΡΡΠ΅ ΡΠ΅ΠΌ NullPointerException?
Π Π΅ΡΡ Π·Π΄Π΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎ Π²ΡΠ±ΠΎΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π» Π² non-nullable ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ null.
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ, ΠΎΠ±Π° ΡΡΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ unchecked, ΠΎΠ±Π° ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΈ ΠΎΡΠΎΠ±ΠΎΠΉ ΡΠ°Π·Π½ΠΈΡΡ Π½Π΅Ρ.
ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ. NullPointerException Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΡΠ»Π΅Π½Π°ΠΌ ΠΊΠ»Π°ΡΡΠ° ΡΠ΅ΡΠ΅Π· null-ΡΡΡΠ»ΠΊΡ. ΠΡΠΎ Π»ΠΈΡΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅, Π±Π΅Π· ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎ Π»ΠΎΠ³ΠΈΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. IllegalArgumentException, Π½Π°ΠΏΡΠΎΡΠΈΠ², ΡΠ²Π½ΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° β ΡΡΠΎ ΠΏΠΎΠ½ΡΡΠ½Π°Ρ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
Π‘Π΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ°Π·Π½ΠΈΡΠ° ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² ΠΈΠΌΠ΅Π½Π½ΠΎ IllegalArgumentException ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² HTTP-ΠΎΡΠ²Π΅Ρ Ρ ΠΊΠΎΠ΄ΠΎΠΌ 400 Bad Request, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ NPE ΠΎΡΡΠ°Π΅ΡΡΡ ΠΎΠ±ΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Β«Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈΒ» 500 Internal Server Error.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π²ΡΠ±ΡΠΎΡΠΈΡΡ NullPointerException Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ null. ΠΡΡΠ°Π΅ΡΡΡ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΌ, ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎ Π»ΠΈ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΠΈΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΠΎΠΏΡΠΎΡΡΡ Π·Π°Π±ΡΠ» Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ.
Π―Π²Π½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° null ΠΈ Π²ΡΠ±ΡΠΎΡ IllegalArgumentException Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΊΠΎΠ΄Π° Π±ΡΠ΄Π΅Ρ ΡΠ»ΡΠΆΠΈΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ, Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ Π΅Π³ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π²Π½Π΅ΡΠ΅Ρ Π΅ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠ½ΠΎΡΡΠΈ.
Java Guruπ€ #java
Π Π΅ΡΡ Π·Π΄Π΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎ Π²ΡΠ±ΠΎΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π» Π² non-nullable ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ null.
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ, ΠΎΠ±Π° ΡΡΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ unchecked, ΠΎΠ±Π° ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΈ ΠΎΡΠΎΠ±ΠΎΠΉ ΡΠ°Π·Π½ΠΈΡΡ Π½Π΅Ρ.
ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ. NullPointerException Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΡΠ»Π΅Π½Π°ΠΌ ΠΊΠ»Π°ΡΡΠ° ΡΠ΅ΡΠ΅Π· null-ΡΡΡΠ»ΠΊΡ. ΠΡΠΎ Π»ΠΈΡΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅, Π±Π΅Π· ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎ Π»ΠΎΠ³ΠΈΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. IllegalArgumentException, Π½Π°ΠΏΡΠΎΡΠΈΠ², ΡΠ²Π½ΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° β ΡΡΠΎ ΠΏΠΎΠ½ΡΡΠ½Π°Ρ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
Π‘Π΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ°Π·Π½ΠΈΡΠ° ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² ΠΈΠΌΠ΅Π½Π½ΠΎ IllegalArgumentException ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² HTTP-ΠΎΡΠ²Π΅Ρ Ρ ΠΊΠΎΠ΄ΠΎΠΌ 400 Bad Request, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ NPE ΠΎΡΡΠ°Π΅ΡΡΡ ΠΎΠ±ΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Β«Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈΒ» 500 Internal Server Error.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π²ΡΠ±ΡΠΎΡΠΈΡΡ NullPointerException Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ null. ΠΡΡΠ°Π΅ΡΡΡ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΌ, ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎ Π»ΠΈ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΠΈΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΠΎΠΏΡΠΎΡΡΡ Π·Π°Π±ΡΠ» Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ.
Π―Π²Π½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° null ΠΈ Π²ΡΠ±ΡΠΎΡ IllegalArgumentException Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΊΠΎΠ΄Π° Π±ΡΠ΄Π΅Ρ ΡΠ»ΡΠΆΠΈΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ, Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ Π΅Π³ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π²Π½Π΅ΡΠ΅Ρ Π΅ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠ½ΠΎΡΡΠΈ.
Java Guruπ€ #java
π16β€4π₯4
Forwarded from Java Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Serial Garbage Collector?
Serial GC β ΡΡΠΎΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ ΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ°, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ ΠΏΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ "Stop-the-World" . ΠΠ½ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ
ΠΏΠΎΡΠΎΠΊΠΎΠ² Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΌΡΡΠΎΡΠ° ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠΎΠΏΠΈΡΡΡΡΠΈΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π΄Π»Ρ ΠΌΠΎΠ»ΠΎΠ΄ΡΡ
ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠΉ (Young Gen) ΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠΈΡΡΡΡΠΈΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π΄Π»Ρ ΡΡΠ°ΡΡΠΈΡ
(Old Gen).
π’ ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
1οΈβ£ Π ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΌ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠΈ (Minor GC) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠΏΠΈΡΡΡΡΠ°Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ: Π²ΡΠΆΠΈΠ²ΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ ΠΈΠ· Eden Π² Survivor, Π° ΠΈΠ· Survivor Π² Old Gen.
2οΈβ£ Π ΡΡΠ°ΡΠΎΠΌ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠΈ (Major GC / Full GC) Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΏΠ»ΠΎΡΠ½Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
3οΈβ£ Π’Π°ΠΊ ΠΊΠ°ΠΊ GC ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅, Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½Π°.
π’ ΠΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
βΠ ΠΎΠ΄Π½ΠΎΡΠ΄Π΅ΡΠ½ΡΡ
ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
ΠΈΠ»ΠΈ ΠΏΡΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΡ
ΡΠ΅ΡΡΡΡΠ°Ρ
, Π³Π΄Π΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ GC ΡΠΎΠ·Π΄Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΠΈ.
βΠ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΡ
JVM (Π΄ΠΎ 1-2 ΠΠ ΠΏΠ°ΠΌΡΡΠΈ) , Π³Π΄Π΅ G1 ΠΈΠ»ΠΈ Parallel GC Π±ΡΠ΄ΡΡ ΠΈΠ·Π±ΡΡΠΎΡΠ½Ρ.
βΠ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ
Π±Π΅Π· ΠΆΠ΅ΡΡΠΊΠΈΡ
ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ ΠΏΠ°ΡΠ·Π°ΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ , Π² Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ
ΡΡΠΈΠ»ΠΈΡΠ°Ρ
ΠΈΠ»ΠΈ CLI-ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Ρ
.
β
Java Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° #java
Serial GC β ΡΡΠΎ
β
β
β
Please open Telegram to view this post
VIEW IN TELEGRAM
π10β€3π₯3π1
Π‘Π³Π΅Π½Π΅ΡΠΈΡΡΠΉΡΠ΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅
ΠΠΎΠ³Π΄Π° ΠΌΡ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ, ΡΠΎ Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΎ Π²ΠΎΠΏΡΠΎΡΠ΅ ΠΈΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ. ΠΠ΅ Π±ΡΠ΄Π΅ΠΌ Π·Π΄Π΅ΡΡ ΡΠ³Π»ΡΠ±Π»ΡΡΡΡΡ Π² ΡΠ΅ΠΎΡΠΈΡ ΠΌΠ°Ρ. ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ, Π° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ.
Π‘Π°ΠΌΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ-Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΠΈΡΠ΅Π» ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΠ±ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡΡ β ΡΡΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° Π·Π°Π΄Π°Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠ΅ΡΠΎΠ΄ Random.nextInt(1) Π±ΡΠ΄Π΅Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ 0 ΠΈ 1.
ΠΠ΄Π½Π°ΠΊΠΎ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ "ΠΈΡΠΏΠΎΡΡΠΈΡΡ" ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ. ΠΠΎΠ·ΡΠΌΠ΅ΠΌ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Random.nextInt(2)%2. Π’Π°ΠΊΠ°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΡΠΎΠΆΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ 0 ΠΈΠ»ΠΈ 1. ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΠ΅ΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ°, 2, Π±ΡΠ΄Π΅Ρ ΡΠΎΠΆΠ΅ ΠΏΡΠ΅Π²ΡΠ°ΡΠ΅Π½ΠΎ Π² 0. ΠΠ½Π°ΡΠΈΡ, ΠΎΡΠ²Π΅Ρ 0 Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π² Π΄Π²Π° ΡΠ°Π·Π° ΡΠ°ΡΠ΅ ΡΠ΅ΠΌ 1.
ΠΡΠΎ ΡΠ° ΠΏΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π»ΡΡΡΠ΅ Π½Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΏΡΠΈΠ½ΡΡΡΠΌ Β«ΡΠΊΠΎΠ»ΡΠ½ΡΠΌΒ» Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° %. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΡΡΠ°Π²ΠΈΡΡ Π·Π°Π±ΠΎΡΡ ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Π³ΠΎΡΠΎΠ²ΡΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ Ρ Π³ΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ.
ΠΡΠ»ΠΈ Π·Π°Π΄Π°ΡΠ° ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΠ»ΠΎΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΠΌΠΈ, ΡΡΠΎΠΈΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Π²ΡΠΎΠ΄Π΅ Apache Commons Math.
Java Guruπ€ #java
ΠΠΎΠ³Π΄Π° ΠΌΡ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ, ΡΠΎ Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΎ Π²ΠΎΠΏΡΠΎΡΠ΅ ΠΈΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ. ΠΠ΅ Π±ΡΠ΄Π΅ΠΌ Π·Π΄Π΅ΡΡ ΡΠ³Π»ΡΠ±Π»ΡΡΡΡΡ Π² ΡΠ΅ΠΎΡΠΈΡ ΠΌΠ°Ρ. ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ, Π° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ.
Π‘Π°ΠΌΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ-Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΠΈΡΠ΅Π» ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΠ±ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡΡ β ΡΡΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° Π·Π°Π΄Π°Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠ΅ΡΠΎΠ΄ Random.nextInt(1) Π±ΡΠ΄Π΅Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ 0 ΠΈ 1.
ΠΠ΄Π½Π°ΠΊΠΎ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ "ΠΈΡΠΏΠΎΡΡΠΈΡΡ" ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ. ΠΠΎΠ·ΡΠΌΠ΅ΠΌ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Random.nextInt(2)%2. Π’Π°ΠΊΠ°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΡΠΎΠΆΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ 0 ΠΈΠ»ΠΈ 1. ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΠ΅ΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ°, 2, Π±ΡΠ΄Π΅Ρ ΡΠΎΠΆΠ΅ ΠΏΡΠ΅Π²ΡΠ°ΡΠ΅Π½ΠΎ Π² 0. ΠΠ½Π°ΡΠΈΡ, ΠΎΡΠ²Π΅Ρ 0 Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π² Π΄Π²Π° ΡΠ°Π·Π° ΡΠ°ΡΠ΅ ΡΠ΅ΠΌ 1.
ΠΡΠΎ ΡΠ° ΠΏΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π»ΡΡΡΠ΅ Π½Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΏΡΠΈΠ½ΡΡΡΠΌ Β«ΡΠΊΠΎΠ»ΡΠ½ΡΠΌΒ» Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° %. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΡΡΠ°Π²ΠΈΡΡ Π·Π°Π±ΠΎΡΡ ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Π³ΠΎΡΠΎΠ²ΡΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ Ρ Π³ΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ.
ΠΡΠ»ΠΈ Π·Π°Π΄Π°ΡΠ° ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΠ»ΠΎΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΠΌΠΈ, ΡΡΠΎΠΈΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Π²ΡΠΎΠ΄Π΅ Apache Commons Math.
Java Guruπ€ #java
π9π₯4β€2
ΠΠΎΠ³Π΄Π° ΡΡΠΎΠΈΡ Π²ΡΠ±ΡΠ°ΡΡ char[] Π²ΠΌΠ΅ΡΡΠΎ String?
ΠΠ΅ΡΠ²Π°Ρ, ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π° β ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ. ΠΡΠ»ΠΈ Π²Π°ΠΌ Π·Π°ΡΠ°Π½Π΅Π΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΠΎΠΊΠΈ, ΠΈ ΠΎΠ½ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΠΌΠ°ΡΡΠΈΠ². ΠΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠ°ΠΌΠΈ, ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΠΈΡ Π² Π²ΠΈΠ΄Π΅ offset-ΠΎΠ² ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° (ΠΊΠ°ΠΊ ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ ΡΠ°Π½ΡΡΠ΅ Π² ΡΠ°ΠΌΠΎΠΌ String).
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠΎΠ·Π½Π°Π½Π½ΠΎ ΠΈ ΡΠ²ΠΎΠ΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. JVM ΡΠΎΠΆΠ΅ ΠΏΡΠΈΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ ΡΡΠΈΠ»ΠΈΡ ΠΏΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΡΡΠΎΠΊ (Π²ΡΠΎΠ΄Π΅ ΠΈΠ½ΡΠ΅ΡΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅ Π²Π°ΡΠΈΡ .
ΠΡΠΎΡΠ°Ρ, ΠΌΠ΅Π½Π΅Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π° β Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ. Π‘ΡΡΠΎΠΊΠΈ Π² Java ΠΈΠΌΠΌΡΡΠ°Π±Π΅Π»ΡΠ½Ρ. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΠ΅ ΠΏΠ°ΡΠΎΠ»Ρ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ ΡΠΈΠΏΠ° String, ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠΈΡΡ Π΅Π³ΠΎ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ°.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΏΠΎΡΠΎΠ± Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π°ΡΠ°ΠΊΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π°ΠΊΠ΅Ρ ΡΠ²ΠΎΠΈΠΌΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠΌΠΈ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ, ΠΈ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² heap dump.
ΠΡΠ»ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Β«Π·Π°Π½ΡΠ»ΠΈΡΡΒ» Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
Java Guruπ€ #java
ΠΠ΅ΡΠ²Π°Ρ, ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π° β ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ. ΠΡΠ»ΠΈ Π²Π°ΠΌ Π·Π°ΡΠ°Π½Π΅Π΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΠΎΠΊΠΈ, ΠΈ ΠΎΠ½ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΠΌΠ°ΡΡΠΈΠ². ΠΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠ°ΠΌΠΈ, ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΠΈΡ Π² Π²ΠΈΠ΄Π΅ offset-ΠΎΠ² ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° (ΠΊΠ°ΠΊ ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ ΡΠ°Π½ΡΡΠ΅ Π² ΡΠ°ΠΌΠΎΠΌ String).
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠΎΠ·Π½Π°Π½Π½ΠΎ ΠΈ ΡΠ²ΠΎΠ΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. JVM ΡΠΎΠΆΠ΅ ΠΏΡΠΈΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ ΡΡΠΈΠ»ΠΈΡ ΠΏΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΡΡΠΎΠΊ (Π²ΡΠΎΠ΄Π΅ ΠΈΠ½ΡΠ΅ΡΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅ Π²Π°ΡΠΈΡ .
ΠΡΠΎΡΠ°Ρ, ΠΌΠ΅Π½Π΅Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π° β Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ. Π‘ΡΡΠΎΠΊΠΈ Π² Java ΠΈΠΌΠΌΡΡΠ°Π±Π΅Π»ΡΠ½Ρ. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΠ΅ ΠΏΠ°ΡΠΎΠ»Ρ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ ΡΠΈΠΏΠ° String, ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠΈΡΡ Π΅Π³ΠΎ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ°.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΏΠΎΡΠΎΠ± Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π°ΡΠ°ΠΊΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π°ΠΊΠ΅Ρ ΡΠ²ΠΎΠΈΠΌΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠΌΠΈ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ, ΠΈ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² heap dump.
ΠΡΠ»ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Β«Π·Π°Π½ΡΠ»ΠΈΡΡΒ» Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
Java Guruπ€ #java
π₯14π8β€4
ΠΠΎΠ΄ ΠΊΠ°ΠΊΠΈΠΌ ΡΠΈΠΏΠΎΠΌ Ρ
ΡΠ°Π½ΠΈΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ?
Π ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΠΉ Java Π΄Π»Ρ ΡΡΠΈΡ ΡΠ΅Π»Π΅ΠΉ Π΅ΡΡΡ Π΄Π²Π° ΠΊΠ»Π°ΡΡΠ°:
Period β ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΠ½ΡΠΉ ΠΏΠ΅ΡΠΈΠΎΠ΄. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄Π½Π΅ΠΉ, ΠΌΠ΅ΡΡΡΠ΅Π² ΠΈ Π»Π΅Ρ. ΠΠ΄Π½ΠΈΠΌ Π΄Π½Π΅ΠΌ Π·Π΄Π΅ΡΡ ΡΡΠΈΡΠ°Π΅ΡΡΡ Π΄Π΅Π½Ρ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ ZonedDateTime.
Duration β Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄, ΡΠ΅ΠΊΡΠ½Π΄, ΠΌΠΈΠ½ΡΡ, ΡΠ°ΡΠΎΠ², ΠΈ ΡΠΎΠΆΠ΅ Π΄Π½Π΅ΠΉ. ΠΠ΄Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ Π΄Π΅Π½Ρ β ΡΠΎΠ²Π½ΠΎ 24 ΡΠ°ΡΠ°.
ΠΠ±Π° ΠΊΠ»Π°ΡΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΠΎΠ±ΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ TemporalAmount β ΠΏΠ΅ΡΠΈΠΎΠ΄ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅. ΠΠ±Π° ΠΈΠΌΠΌΡΡΠ°Π±Π΅Π»ΡΠ½Ρ, ΠΈ ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅, ΠΏΠΎΡΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½Ρ. ΠΡΠ±Π°Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΡΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²ΡΠΎΠ΄Π΅ plusX() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ.
ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΎΠ±ΠΎΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½Ρ ΠΈΠ· Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΈΠ· Π΄Π²ΡΡ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ² Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ between, ΠΈΠ»ΠΈ ΠΈΠ· ΡΡΡΠΎΠΊΠΈ. Π‘ΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Duration: "P2DT3H4M", Period: "P1Y2M3D".
ΠΠΎ Java 8 ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠΈΠΎΠ΄Π° Π±ΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ. Π ΡΡΠΎΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅ Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ², ΡΡΠ΅Π΄ΠΈ ΠΊΠΎΡΠΎΡΡΡ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈ Π½Π΅Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡΡ. Π§ΡΠΎΠ±Ρ Π² Java 8+ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΡΠΈΡΠ»ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ between() Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π΅Π½Π°ΠΌΠ° ChronoUnit.
Java Guruπ€ #java
Π ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΠΉ Java Π΄Π»Ρ ΡΡΠΈΡ ΡΠ΅Π»Π΅ΠΉ Π΅ΡΡΡ Π΄Π²Π° ΠΊΠ»Π°ΡΡΠ°:
Period β ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΠ½ΡΠΉ ΠΏΠ΅ΡΠΈΠΎΠ΄. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄Π½Π΅ΠΉ, ΠΌΠ΅ΡΡΡΠ΅Π² ΠΈ Π»Π΅Ρ. ΠΠ΄Π½ΠΈΠΌ Π΄Π½Π΅ΠΌ Π·Π΄Π΅ΡΡ ΡΡΠΈΡΠ°Π΅ΡΡΡ Π΄Π΅Π½Ρ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ ZonedDateTime.
Duration β Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄, ΡΠ΅ΠΊΡΠ½Π΄, ΠΌΠΈΠ½ΡΡ, ΡΠ°ΡΠΎΠ², ΠΈ ΡΠΎΠΆΠ΅ Π΄Π½Π΅ΠΉ. ΠΠ΄Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ Π΄Π΅Π½Ρ β ΡΠΎΠ²Π½ΠΎ 24 ΡΠ°ΡΠ°.
ΠΠ±Π° ΠΊΠ»Π°ΡΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΠΎΠ±ΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ TemporalAmount β ΠΏΠ΅ΡΠΈΠΎΠ΄ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅. ΠΠ±Π° ΠΈΠΌΠΌΡΡΠ°Π±Π΅Π»ΡΠ½Ρ, ΠΈ ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅, ΠΏΠΎΡΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½Ρ. ΠΡΠ±Π°Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΡΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²ΡΠΎΠ΄Π΅ plusX() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ.
ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΎΠ±ΠΎΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½Ρ ΠΈΠ· Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΈΠ· Π΄Π²ΡΡ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ² Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ between, ΠΈΠ»ΠΈ ΠΈΠ· ΡΡΡΠΎΠΊΠΈ. Π‘ΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Duration: "P2DT3H4M", Period: "P1Y2M3D".
ΠΠΎ Java 8 ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠΈΠΎΠ΄Π° Π±ΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ. Π ΡΡΠΎΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅ Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ², ΡΡΠ΅Π΄ΠΈ ΠΊΠΎΡΠΎΡΡΡ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈ Π½Π΅Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡΡ. Π§ΡΠΎΠ±Ρ Π² Java 8+ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΡΠΈΡΠ»ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ between() Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π΅Π½Π°ΠΌΠ° ChronoUnit.
Java Guruπ€ #java
β€7π3π₯3
new String("Hello_42") == "Hello_" + 42?
Π’Π°ΠΊΠΈΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ ΡΡΡΠΎΠΊΠΎΠ²ΡΡ ΠΈ ΡΠΈΡΠ»ΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π·Π½Π°Π½ΠΈΡ ΠΎ ΠΏΠΎΠ½ΡΡΠΈΠΈ ΠΏΡΠ»ΠΎΠ² Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ² (literal pool). ΠΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΡΠ°ΡΡ Ρ ΠΏΡΠ»ΠΎΠΌ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΊΠ»Π°ΡΡΠ°. ΠΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π° ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄Π»Ρ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ Π»ΠΈΡΠ΅ΡΠ°Π»Π° ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΊΠ»Π°ΡΡΠ°, Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠΉ ΡΠΆΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½ Π² ΠΊΡΡΠ΅. ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ "Hello" == "Hello" ΠΈΡΡΠΈΠ½Π½ΠΎ, Π½Π΅ ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ ΡΡΠΎ String β ΡΡΡΠ»ΠΎΡΠ½ΡΠΉ ΡΠΈΠΏ. Π’Π°ΠΊΠ°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Ρ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡΠΈ (immutable) ΠΊΠ»Π°ΡΡΠ° String, ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ.
ΠΡΠΎΠΌΠ΅ ΡΠ°ΠΌΠΈΡ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ², ΠΈΠ½ΡΠ΅ΡΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ. Π ΡΠ°ΠΊΠΈΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΎΡΠ½ΠΎΡΡΡΡΡ Π½Π΅ΡΠ²Π½ΠΎΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΡΠ»Π° 42 ΠΊ ΡΡΡΠΎΠΊΠ΅ ΠΈ ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ. ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΈΡΡΠΈΠ½Π½ΡΠΌ "Hello_42" == "Hello_" + 42.
ΠΡΠ» Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ² Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΡΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ new. ΠΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ new String("Hello_42") == "Hello_" + 42 Π»ΠΎΠΆΠ½ΠΎ.
Java Guruπ€ #java
Π’Π°ΠΊΠΈΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ ΡΡΡΠΎΠΊΠΎΠ²ΡΡ ΠΈ ΡΠΈΡΠ»ΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π·Π½Π°Π½ΠΈΡ ΠΎ ΠΏΠΎΠ½ΡΡΠΈΠΈ ΠΏΡΠ»ΠΎΠ² Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ² (literal pool). ΠΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΡΠ°ΡΡ Ρ ΠΏΡΠ»ΠΎΠΌ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΊΠ»Π°ΡΡΠ°. ΠΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π° ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄Π»Ρ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ Π»ΠΈΡΠ΅ΡΠ°Π»Π° ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΊΠ»Π°ΡΡΠ°, Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠΉ ΡΠΆΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½ Π² ΠΊΡΡΠ΅. ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ "Hello" == "Hello" ΠΈΡΡΠΈΠ½Π½ΠΎ, Π½Π΅ ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ ΡΡΠΎ String β ΡΡΡΠ»ΠΎΡΠ½ΡΠΉ ΡΠΈΠΏ. Π’Π°ΠΊΠ°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Ρ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡΠΈ (immutable) ΠΊΠ»Π°ΡΡΠ° String, ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ.
ΠΡΠΎΠΌΠ΅ ΡΠ°ΠΌΠΈΡ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ², ΠΈΠ½ΡΠ΅ΡΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ. Π ΡΠ°ΠΊΠΈΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΎΡΠ½ΠΎΡΡΡΡΡ Π½Π΅ΡΠ²Π½ΠΎΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΡΠ»Π° 42 ΠΊ ΡΡΡΠΎΠΊΠ΅ ΠΈ ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ. ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΈΡΡΠΈΠ½Π½ΡΠΌ "Hello_42" == "Hello_" + 42.
ΠΡΠ» Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ² Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΡΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ new. ΠΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ new String("Hello_42") == "Hello_" + 42 Π»ΠΎΠΆΠ½ΠΎ.
Java Guruπ€ #java
π16π₯6β€5
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π² Java ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ?
ΠΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ ΡΡ ΠΎΠ΄ΠΈΡ ΠΊΠΎΡΠ½ΡΠΌΠΈ Π² C++ ΠΏΡΠΎΡΠ»ΠΎΠ΅ (ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ²ΡΡΠ΅ΡΠ°), ΡΡΠΎ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡ ΠΈΠ· C++. ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΡΡΠΎΠΉ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.
Π C++ ΡΡΡΠ»ΠΊΠ° β ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ-ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ Π΄Π»Ρ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΠ΅Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ, ΠΏΠΎΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΈ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π». Π Java ΡΠ°ΠΊΠΎΠ³ΠΎ Π½Π΅Ρ, Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ½ΡΡΡ ΡΡΠΎ ΠΏΠΎΠ΄ΡΠΌΠ°Π² Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΎ ΡΡΡΠ»ΠΊΠ΅ Π½Π° int.
Π‘ΡΡΠ»ΠΊΠ° Π² Java β ΡΡΠΎ Π½Π΅ΡΡΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅Π΅ Π½Π° Π°Π΄ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² ΠΏΠ°ΠΌΡΡΠΈ. ΠΠΎΡ ΠΎΠΆΠ°Ρ ΡΡΡΠ½ΠΎΡΡΡ Π² C++ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ.
ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ β ΡΡΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΠΎ ΡΡΡΠ»ΠΊΠ΅ β ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° ΡΡΡΠ»ΠΊΠΈ, ΡΠΎ Π΅ΡΡΡ ΠΏΠΎ ΡΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠΉ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
Π Java ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° β Π²ΡΠ΅Π³Π΄Π° ΠΊΠΎΠΏΠΈΡ. ΠΠ½Π°ΡΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΏΡΠΎΡΡΠΎ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΠΎΠ΄ Π²ΡΡΠ΅ ΡΡΠΎ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ.
Java Guruπ€ #java
ΠΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ ΡΡ ΠΎΠ΄ΠΈΡ ΠΊΠΎΡΠ½ΡΠΌΠΈ Π² C++ ΠΏΡΠΎΡΠ»ΠΎΠ΅ (ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ²ΡΡΠ΅ΡΠ°), ΡΡΠΎ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡ ΠΈΠ· C++. ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΡΡΠΎΠΉ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.
Π C++ ΡΡΡΠ»ΠΊΠ° β ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ-ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ Π΄Π»Ρ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΠ΅Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ, ΠΏΠΎΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΈ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π». Π Java ΡΠ°ΠΊΠΎΠ³ΠΎ Π½Π΅Ρ, Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ½ΡΡΡ ΡΡΠΎ ΠΏΠΎΠ΄ΡΠΌΠ°Π² Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΎ ΡΡΡΠ»ΠΊΠ΅ Π½Π° int.
Π‘ΡΡΠ»ΠΊΠ° Π² Java β ΡΡΠΎ Π½Π΅ΡΡΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅Π΅ Π½Π° Π°Π΄ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² ΠΏΠ°ΠΌΡΡΠΈ. ΠΠΎΡ ΠΎΠΆΠ°Ρ ΡΡΡΠ½ΠΎΡΡΡ Π² C++ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ.
ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ β ΡΡΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΠΎ ΡΡΡΠ»ΠΊΠ΅ β ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° ΡΡΡΠ»ΠΊΠΈ, ΡΠΎ Π΅ΡΡΡ ΠΏΠΎ ΡΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠΉ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
Π Java ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° β Π²ΡΠ΅Π³Π΄Π° ΠΊΠΎΠΏΠΈΡ. ΠΠ½Π°ΡΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΏΡΠΎΡΡΠΎ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΠΎΠ΄ Π²ΡΡΠ΅ ΡΡΠΎ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ.
Java Guruπ€ #java
π₯12π5β€3
ΠΠ°ΠΊΠΈΠ΅ Π² Java Π±ΡΠ²Π°ΡΡ Π²ΠΈΠ΄Ρ ΡΡΡΠ»ΠΎΠΊ?
ΠΡΠΎΠΌΠ΅ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΠΆΠ΅ΡΡΠΊΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π²Π°ΡΠΈΠ°Π½ΡΡ ΡΡΡΠ»ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΌΡΡΠΎΡΠ° ΠΎΡΠΎΠ±ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. ΠΡΠΎ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΈ ΠΊΠ»Π°ΡΡΠ° java.lang.ref.Reference. ΠΡΠ΅ ΠΎΠ½ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΡΠ°Π·Π½ΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΡΠ»Π°Π±ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ. Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΎ ΠΎΠ±Π΅ΡΡΠΊΠΈ Π½Π°Π΄ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΏΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ get(), ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΄Π°Π»Π΅Π½ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΌΡΡΠΎΡΠ° ΠΏΠΎΠΊΠ° ΠΎΠ±ΡΠ΅ΠΊΡ-ΠΎΠ±Π΅ΡΡΠΊΠ° Π΅ΡΠ΅ Π½Π΅ ΡΠ΄Π°Π»Π΅Π½. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΎΠ½ΠΈ Π΄Π»Ρ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ, Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΡΡΠ΅ΠΉ, Π΄Π»Ρ ΡΠΈΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²Π½Π΅ΡΠ½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π² Android ΡΠ»Π°Π±ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Π±ΠΎΡΡΠ±Ρ Ρ ΡΡΠ΅ΡΠΊΠΎΠΉ Activity.
ΠΠΈΠ΄Ρ ΡΡΡΠ»ΠΎΠΊ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠ±ΡΠ²Π°Π½ΠΈΡ Β«ΠΆΠ΅ΡΡΠΊΠΎΡΡΠΈΒ»:
π ΠΠ±ΡΡΠ½Π°Ρ ΠΆΠ΅ΡΡΠΊΠ°Ρ ΡΡΡΠ»ΠΊΠ° β Π»ΡΠ±Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΡΡΠ»ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΡΠΈΡΡΠΈΡΡΡ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΌΡΡΠΎΡΠ° Π½Π΅ ΡΠ°Π½ΡΡΠ΅, ΡΠ΅ΠΌ ΡΡΠ°Π½Π΅Ρ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ (ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½Π΅Ρ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ ΠΈΠ· GC roots, ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΠΏΠΎΡΡΠ°Ρ
).
π SoftReference β ΠΌΡΠ³ΠΊΠ°Ρ ΡΡΡΠ»ΠΊΠ°. ΠΠ±ΡΠ΅ΠΊΡ Π½Π΅ ΡΡΠ°Π½Π΅Ρ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ ΠΈΠ·ΡΠ°ΡΡ
ΠΎΠ΄ΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠ΅ΠΉ ΠΏΠ°ΠΌΡΡΠΈ β Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»Π΅Π½ Π΄ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ OutOfMemoryError. ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°Π½ΡΡΠ΅, Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ±ΠΎΡΡΠΈΠΊΠ° ΠΌΡΡΠΎΡΠ°.
π WeakReference β ΡΠ»Π°Π±Π°Ρ ΡΡΡΠ»ΠΊΠ°. Π‘Π»Π°Π±Π΅Π΅ ΠΌΡΠ³ΠΊΠΎΠΉ. ΠΠ΅ ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΡΠ΅Ρ ΡΡΠΈΠ»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ° ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅Ρ ΡΠ°ΠΊΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ.
π PhantomReference β ΡΠ°Π½ΡΠΎΠΌΠ½Π°Ρ ΡΡΡΠ»ΠΊΠ°. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Β«ΠΏΡΠ΅Π΄ΡΠΌΠ΅ΡΡΠ½ΠΎΠΉΒ» ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°: ΠΎΠ±ΡΠ΅ΠΊΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΏΠΎΡΠ»Π΅ ΡΠΈΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΡΠΈΡΠ΅Π½ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΌΡΡΠΎΡΠ°.
Java Guruπ€ #java
ΠΡΠΎΠΌΠ΅ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΠΆΠ΅ΡΡΠΊΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π²Π°ΡΠΈΠ°Π½ΡΡ ΡΡΡΠ»ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΌΡΡΠΎΡΠ° ΠΎΡΠΎΠ±ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. ΠΡΠΎ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΈ ΠΊΠ»Π°ΡΡΠ° java.lang.ref.Reference. ΠΡΠ΅ ΠΎΠ½ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΡΠ°Π·Π½ΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΡΠ»Π°Π±ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ. Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΎ ΠΎΠ±Π΅ΡΡΠΊΠΈ Π½Π°Π΄ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΏΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ get(), ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΄Π°Π»Π΅Π½ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΌΡΡΠΎΡΠ° ΠΏΠΎΠΊΠ° ΠΎΠ±ΡΠ΅ΠΊΡ-ΠΎΠ±Π΅ΡΡΠΊΠ° Π΅ΡΠ΅ Π½Π΅ ΡΠ΄Π°Π»Π΅Π½. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΎΠ½ΠΈ Π΄Π»Ρ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ, Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΡΡΠ΅ΠΉ, Π΄Π»Ρ ΡΠΈΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²Π½Π΅ΡΠ½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π² Android ΡΠ»Π°Π±ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Π±ΠΎΡΡΠ±Ρ Ρ ΡΡΠ΅ΡΠΊΠΎΠΉ Activity.
ΠΠΈΠ΄Ρ ΡΡΡΠ»ΠΎΠΊ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠ±ΡΠ²Π°Π½ΠΈΡ Β«ΠΆΠ΅ΡΡΠΊΠΎΡΡΠΈΒ»:
Java Guruπ€ #java
Please open Telegram to view this post
VIEW IN TELEGRAM
π12π₯4β€3
ΠΠ°ΠΊΠΎΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π½Π°ΡΡΡΠ΅Π½ Π² ΠΊΠΎΠ΄Π΅?
Anonymous Quiz
19%
SRP (ΠΡΠΈΠ½ΡΠΈΠΏ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ)
46%
DRY (Don't Repeat Yourself)
14%
KISS (Keep It Simple, Stupid)
12%
YAGNI(You Aren't Gonna Need It)
9%
LSP (ΠΡΠΈΠ½ΡΠΈΠΏ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΠ°ΡΠ±Π°ΡΡ ΠΠΈΡΠΊΠΎΠ²)
π€¨24π1π±1
ΠΠ· ΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΠΈΡ .class-ΡΠ°ΠΉΠ»?
.class-ΡΠ°ΠΉΠ» ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ΄ΠΈΠ½ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ. ΠΡΠΎ ΡΠΎ, ΡΡΠΎ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Java Virtual Machine. Π .class ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ ΠΊΠΎΠ΄ Π»ΡΠ±ΠΎΠ³ΠΎ JVM ΡΠ·ΡΠΊΠ°, ΡΠΎΡΠΌΠ°Ρ Π²Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΈΠ»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ. Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΡΠΈΠ»ΠΈΡΠΎΠΉ javap ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° JDK. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΡΡΡΠΊΡΡΡΠ° ΡΠ°ΠΉΠ»Π° ΠΎΠΏΠΈΡΠ°Π½Π° Π½Π° Π²ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ, Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅ ΡΡΠ°ΡΠ΅ΠΉ. Π€Π°ΠΉΠ» ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· 10 ΡΠ΅ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ»ΠΎΠ²Π½ΠΎ ΡΠ°Π·Π±ΠΈΡΡ Π½Π° Π³ΡΡΠΏΠΏΡ:
π Π‘Π²ΠΎΠΉΡΡΠ²Π° ΡΠ°ΠΉΠ»Π°: ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ΅Π΅ ΡΠΈΠΏ ΡΠ°ΠΉΠ»Π° Β«Π²ΠΎΠ»ΡΠ΅Π±Π½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎΒ» 0xCAFEBABE ΠΈ Π²Π΅ΡΡΠΈΡ ΡΠΎΡΠΌΠ°ΡΠ°;
π ΠΡΠ» ΠΊΠΎΠ½ΡΡΠ°Π½Ρ β ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅, ΠΈ ΠΏΡΠΎΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. Π Π΄ΡΡΠ³ΠΈΡ
ΠΌΠ΅ΡΡΠ°Ρ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΡΠ»Π°;
π ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΊΠ»Π°ΡΡΠ°: ΡΠ»Π°Π³ΠΈ Π΄ΠΎΡΡΡΠΏΠ°, ΠΈΠΌΡ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, Π΅Π³ΠΎ ΠΏΡΠ΅Π΄ΠΊΠ°, ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ²;
π ΠΠ½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅: ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ»Π΅ΠΉ ΠΊΠ»Π°ΡΡΠ° ΠΈ Π±Π°ΠΉΡΠΊΠΎΠ΄ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²
π ΠΡΡΠΈΠ±ΡΡΡ ΠΊΠ»Π°ΡΡΠ°;
ΠΠ»Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΡΠΎΠΆΠ΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Ρ Π½Π°Π·Π²Π°Π½ΠΈΡΠΌΠΈ ΡΠΎΡΠΌΠ°ΡΠ° OuterClass$InnerClass.class. ΠΡΠ»ΠΈ ΠΊΠ»Π°ΡΡ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠΉ, Π²ΠΌΠ΅ΡΡΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π½ΠΎΠΌΠ΅ΡΠ° Ρ 1.
Java Guruπ€ #java
.class-ΡΠ°ΠΉΠ» ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ΄ΠΈΠ½ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ. ΠΡΠΎ ΡΠΎ, ΡΡΠΎ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Java Virtual Machine. Π .class ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ ΠΊΠΎΠ΄ Π»ΡΠ±ΠΎΠ³ΠΎ JVM ΡΠ·ΡΠΊΠ°, ΡΠΎΡΠΌΠ°Ρ Π²Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΈΠ»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ. Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΡΠΈΠ»ΠΈΡΠΎΠΉ javap ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° JDK. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΡΡΡΠΊΡΡΡΠ° ΡΠ°ΠΉΠ»Π° ΠΎΠΏΠΈΡΠ°Π½Π° Π½Π° Π²ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ, Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅ ΡΡΠ°ΡΠ΅ΠΉ. Π€Π°ΠΉΠ» ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· 10 ΡΠ΅ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ»ΠΎΠ²Π½ΠΎ ΡΠ°Π·Π±ΠΈΡΡ Π½Π° Π³ΡΡΠΏΠΏΡ:
ΠΠ»Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΡΠΎΠΆΠ΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Ρ Π½Π°Π·Π²Π°Π½ΠΈΡΠΌΠΈ ΡΠΎΡΠΌΠ°ΡΠ° OuterClass$InnerClass.class. ΠΡΠ»ΠΈ ΠΊΠ»Π°ΡΡ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠΉ, Π²ΠΌΠ΅ΡΡΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π½ΠΎΠΌΠ΅ΡΠ° Ρ 1.
Java Guruπ€ #java
Please open Telegram to view this post
VIEW IN TELEGRAM
π10β€6π₯4
Π‘ΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΠΌΡΡΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ?
Π Π°Π·ΠΌΠ΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΡΡΡΠ»ΠΎΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ², ΠΊΠ°ΠΊ ΠΈ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ², Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ JVM ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π΅Π΅ Π·Π°ΠΏΡΡΠΊΠ°. ΠΠ±ΡΡΠ½ΠΎ Π² Π²ΠΎΠΏΡΠΎΡΠ΅ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ ΡΠ°ΠΌΠ°Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π° β HotSpot ΠΎΡ Oracle.
Π Π°Π·ΠΌΠ΅ΡΡ ΠΏΠΎΠ»Π΅ΠΉ-ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² Π±ΡΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π² ΡΠ΅Π»ΡΡ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ (alignment). ΠΠ·-Π·Π° ΡΠΎΠ³ΠΎ ΠΆΠ΅ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ»ΡΠΌΠΈ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΏΡΡΡΠΎΡΡ.
ΠΠ°ΠΊ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ ΡΠ°Π½Π΅Π΅, ΡΡΡΠ»ΠΊΠ° Π² Java β Π½Π΅ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΡΡΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π² C++, ΡΡΠΎ Π½Π΅ Π°Π΄ΡΠ΅Ρ Π² ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠΎΠ»Ρ-ΡΡΡΠ»ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ³Π΄Π° HotSpot ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Β«ΡΠΆΠ°ΡΠΈΠ΅ ΡΡΡΠ»ΠΎΠΊΒ» (Compressed OOP).
ΠΡΠΎΠΌΠ΅ ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠΎΠ², ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² HotSpot Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° β runtime-ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΎΡ 8 Π΄ΠΎ 16 Π±Π°ΠΉΡ.
Π ΠΎΠ±ΡΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΡΡΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠΌΠΌΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² Π΅Π³ΠΎ ΠΏΠΎΠ»Π΅ΠΉ. ΠΡΠΈΠΌΠ΅ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈΠ·ΠΌΠ΅ΡΡΠ΅ΡΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
Java Guruπ€ #java
Π Π°Π·ΠΌΠ΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΡΡΡΠ»ΠΎΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ², ΠΊΠ°ΠΊ ΠΈ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ², Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ JVM ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π΅Π΅ Π·Π°ΠΏΡΡΠΊΠ°. ΠΠ±ΡΡΠ½ΠΎ Π² Π²ΠΎΠΏΡΠΎΡΠ΅ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ ΡΠ°ΠΌΠ°Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π° β HotSpot ΠΎΡ Oracle.
Π Π°Π·ΠΌΠ΅ΡΡ ΠΏΠΎΠ»Π΅ΠΉ-ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² Π±ΡΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π² ΡΠ΅Π»ΡΡ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ (alignment). ΠΠ·-Π·Π° ΡΠΎΠ³ΠΎ ΠΆΠ΅ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ»ΡΠΌΠΈ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΏΡΡΡΠΎΡΡ.
ΠΠ°ΠΊ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ ΡΠ°Π½Π΅Π΅, ΡΡΡΠ»ΠΊΠ° Π² Java β Π½Π΅ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΡΡΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π² C++, ΡΡΠΎ Π½Π΅ Π°Π΄ΡΠ΅Ρ Π² ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠΎΠ»Ρ-ΡΡΡΠ»ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ³Π΄Π° HotSpot ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Β«ΡΠΆΠ°ΡΠΈΠ΅ ΡΡΡΠ»ΠΎΠΊΒ» (Compressed OOP).
ΠΡΠΎΠΌΠ΅ ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠΎΠ², ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² HotSpot Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° β runtime-ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΎΡ 8 Π΄ΠΎ 16 Π±Π°ΠΉΡ.
Π ΠΎΠ±ΡΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΡΡΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠΌΠΌΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² Π΅Π³ΠΎ ΠΏΠΎΠ»Π΅ΠΉ. ΠΡΠΈΠΌΠ΅ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈΠ·ΠΌΠ΅ΡΡΠ΅ΡΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
Java Guruπ€ #java
π14π₯6β€5
ΠΠ° ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π΅Π»ΠΈΡΡΡ ΠΏΠ°ΠΌΡΡΡ JVM?
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ ΡΡΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ HotSpot (ΠΈ Π΅Ρ opensource-Π²Π΅ΡΡΠΈΠΈ OpenJDK). Π Π΄ΡΡΠ³ΠΈΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½Π°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π² Android) Π²ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΠΏΠΎ-Π΄ΡΡΠ³ΠΎΠΌΡ. ΠΠ±Π»Π°ΡΡΠΈ-ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΡ ΠΊΡΡΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠ±ΠΎΡΠΊΠΈ ΠΌΡΡΠΎΡΠ°, ΠΈ ΠΌΠΎΠ³ΡΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ.
π’ Stack β ΠΌΠ΅ΡΡΠΎ ΠΏΠΎΠ΄ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ ΠΈ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΡ (Π½ΠΎ Π½Π΅ ΡΠ°ΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ). Π₯ΡΠ°Π½ΠΈΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ΄Π΅ΡΡ ΠΆΠ΅ Ρ
ΡΠ°Π½ΡΡΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΠΎΠΊΠ° ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΈΡΡΡΡΡΡ. ΠΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΡΠ΅ΠΊΠ΅ β GC roots. ΠΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΡΡΡ ΡΡΠ°Π·Ρ Π½Π° Π²ΡΡ
ΠΎΠ΄Π΅ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΏΠΎΡΠΎΠΊΡ, ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ -Xss, Π½ΠΎ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΎΡΠ»ΠΈΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
π’ PermGen β Π ΡΡΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Ρ
ΡΠ°Π½ΡΡΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ (ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΊΠ»Π°ΡΡΠ° Class<T>). ΠΠ΄Π΅ΡΡ ΠΆΠ΅ Ρ Java 7 Ρ
ΡΠ°Π½ΠΈΡΡΡ ΠΏΡΠ» ΡΡΡΠΎΠΊ. ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° -XX:PermSize, ΡΠ°ΡΡΠ΅Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎ -XX:MaxPermSize. ΠΠ΅ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΡΠ°ΡΡΡΡ ΠΊΡΡΠΈ.
π’ Metaspace β Ρ Java 8 Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ permanent generation. ΠΡΠ»ΠΈΡΠΈΠ΅ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ metaspace ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ Π½Π° ΠΌΠ°ΡΠΈΠ½Π΅ ΠΏΠ°ΠΌΡΡΠΈ, Π½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ PermGen ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ -XX:MaxMetaspaceSize.
π’ Heap β ΠΊΡΡΠ°, Π²ΡΡ managed-ΠΏΠ°ΠΌΡΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ
ΡΠ°Π½ΡΡΡΡ Π²ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π·Π΄Π΅Π»Ρ β ΡΠ°ΡΡΠΈ ΠΊΡΡΠΈ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ -Xms, -Xmn ΠΈ -Xmx ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ, ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅ΡΡ Ρ
ΠΈΠΏΠ° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
π’ Eden, New Generation, Old Generation ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ β ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ Π΄Π»Ρ ΡΠ±ΠΎΡΡΠΈΠΊΠ° ΠΌΡΡΠΎΡΠ° ΡΠ°ΡΡΠΈ ΠΊΡΡΠΈ, ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΡ. ΠΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ°Π·Π½ΡΠ΅, Π½ΠΎ ΠΎΠ±ΡΠΈΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡΡ: Π΄ΠΎΠ»Π³ΠΎ ΠΆΠΈΠ²ΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ Π΄Π²ΠΈΠ³Π°Π΅ΡΡΡ Π²ΠΎ Π²ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΠΎΠ΅ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅; ΡΠ±ΠΎΡΠΊΠ° ΠΌΡΡΠΎΡΠ° Π² ΡΠ°Π·Π½ΡΡ
ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΡΡ
ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ½ΠΎ; ΡΠ΅ΠΌ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΡΠ΅, ΡΠ΅ΠΌ ΡΠ±ΠΎΡΠΊΠ° Π² Π½ΡΠΌ ΡΠ΅ΠΆΠ΅, Π½ΠΎ ΠΈ Π΄ΠΎΡΠΎΠΆΠ΅.
Π₯ΠΎΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΏΠ°ΠΌΡΡΠΈ β ΡΡΠΎ Π΄Π΅ΡΠ°Π»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ, Π΄Π»Ρ Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π·Π½Π°Π½ΠΈΡ ΠΎ Π½ΠΈΡ Π½Π΅ΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΡΡ ΠΏΠΎΠ»ΡΠ·Ρ. ΠΡΠΈ Π·Π½Π°Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² JVM, ΡΡΠΎ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠΏΠ°ΡΠ°Π΅Ρ ΠΎΡ ΠΏΡΠΎΡΠ°Π΄ΠΎΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ GC ΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΎΠΊ Ρ OutOfMemoryError.
Java Guruπ€ #java
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ ΡΡΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ HotSpot (ΠΈ Π΅Ρ opensource-Π²Π΅ΡΡΠΈΠΈ OpenJDK). Π Π΄ΡΡΠ³ΠΈΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½Π°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π² Android) Π²ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΠΏΠΎ-Π΄ΡΡΠ³ΠΎΠΌΡ. ΠΠ±Π»Π°ΡΡΠΈ-ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΡ ΠΊΡΡΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠ±ΠΎΡΠΊΠΈ ΠΌΡΡΠΎΡΠ°, ΠΈ ΠΌΠΎΠ³ΡΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ.
Π₯ΠΎΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΏΠ°ΠΌΡΡΠΈ β ΡΡΠΎ Π΄Π΅ΡΠ°Π»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ, Π΄Π»Ρ Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π·Π½Π°Π½ΠΈΡ ΠΎ Π½ΠΈΡ Π½Π΅ΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΡΡ ΠΏΠΎΠ»ΡΠ·Ρ. ΠΡΠΈ Π·Π½Π°Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² JVM, ΡΡΠΎ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠΏΠ°ΡΠ°Π΅Ρ ΠΎΡ ΠΏΡΠΎΡΠ°Π΄ΠΎΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ GC ΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΎΠΊ Ρ OutOfMemoryError.
Java Guruπ€ #java
Please open Telegram to view this post
VIEW IN TELEGRAM
π15π₯13β€6
ΠΠΏΠΈΡΠΈΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ Ρ Shutdown Hooks
Shutdown Hook β ΡΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ JVM. ΠΠ΅ΠΉΡΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΡΠΈ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ΠΈΠΈ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠΏΠ° Thread, ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² Runtime.getRuntime().addShutdownHook().
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π½ΡΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΡΠ΄ Π½ΡΠ°Π½ΡΠΎΠ²:
1. ΠΠ΅Ρ Π³Π°ΡΠ°Π½ΡΠΈΠΈ, ΡΡΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ, ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ Π²ΠΎΠΎΠ±ΡΠ΅. Π₯ΡΠΊΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΏΡΠΈ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΌ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ β Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ Π²ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈΠ»ΠΈ Π²ΡΠ·ΠΎΠ²Π΅ System.exit(). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΠ·ΠΎΠ² System.halt() ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΡ SIGKILL ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°Π²Π΅ΡΡΠΈΡΡΡ Π½Π΅Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΡΠΈΡΡΡΡ ΠΊΠ°ΠΊ Π΄ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΡΠ°ΠΊ ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ. Π‘ΠΈΠ³Π½Π°Π» SIGTERM Π·Π°ΠΏΡΡΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ, Π½ΠΎ ΠΠ‘ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ Π΄ΠΎΠΆΠ΄Π°ΡΡΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΎΠ±ΠΎΡΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ.
2. Π Ρ ΡΠΊΠ΅ Π½Π΅Π»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ System.exit(0). ΠΠ°Π²Π΅ΡΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅Π½ΡΠ»Π΅Π²ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ System.halt(). ΠΠΎΠ·Π²ΡΠ°Ρ Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΡΠ»Π΅ ΡΡΠ°ΡΡΠ° Ρ ΡΠΊΠΎΠ² ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ Π·Π°Π²ΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
3. ΠΠ°Π±ΠΎΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π·Π°Π΄Π°Π΅ΡΡΡ Π΄ΠΎ ΠΈΡ ΡΡΠ°ΡΡΠ°. ΠΠΎΠ³Π΄Π° ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π°ΡΠ°Π»ΡΡ, Π½ΠΎΠ²ΡΠΉ Π²ΡΠ·ΠΎΠ² addShutdownHook() Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅.
4. ΠΠ΅Ρ Π³Π°ΡΠ°Π½ΡΠΈΠΉ ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π² ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ, Π² ΡΠΎΡΠ΅Π΄Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°Ρ . ΠΠ± ΡΡΠΎΠΌ Π½Π°ΠΌΠ΅ΠΊΠ°Π΅Ρ ΠΈ ΡΠΎΡΠΌΠ° ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° β ΠΊΠ»Π°ΡΡ Thread.
Java Guruπ€ #java
Shutdown Hook β ΡΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ JVM. ΠΠ΅ΠΉΡΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΡΠΈ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ΠΈΠΈ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠΏΠ° Thread, ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² Runtime.getRuntime().addShutdownHook().
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π½ΡΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΡΠ΄ Π½ΡΠ°Π½ΡΠΎΠ²:
1. ΠΠ΅Ρ Π³Π°ΡΠ°Π½ΡΠΈΠΈ, ΡΡΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ, ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ Π²ΠΎΠΎΠ±ΡΠ΅. Π₯ΡΠΊΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΏΡΠΈ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΌ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ β Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ Π²ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈΠ»ΠΈ Π²ΡΠ·ΠΎΠ²Π΅ System.exit(). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΠ·ΠΎΠ² System.halt() ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΡ SIGKILL ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°Π²Π΅ΡΡΠΈΡΡΡ Π½Π΅Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΡΠΈΡΡΡΡ ΠΊΠ°ΠΊ Π΄ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΡΠ°ΠΊ ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ. Π‘ΠΈΠ³Π½Π°Π» SIGTERM Π·Π°ΠΏΡΡΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ, Π½ΠΎ ΠΠ‘ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ Π΄ΠΎΠΆΠ΄Π°ΡΡΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΎΠ±ΠΎΡΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ.
2. Π Ρ ΡΠΊΠ΅ Π½Π΅Π»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ System.exit(0). ΠΠ°Π²Π΅ΡΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅Π½ΡΠ»Π΅Π²ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ System.halt(). ΠΠΎΠ·Π²ΡΠ°Ρ Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΡΠ»Π΅ ΡΡΠ°ΡΡΠ° Ρ ΡΠΊΠΎΠ² ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ Π·Π°Π²ΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
3. ΠΠ°Π±ΠΎΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π·Π°Π΄Π°Π΅ΡΡΡ Π΄ΠΎ ΠΈΡ ΡΡΠ°ΡΡΠ°. ΠΠΎΠ³Π΄Π° ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π°ΡΠ°Π»ΡΡ, Π½ΠΎΠ²ΡΠΉ Π²ΡΠ·ΠΎΠ² addShutdownHook() Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅.
4. ΠΠ΅Ρ Π³Π°ΡΠ°Π½ΡΠΈΠΉ ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π² ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ, Π² ΡΠΎΡΠ΅Π΄Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°Ρ . ΠΠ± ΡΡΠΎΠΌ Π½Π°ΠΌΠ΅ΠΊΠ°Π΅Ρ ΠΈ ΡΠΎΡΠΌΠ° ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° β ΠΊΠ»Π°ΡΡ Thread.
Java Guruπ€ #java
π9π₯3
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΏΠΎΠΉΠΌΠ°ΡΡ Error?
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ, Error ΠΊΠ°ΠΊ ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ Throwable ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΉΠΌΠ°ΡΡ Π² Π±Π»ΠΎΠΊ catch. Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π²Π°Π»ΠΈΠ΄Π½ΡΠΉ ΠΈ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅, ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠ° Error β Π½Π΅ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ°, Π»ΠΎΠ²ΠΈΡΡ ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Ρ ΡΠΌΡΡΠ»Π°.
ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π²ΡΠ±ΡΠΎΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠΈΠΏΠ° VirtualMachineError ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ JVM Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ»ΠΎΠΌΠ°Π½Π½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ. ΠΠ°Π»ΡΠ½Π΅ΠΉΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ° Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠ°: OutOfMemoryError ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², StackOverflowError ΡΠ΅ΡΡΠ΅Ρ ΡΡΠ΅ΠΉΠΌΡ ΡΡΠ΅ΠΊΠ° Π²ΡΠ·ΠΎΠ²Π°, ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
Π’Π°ΠΊ ΠΊΠ°ΠΊ Π»ΠΎΠ²ΠΈΡΡ Error Π½Π΅ Π½ΡΠΆΠ½ΠΎ, ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π΅Ρ Π² ΡΠ΅ΠΊΡΠΈΠΈ throws ΡΠΈΠ³Π½Π°ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ. ΠΠ°ΠΊ ΠΈ RuntimeException, Error β ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΡ unchecked exception.
Java Guruπ€ #java
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ, Error ΠΊΠ°ΠΊ ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ Throwable ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΉΠΌΠ°ΡΡ Π² Π±Π»ΠΎΠΊ catch. Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π²Π°Π»ΠΈΠ΄Π½ΡΠΉ ΠΈ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅, ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠ° Error β Π½Π΅ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ°, Π»ΠΎΠ²ΠΈΡΡ ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Ρ ΡΠΌΡΡΠ»Π°.
ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π²ΡΠ±ΡΠΎΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠΈΠΏΠ° VirtualMachineError ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ JVM Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ»ΠΎΠΌΠ°Π½Π½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ. ΠΠ°Π»ΡΠ½Π΅ΠΉΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ° Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠ°: OutOfMemoryError ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², StackOverflowError ΡΠ΅ΡΡΠ΅Ρ ΡΡΠ΅ΠΉΠΌΡ ΡΡΠ΅ΠΊΠ° Π²ΡΠ·ΠΎΠ²Π°, ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
Π’Π°ΠΊ ΠΊΠ°ΠΊ Π»ΠΎΠ²ΠΈΡΡ Error Π½Π΅ Π½ΡΠΆΠ½ΠΎ, ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π΅Ρ Π² ΡΠ΅ΠΊΡΠΈΠΈ throws ΡΠΈΠ³Π½Π°ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ. ΠΠ°ΠΊ ΠΈ RuntimeException, Error β ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΡ unchecked exception.
Java Guruπ€ #java
π13π₯5β€2
ΠΠ°ΠΊΠ°Ρ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ JDK ΠΈ JRE?
JRE β Java Runtime Environment, Java-ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΡΠΎ Π½Π°Π±ΠΎΡ Π²ΡΠ΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Java-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ Java (JVM), Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² (Java Class Library), ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ java ΠΈ ΠΏΡΠΎΡΠ΅ΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, JRE Π½Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
JDK β Java Development Kit, Π½Π°Π±ΠΎΡ Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°. ΠΡΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ SDK Π΄Π»Ρ Java. JDK Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ JRE, Π½ΠΎ ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ (javac) ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ javadoc ΠΈ jdb. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ JDK ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π², Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Java ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π²Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ JRE, Π΅ΡΠ»ΠΈ ΠΆΠ΅ Π²Ρ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ Π½Π° Java, Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ JDK.
Java Guruπ€ #java
JRE β Java Runtime Environment, Java-ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΡΠΎ Π½Π°Π±ΠΎΡ Π²ΡΠ΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Java-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ Java (JVM), Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² (Java Class Library), ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ java ΠΈ ΠΏΡΠΎΡΠ΅ΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, JRE Π½Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
JDK β Java Development Kit, Π½Π°Π±ΠΎΡ Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°. ΠΡΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ SDK Π΄Π»Ρ Java. JDK Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ JRE, Π½ΠΎ ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ (javac) ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ javadoc ΠΈ jdb. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ JDK ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π², Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Java ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π²Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ JRE, Π΅ΡΠ»ΠΈ ΠΆΠ΅ Π²Ρ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ Π½Π° Java, Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ JDK.
Java Guruπ€ #java
π22π₯6β€2
ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ΅Π½ package-info?
ΠΠ±ΡΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ, Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ ΠΏΠ°ΠΏΠΊΡ Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ, ΠΈ Π²ΠΎ Π²ΡΠ΅Ρ Π΅Π΅ .java ΡΠ°ΠΉΠ»Π°Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΠ΅ Π² Π½Π°ΡΠ°Π»Π΅ ΡΡΡΠΎΡΠΊΡ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ°, Π²ΠΈΠ΄Π° package full.dir.path;. ΠΡΠΎΠ³ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ.
ΠΠ΄Π½Π°ΠΊΠΎ, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΠΏΠ°ΠΊΠ΅Ρ Π΅Π³ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ β ΡΠ°ΠΉΠ» package-info.java. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΡΠΎ .java-ΡΠ°ΠΉΠ», ΡΡΠΎ Π½Π΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ°. Π Π½Π°Π·Π²Π°Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° Π΄Π΅ΡΠΈΡΡ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½Ρ, ΡΠ°ΠΊ ΡΡΠΎ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΠΈ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ.
ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»Π° package-info.java β Π²ΡΡ ΡΠ° ΠΆΠ΅ ΡΡΡΠΎΠΊΠ° package full.dir.path;. Π’Π°ΠΊΠΎΠΉ ΡΠ°ΠΉΠ» Π½Π΅ Π½Π΅ΡΠ΅Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠΎΠ»ΡΠ·Ρ. ΠΡΡΡ Π΄Π²Π΅ Π²Π΅ΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π² Π½Π΅Π³ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·Π° ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ.
ΠΠ΅ΡΠ²ΠΎΠ΅ β Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ°. Javadoc-ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. ΠΡΠΈΠΌΠ΅Ρ β ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° java.lang. ΠΠ³ΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π² ΡΠ°ΠΉΠ»Π΅ java/lang/package-info.java.
ΠΡΠΎΡΠΎΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ β Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΡΠΎΠ²Π½Ρ ΠΏΠ°ΠΊΠ΅ΡΠ°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅ΡΡ Target PACKAGE. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Spring Framework ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @NonNullApi.
Java Guruπ€ #java
ΠΠ±ΡΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ, Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ ΠΏΠ°ΠΏΠΊΡ Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ, ΠΈ Π²ΠΎ Π²ΡΠ΅Ρ Π΅Π΅ .java ΡΠ°ΠΉΠ»Π°Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΠ΅ Π² Π½Π°ΡΠ°Π»Π΅ ΡΡΡΠΎΡΠΊΡ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ°, Π²ΠΈΠ΄Π° package full.dir.path;. ΠΡΠΎΠ³ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ.
ΠΠ΄Π½Π°ΠΊΠΎ, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΠΏΠ°ΠΊΠ΅Ρ Π΅Π³ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ β ΡΠ°ΠΉΠ» package-info.java. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΡΠΎ .java-ΡΠ°ΠΉΠ», ΡΡΠΎ Π½Π΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ°. Π Π½Π°Π·Π²Π°Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° Π΄Π΅ΡΠΈΡΡ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½Ρ, ΡΠ°ΠΊ ΡΡΠΎ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΠΈ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ.
ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»Π° package-info.java β Π²ΡΡ ΡΠ° ΠΆΠ΅ ΡΡΡΠΎΠΊΠ° package full.dir.path;. Π’Π°ΠΊΠΎΠΉ ΡΠ°ΠΉΠ» Π½Π΅ Π½Π΅ΡΠ΅Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠΎΠ»ΡΠ·Ρ. ΠΡΡΡ Π΄Π²Π΅ Π²Π΅ΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π² Π½Π΅Π³ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·Π° ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ.
ΠΠ΅ΡΠ²ΠΎΠ΅ β Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ°. Javadoc-ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. ΠΡΠΈΠΌΠ΅Ρ β ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° java.lang. ΠΠ³ΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π² ΡΠ°ΠΉΠ»Π΅ java/lang/package-info.java.
ΠΡΠΎΡΠΎΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ β Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΡΠΎΠ²Π½Ρ ΠΏΠ°ΠΊΠ΅ΡΠ°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅ΡΡ Target PACKAGE. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Spring Framework ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @NonNullApi.
Java Guruπ€ #java
π₯10π4β€2
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ Π΄ΠΎΡΡΠ°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠ΅ΡΠ»Π΅ΠΊΡΠ΅Π½ΠΎΠΌ?
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β Π½Π΅Ρ. Π Π΅ΡΠ»Π΅ΠΊΡΠ½-ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠ° Parameter. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ name ΡΠΈΠ½ΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅: "arg0", "arg1", ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΠ΅ΡΠΎΠ΄ isNamePresent ΠΏΡΠΈ ΡΡΠΎΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ false, ΡΡΠΎ Π·Π½Π°ΡΠΈΡ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΈΠΌΠ΅Π½ΠΈ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π°. ΠΠ½Π° Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π΄Π°ΠΆΠ΅ Π² Π±Π°ΠΉΡ-ΠΊΠΎΠ΄.
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Java 8 Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° (javac) ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΎΠΏΡΠΈΡ -parameters. Π ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Ρ ΡΡΠΎΠΉ ΠΎΠΏΡΠΈΠ΅ΠΉ ΠΊΠ»Π°ΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ ΠΈΠΌΠ΅Π½Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². Parameter#getName() ΡΠΎΠ³Π΄Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΆΠ΅ Π½Π°ΡΡΠΎΡΡΠ΅Π΅ ΠΈΠΌΡ.
ΠΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΈΠΌΠ΅Π½Π°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ β Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° JSON ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Jackson. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΌΠΎΠ³ΡΡ ΡΡΠ°ΠΊΡΠΎΠ²Π°ΡΡΡΡ Π΅ΠΉ ΠΊΠ°ΠΊ ΠΏΠΎΠ»Ρ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΎΡΠΌΡ.
ΠΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΡΠ»Π°Π³Π° -parameters Jackson ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠ½Π°Π±ΠΆΠ°Π»ΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @JsonProperty. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π»Π°ΡΡ ΡΡΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ²ΡΠΎΡΡΠ»Π° ΠΈΠΌΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°. ΠΡΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π·Π°ΡΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ, Π²ΡΠ·Π²Π°Π² Method#getParameterAnnotations().
Java Guruπ€ #java
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β Π½Π΅Ρ. Π Π΅ΡΠ»Π΅ΠΊΡΠ½-ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠ° Parameter. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ name ΡΠΈΠ½ΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅: "arg0", "arg1", ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΠ΅ΡΠΎΠ΄ isNamePresent ΠΏΡΠΈ ΡΡΠΎΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ false, ΡΡΠΎ Π·Π½Π°ΡΠΈΡ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΈΠΌΠ΅Π½ΠΈ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π°. ΠΠ½Π° Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π΄Π°ΠΆΠ΅ Π² Π±Π°ΠΉΡ-ΠΊΠΎΠ΄.
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Java 8 Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° (javac) ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΎΠΏΡΠΈΡ -parameters. Π ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Ρ ΡΡΠΎΠΉ ΠΎΠΏΡΠΈΠ΅ΠΉ ΠΊΠ»Π°ΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ ΠΈΠΌΠ΅Π½Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². Parameter#getName() ΡΠΎΠ³Π΄Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΆΠ΅ Π½Π°ΡΡΠΎΡΡΠ΅Π΅ ΠΈΠΌΡ.
ΠΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΈΠΌΠ΅Π½Π°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ β Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° JSON ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Jackson. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΌΠΎΠ³ΡΡ ΡΡΠ°ΠΊΡΠΎΠ²Π°ΡΡΡΡ Π΅ΠΉ ΠΊΠ°ΠΊ ΠΏΠΎΠ»Ρ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΎΡΠΌΡ.
ΠΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΡΠ»Π°Π³Π° -parameters Jackson ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠ½Π°Π±ΠΆΠ°Π»ΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @JsonProperty. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π»Π°ΡΡ ΡΡΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ²ΡΠΎΡΡΠ»Π° ΠΈΠΌΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°. ΠΡΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π·Π°ΡΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ, Π²ΡΠ·Π²Π°Π² Method#getParameterAnnotations().
Java Guruπ€ #java
π₯9π5β€2
ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΠΎΠ±Ρ
ΠΎΠ΄ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°?
ΠΡΠΎΡ ΠΏΠΎΡΡ β Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ. ΠΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π·Π΄Π΅ΡΡ ΠΊΡΠ°ΠΉΠ½Π΅ ΡΠ΅Π΄ΠΊΠΎ ΠΈΠΌΠ΅Π΅Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ (Π΅ΡΠ»ΠΈ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΎΠΎΠ±ΡΠ΅).
ΠΠ΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ β ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΎΡΠΌΠ° ΡΠΆΠ΅ Π±ΡΠ»Π° ΠΊΠΎΠ³Π΄Π°-ΡΠΎ ΡΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°Π½Π°, ΡΠ΅ΠΏΠ΅ΡΡ ΠΆΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΏΡΠΎΡΡΠΎ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° readObject. ΠΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π³ΠΎ Π½Π΅ serializable ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ.
ΠΠ½ΡΡΡΠΈ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ReflectionFactory.newConstructorForSerialization ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ° sun.reflect β ΠΌΠ΅ΡΠΎΠ΄ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΌ) ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ. ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π½Π°ΠΏΡΡΠΌΡΡ. ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π²ΡΡ ΠΆΠ΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ, Π½ΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠ»Π°ΡΡΠ° Object.
Unsafe.allocateInstance β Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π½Π΅ Π²ΡΠ·ΡΠ²Π°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, Π½ΠΈΡΠ΅Π³ΠΎ Π»ΠΈΡΠ½Π΅Π³ΠΎ.
ΠΠ±Π° ΡΠΏΠΎΡΠΎΠ±Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, Π½Π΅ Π²ΡΠ·Π²Π°Π½ Π½ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, Π½ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΡ ΠΏΠΎΠ»Π΅ΠΉ. ΠΡΠ΅ ΡΠ»Π΅Π½Ρ ΠΎΡΡΠ°ΡΡΡΡ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (null, 0, false). ΠΠ΄Π½Π°ΠΊΠΎ Π΄Π»Ρ final ΠΏΠΎΠ»Ρ Π΄Π΅ΡΠΎΠ»ΡΠ½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π² ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΎΠ½ΠΎ ΠΈ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ.
ΠΠΎΠ»ΡΠ·ΡΡΡΡ ΡΡΠΈΠΌΠΈ Π³ΡΡΠ·Π½ΡΠΌΠΈ Ρ Π°ΠΊΠ°ΠΌΠΈ, ΠΏΠΎΠΌΠ½ΠΈΡΠ΅: ΠΏΠ°ΠΊΠ΅ΡΡ sun.* Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ»ΠΈ ΡΠ°ΡΡΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ API Java, ΠΈ Π΅ΡΡΡ Π½Π΅ Π²ΠΎ Π²ΡΠ΅Ρ Π²Π΅ΡΡΠΈΡΡ Java.
Java Guruπ€ #java
ΠΡΠΎΡ ΠΏΠΎΡΡ β Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ. ΠΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π·Π΄Π΅ΡΡ ΠΊΡΠ°ΠΉΠ½Π΅ ΡΠ΅Π΄ΠΊΠΎ ΠΈΠΌΠ΅Π΅Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ (Π΅ΡΠ»ΠΈ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΎΠΎΠ±ΡΠ΅).
ΠΠ΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ β ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΎΡΠΌΠ° ΡΠΆΠ΅ Π±ΡΠ»Π° ΠΊΠΎΠ³Π΄Π°-ΡΠΎ ΡΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°Π½Π°, ΡΠ΅ΠΏΠ΅ΡΡ ΠΆΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΏΡΠΎΡΡΠΎ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° readObject. ΠΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π³ΠΎ Π½Π΅ serializable ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ.
ΠΠ½ΡΡΡΠΈ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ReflectionFactory.newConstructorForSerialization ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ° sun.reflect β ΠΌΠ΅ΡΠΎΠ΄ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΌ) ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ. ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π½Π°ΠΏΡΡΠΌΡΡ. ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π²ΡΡ ΠΆΠ΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ, Π½ΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠ»Π°ΡΡΠ° Object.
Unsafe.allocateInstance β Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π½Π΅ Π²ΡΠ·ΡΠ²Π°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, Π½ΠΈΡΠ΅Π³ΠΎ Π»ΠΈΡΠ½Π΅Π³ΠΎ.
ΠΠ±Π° ΡΠΏΠΎΡΠΎΠ±Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, Π½Π΅ Π²ΡΠ·Π²Π°Π½ Π½ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, Π½ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΡ ΠΏΠΎΠ»Π΅ΠΉ. ΠΡΠ΅ ΡΠ»Π΅Π½Ρ ΠΎΡΡΠ°ΡΡΡΡ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (null, 0, false). ΠΠ΄Π½Π°ΠΊΠΎ Π΄Π»Ρ final ΠΏΠΎΠ»Ρ Π΄Π΅ΡΠΎΠ»ΡΠ½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π² ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΎΠ½ΠΎ ΠΈ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ.
ΠΠΎΠ»ΡΠ·ΡΡΡΡ ΡΡΠΈΠΌΠΈ Π³ΡΡΠ·Π½ΡΠΌΠΈ Ρ Π°ΠΊΠ°ΠΌΠΈ, ΠΏΠΎΠΌΠ½ΠΈΡΠ΅: ΠΏΠ°ΠΊΠ΅ΡΡ sun.* Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ»ΠΈ ΡΠ°ΡΡΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ API Java, ΠΈ Π΅ΡΡΡ Π½Π΅ Π²ΠΎ Π²ΡΠ΅Ρ Π²Π΅ΡΡΠΈΡΡ Java.
Java Guruπ€ #java
π6β€4π₯4
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ classpath?
Classpath β ΡΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ Π³Π΄Π΅ ΠΈΡΠΊΠ°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ. ΠΠΎ ΡΡΠΎΠΌΡ Π°Π΄ΡΠ΅ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π½Π°ΠΉΠ΄Π΅Π½Ρ Π²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΈ. ΠΠ° ΠΌΠ΅ΡΡΠΎ ΠΏΠΎΠΈΡΠΊΠ° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² JRE ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ.
ΠΡΠΎΠΌΠ΅ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (ΠΊΠΎΠΌΠ°Π½Π΄Π° java), ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΈ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΡΡΠΈΠ»ΠΈΡ JDK, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ javac, javadoc ΠΈ Π΄ΡΡΠ³ΠΈΠ΅.
ΠΡΡΡ Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ classpath: Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΠΠ‘ CLASSPATH, ΠΈ Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ -cp (ΡΠΈΠ½ΠΎΠ½ΠΈΠΌ -classpath). ΠΡΠΎΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½Π΅Π΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β ΡΠ΅ΠΊΡΡΠ°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ.
Π ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΏΡΡΠΈ ΠΊ jar-ΡΠ°ΠΉΠ»Π°ΠΌ ΠΈ ΠΊΠΎΡΠ½Π΅Π²ΡΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ Ρ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ. ΠΡΡΠΈ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ : Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΈΠ»ΠΈ ΠΆΠ΅ ; Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ. Π§ΡΠΎΠ±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ, ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΏΡΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ» *.
ΠΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΈΠ· jar-ΡΠ°ΠΉΠ»Π° (java -jar), classpath Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½ Π² Π΅Π³ΠΎ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ΅.
Java Guruπ€ #java
Classpath β ΡΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ Π³Π΄Π΅ ΠΈΡΠΊΠ°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ. ΠΠΎ ΡΡΠΎΠΌΡ Π°Π΄ΡΠ΅ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π½Π°ΠΉΠ΄Π΅Π½Ρ Π²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΈ. ΠΠ° ΠΌΠ΅ΡΡΠΎ ΠΏΠΎΠΈΡΠΊΠ° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² JRE ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ.
ΠΡΠΎΠΌΠ΅ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (ΠΊΠΎΠΌΠ°Π½Π΄Π° java), ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΈ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΡΡΠΈΠ»ΠΈΡ JDK, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ javac, javadoc ΠΈ Π΄ΡΡΠ³ΠΈΠ΅.
ΠΡΡΡ Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ classpath: Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΠΠ‘ CLASSPATH, ΠΈ Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ -cp (ΡΠΈΠ½ΠΎΠ½ΠΈΠΌ -classpath). ΠΡΠΎΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½Π΅Π΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β ΡΠ΅ΠΊΡΡΠ°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ.
Π ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΏΡΡΠΈ ΠΊ jar-ΡΠ°ΠΉΠ»Π°ΠΌ ΠΈ ΠΊΠΎΡΠ½Π΅Π²ΡΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ Ρ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ. ΠΡΡΠΈ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ : Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΈΠ»ΠΈ ΠΆΠ΅ ; Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ. Π§ΡΠΎΠ±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ, ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΏΡΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ» *.
ΠΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΈΠ· jar-ΡΠ°ΠΉΠ»Π° (java -jar), classpath Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½ Π² Π΅Π³ΠΎ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ΅.
Java Guruπ€ #java
π₯14π5β€2