Π‘Π»Π΅Π΄ ΡΠ΅ΡΡ ΠΌΠ΅ΡΠ΅ΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, Oracle
Java SE 14 ΡΠ΅ ΠΊΠ»Π°ΡΠΈΡΠΈΡΠΈΡΠ° ΠΊΠ°ΡΠΎ Π²Π΅ΡΡΠΈΡ Π·Π° ΠΎΠ±ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° ΠΈ ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎ ΡΠ»Π΅Π΄Π²Π°ΡΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅. ΠΠ»ΠΎΠ½ΡΡ Π·Π° Π΄ΡΠ»Π³ΠΎΡΡΠΎΡΠ½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° (LTS) ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ Java SE 11, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎ 2026 Π³. ΠΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΡ LTS ΠΊΠ»ΠΎΠ½ Π½Π° Java 8 ΡΠ΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π΄ΠΎ Π΄Π΅ΠΊΠ΅ΠΌΠ²ΡΠΈ 2020 Π³. Π‘Π»Π΅Π΄Π²Π°ΡΠΎΡΠΎ LTS ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π΅ Π½Π°ΡΡΠΎΡΠ΅Π½ΠΎ Π·Π° ΡΠ΅ΠΏΡΠ΅ΠΌΠ²ΡΠΈ 2021 Π³. ΠΠ΅ΠΊΠ° Π²ΠΈ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΠ΅ Π·Π°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ Ρ ΠΏΡΡΠΊΠ°Π½Π΅ΡΠΎ Π½Π° Java 10, ΠΏΡΠΎΠ΅ΠΊΡΡΡ ΠΏΡΠ΅ΠΌΠΈΠ½Π° ΠΊΡΠΌ Π½ΠΎΠ² ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π° ΠΏΠΎ-ΠΊΡΠ°ΡΡΠΊ ΡΠΈΠΊΡΠ» Π·Π° ΡΠΎΡΠΌΠΈΡΠ°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ Π²Π΅ΡΡΠΈΠΈ. ΠΠΎΠ²Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π²Π΅ΡΠ΅ Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½Π° Π² Π΅Π΄ΠΈΠ½ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π³Π»Π°Π²Π΅Π½ ΠΊΠ»ΠΎΠ½, ΠΊΠΎΠΉΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π° Π³ΠΎΡΠΎΠ²ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΈ ΠΎΡ ΠΊΠΎΠΉΡΠΎ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ ΡΠ°Π·ΠΊΠ»ΠΎΠ½ΡΠ²Π°Ρ Π½Π° Π²ΡΠ΅ΠΊΠΈ ΡΠ΅ΡΡ ΠΌΠ΅ΡΠ΅ΡΠ°, Π·Π° Π΄Π° ΡΠ΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Ρ Π½ΠΎΠ²ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ.
ΠΠ°
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°
ΡΡΠ²ΠΏΠ°Π΄Π°Ρ ΠΌΠΎΠ΄Π΅Π» Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° β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.
-
Π‘ΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠ°Π½ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π·Π° Π½ΠΎΠ²Π° ΡΠΎΡΠΌΠ° Π½Π° ΠΈΠ·ΡΠ°Π·ΠΈ βΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅β Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅, ΠΊΠΎΠ΅ΡΠΎ Π½Π΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΏΠΎΡΠΎΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° βΠΏΡΠ΅ΠΊΡΡΠ²Π°Π½Π΅β, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π²ΠΈ Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠ²ΡΠ°ΡΡΡΠΈ ΡΠ΅ Π΅ΡΠΈΠΊΠ΅ΡΠΈ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π΅ ΡΠ°ΠΌΠΎ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, Π½ΠΎ ΠΈ ΠΊΠ°ΡΠΎ ΠΈΠ·ΡΠ°Π·ΡΠ²Π°Π½Π΅.var log = switch (ΡΡΠ±ΠΈΡΠΈΠ΅) {
case PLAY -> βΠΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ Π΅ Π·Π°Π΄Π΅ΠΉΡΡΠ²Π°Π» Π±ΡΡΠΎΠ½Π° Π·Π° Π²ΡΠ·ΠΏΡΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅β;
case STOP, PAUSE -> βΠΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ ΠΎΡ ΠΏΠΎΡΠΈΠ²ΠΊΠ°β;
ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ -> {
ΠΠΈΠ·ΠΎΠ²ΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ = event.toString();
LocalDateTime ΡΠ΅Π³Π° = LocalDateTime.now();
yield "ΠΠ΅ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ ΡΡΠ±ΠΈΡΠΈΠ΅" + ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ +
Β» Π²Π»Π΅Π·Π»ΠΈ Β» + ΡΠ΅Π³Π°;
}
}; - Π Π°Π·ΡΠΈΡΠ΅Π½Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°
ΡΠ΅ΠΊΡΡΠΎΠ²ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅ - Π½ΠΎΠ²Π° ΡΠΎΡΠΌΠ° Π½Π° Π½ΠΈΠ·ΠΎΠ²ΠΈ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΈ, ΠΊΠΎΡΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΡΠ΅Π΄ΠΎΠ²ΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΈ Π΄Π°Π½Π½ΠΈ Π² ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄, Π±Π΅Π· Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π΅ΠΊΡΠ°Π½ΠΈΡΠ°Π½Π΅ Π½Π° Π·Π½Π°ΡΠΈ ΠΈ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΎΡΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°Π½Π΅ Π² Π±Π»ΠΎΠΊΠ°. ΠΠ»ΠΎΠΊΡΡ Π΅ ΡΠ°ΠΌΠΊΠΈΡΠ°Π½ Ρ ΡΡΠΈ Π΄Π²ΠΎΠΉΠ½ΠΈ ΠΊΠ°Π²ΠΈΡΠΊΠΈ. Π Java 14 ΡΠ΅ΠΊΡΡΠΎΠ²ΠΈΡΠ΅ Π±Π»ΠΎΠΊΠΎΠ²Π΅ Π²Π΅ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ Π΅ΠΊΡΠ°Π½ΠΈΡΠ°ΡΠ°ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ β\sβ Π·Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΠ΅Π½ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» ΠΈ β\β Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΡΡΡ ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ ΡΠ΅Π΄ (ΠΏΡΠ΅Π½Π΅Π±ΡΠ΅Π³Π²Π°ΠΉΠΊΠΈ Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ΅Π΄ΠΎΠ²Π΅, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΡΠΏΠ΅ΡΠ°ΡΠ°ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΠ»ΡΠ³ ΡΠ΅Π΄). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ΄Π°ΠΠΈΠ· html = " Β» +
"\n\t" + " Β» +
"\n\t\t" + " \"Java 1 Π΅ ΡΡΠΊ!\" Β» +
"\n\t" + " Β» +
"\n" + " ";ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅:
ΠΠΈΠ· html = """
Β»Java 1\
Π΅ ΡΡΠΊ!
"""; - ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ Π½Π° Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ°ΡΠ° ΠΏΡΠΈ Π²ΡΠ·Π½ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΅ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΎ
NullPointerException . ΠΠΎΠΊΠ°ΡΠΎ ΠΏΠΎ-ΡΠ°Π½ΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π·Π° Π³ΡΠ΅ΡΠΊΠ° ΡΠ΅ ΠΎΡΠ½Π°ΡΡΡΠ΅ ΡΠ°ΠΌΠΎ Π΄ΠΎ Π½ΠΎΠΌΠ΅ΡΠ° Π½Π° ΡΠ΅Π΄Π°, ΡΠ΅Π³Π° ΡΠΎ ΠΎΠΏΠΈΡΠ²Π° ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΊΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π΅ ΠΏΡΠΈΡΠΈΠ½ΠΈΠ» ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΡΠΎ. ΠΠΎΠ½Π°ΡΡΠΎΡΡΠ΅ΠΌ ΡΠ°Π·ΡΠΈΡΠ΅Π½Π°ΡΠ° Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π° ΡΠ°ΠΌΠΎ ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° Ρ ΡΠ»Π°Π³Π° β-XX:+ShowCodeDetailsInExceptionMessagesβ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΠΎΡΠΎΡΠ²Π°ΡΠ΅ ΡΠΎΠ·ΠΈ ΡΠ»Π°Π³, ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π² ΡΠ΅Π΄Π°var name = user.getLocation().getCity().getName();
ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅
ΠΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π² Π½ΠΈΡΠΊΠ°ΡΠ° "main" java.lang.NullPointerException: ΠΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ° "Location.getCity()"
Π·Π°ΡΠΎΡΠΎ Π²ΡΡΠ½Π°ΡΠ°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° "User.getLocation()" Π΅ Π½ΡΠ»Π°
Π² NullPointerExample.main(NullPointerExample.java:5):5)ΠΊΠΎΠ΅ΡΠΎ ΡΡΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π°, ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΡΡ Location.getCity() Π½Π΅ Π΅ Π±ΠΈΠ» ΠΈΠ·Π²ΠΈΠΊΠ°Π½ ΠΈ User.getLocation() Π΅ Π²ΡΡΠ½Π°Π» Π½ΡΠ»Π°.
-
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΎ ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π΅Π½ ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΠΏΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° jpackage, ΠΊΠΎΡΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ Π·Π° ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»Π½ΠΈ Java ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Π΅ Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° javapackager ΠΎΡ JavaFX ΠΈ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ Π²ΡΠ² ΡΠΎΡΠΌΠ°ΡΠΈ, Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½ΠΈ Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ (msi ΠΈ exe Π·Π° Windows, pkg ΠΈ dmg Π·Π° macOS, deb ΠΈ rpm Π·Π° Linux). ΠΠ°ΠΊΠ΅ΡΠΈΡΠ΅ Π²ΠΊΠ»ΡΡΠ²Π°Ρ Π²ΡΠΈΡΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ. - ΠΡΠΌ ΡΡΠ±ΠΈΡΠ°ΡΠ° Π½Π° ΠΎΡΠΏΠ°Π΄ΡΡΠΈ G1
Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΎ Π½ΠΎΠ² ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Π·Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΊΠΎΠΉΡΠΎ ΠΎΡΡΠΈΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ°IN . ΠΠΎΠ²ΠΈΡΡ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅Π» Π½Π° ΠΏΠ°ΠΌΠ΅Ρ Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ»Π°Π³Π° β+XX:+UseNUMAβ ΠΈ ΠΌΠΎΠΆΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° NUMA ΡΠΈΡΡΠ΅ΠΌΠΈ. -
ΠΠΎΠ±Π°Π²Π΅Π½ΠΎ API Π·Π° Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π½Π° JFR (JDK Flight Recorder) ΡΡΠ±ΠΈΡΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³. -
ΠΠΎΠ±Π°Π²Π΅Π½ΠΎ jdk.nio.mapmode ΠΌΠΎΠ΄ΡΠ», ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π½ΠΎΠ²ΠΈ ΡΠ΅ΠΆΠΈΠΌΠΈ (READ_ONLY_SYNC, WRITE_ONLY_SYNC) Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ°Π½ΠΈ Π±Π°ΠΉΡΠΎΠ²ΠΈ Π±ΡΡΠ΅ΡΠΈ (MappedByteBuffer), ΠΏΡΠ΅ΠΏΡΠ°ΡΠ°ΡΠΈ ΠΊΡΠΌ Π΅Π½Π΅ΡΠ³ΠΎΠ½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠ° ΠΏΠ°ΠΌΠ΅Ρ (NVM). -
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΎ ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π΅Π½ ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° API Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΡΠΆΠ΄Π° ΠΏΠ°ΠΌΠ΅Ρ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π½Π° Java ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° Π΄Π° ΠΎΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ ΡΠΈΠ³ΡΡΠ΅Π½ ΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ΅Π³ΠΈΠΎΠ½ΠΈ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈΠ·Π²ΡΠ½ Java heap ΡΡΠ΅Π· ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈΡΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ MemorySegment, MemoryAddress ΠΈ MemoryLayout. -
ΠΠ±ΡΠ²Π΅Π½ΠΈ ΠΎΡΡΠ°ΡΠ΅Π»ΠΈ ΠΏΠΎΡΡΠΎΠ²Π΅ Π·Π° Solaris OS ΠΈ SPARC ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ (Solaris/SPARC, Solaris/x64 ΠΈ Linux/SPARC) Ρ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π·Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π° ΡΠ΅Π·ΠΈ ΠΏΠΎΡΡΠΎΠ²Π΅ Π² Π±ΡΠ΄Π΅ΡΠ΅. ΠΡΠΌΡΠ½Π°ΡΠ° Π½Π° ΡΠ΅Π·ΠΈ ΠΏΠΎΡΡΠΎΠ²Π΅ ΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π½Π° ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ° Π΄Π° ΡΡΠΊΠΎΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° OpenJDK, Π±Π΅Π· Π΄Π° Π³ΡΠ±ΠΈ Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π΅ Π½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° Solaris ΠΈ SPARC. -
ΠΠ·ΡΡΠΈΡΠΎ ΠΊΠΎΠ»Π΅ΠΊΡΠΎΡΡΡ Π·Π° Π±ΠΎΠΊΠ»ΡΠΊ CMS (Concurrent Mark Sweep), ΠΊΠΎΠΉΡΠΎ Π±Π΅ΡΠ΅ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½ ΠΊΠ°ΡΠΎ ΠΎΡΡΠ°ΡΡΠ» ΠΏΡΠ΅Π΄ΠΈ Π΄Π²Π΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΈ ΠΎΡΡΠ°Π½Π° Π½Π΅ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ (CMS Π±Π΅ΡΠ΅ Π·Π°ΠΌΠ΅Π½Π΅Π½ ΠΎΡΠ΄Π°Π²Π½Π° ΠΎΡ ΠΊΠΎΠ»Π΅ΠΊΡΠΎΡΠ° Π·Π° Π±ΠΎΠΊΠ»ΡΠΊ G1). ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°,ΠΎΠ±ΡΠ²Π΅Π½ΠΎ ΠΎΡΡ Π²ΡΡΠ»ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈ Π·Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΡΠΏΠ°Π΄ΡΡΠΈ ParallelScavenge ΠΈ SerialOld (ΠΈΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ Ρ ΠΎΠΏΡΠΈΠΈΡΠ΅ β-XX:+UseParallelGC -XX:-UseParallelOldGCβ). - ΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΡΠ±ΠΈΡΠ°ΡΠ° Π½Π° ΠΎΡΠΏΠ°Π΄ΡΡΠΈ ZGC (Z Garbage Collector) Π΅ ΠΎΡΠΈΠ³ΡΡΠ΅Π½Π° Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ macOS ΠΈ Windows (ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΡΠ΅ ΡΠ°ΠΌΠΎ Π½Π° Linux). ZGC ΡΠ°Π±ΠΎΡΠΈ Π² ΠΏΠ°ΡΠΈΠ²Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ, ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠ° Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡΡΠ°, Π΄ΡΠ»ΠΆΠ°ΡΠ° ΡΠ΅ Π½Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π±ΠΎΠΊΠ»ΡΠΊΠ°, Π΄ΠΎΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ (Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΡΠΏΠΈΡΠ°Π½Π΅ ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ZGC Π½Π΅ Π½Π°Π΄Π²ΠΈΡΠ°Π²Π° 10 ms.) ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΠΊΡΠΎ Ρ ΠΌΠ°Π»ΠΊΠΈ, ΡΠ°ΠΊΠ° ΠΈ Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΠΈ ΠΊΡΠΏΡΠΈΠ½ΠΈ, Π²Π°ΡΠΈΡΠ°ΡΠΈ ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎΡΡΠΎΡΠΈΠ½ ΠΌΠ΅Π³Π°Π±Π°ΠΉΡΠ° Π΄ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ°Π±Π°ΠΉΡΠ°.
-
ΠΡΠ΅ΠΌΠ°Ρ Π½Π°ΡΠΎ ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ ΠΈ API Π·Π° ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° JAR ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌΠ° Pack200.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru