ΠΠΎ ΡΠ΅ΡΡ ΠΌΠ΅ΡΠ΅ΡΠΈ ΡΠ°Π·Π²ΠΎΡ, 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 Π·Π°ΠΏΠΈΡΠΈ = group.getEntries();
}Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π±Π΅Π· Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΠ°ΡΠ° βΠΡΡΠΏΠ½Π° Π³ΡΡΠΏΠ° = (ΠΡΡΠΏΠ°) objβ:
if (obj instanceof Group group) {
var Π·Π°ΠΏΠΈΡΠΈ = group.getEntries();
} - ΠΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Π½ΠΎΠ²ΠΈΠΎΡ ΠΊΠ»ΡΡΠ΅Π½ Π·Π±ΠΎΡ "
ΡΠ΅ΠΊΠΎΡΠ΄ ", ΠΊΠΎΡ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½Π° ΡΠΎΡΠΌΠ° Π·Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ΅ ΠΊΠ»Π°ΡΠΈ, ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°ΡΡΠΈ Π²ΠΈ Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΡΠ΅ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ equals(), hashCode() ΠΈ toString() Π²ΠΎ ΡΠ»ΡΡΠ°ΠΈ ΠΊΠΎΠ³Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ ΡΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°Π°Ρ ΡΠ°ΠΌΠΎ Π²ΠΎ ΠΏΠΎΠ»ΠΈΡΠ° ΡΠΈΠ΅ ΠΎΠ΄Π½Π΅ΡΡΠ²Π°ΡΠ΅ Π½Π΅ ΡΠ΅ ΠΌΠ΅Π½ΡΠ²Π°. ΠΠΎΠ³Π° ΠΊΠ»Π°ΡΠ°ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ equals(), hashCode() ΠΈ toString(), ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ Π±Π΅Π· Π½ΠΈΠ²Π½Π° Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΠ°:ΡΠ°Π²Π½Π° Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ° Π½Π° Π±Π°Π½ΠΊΠ°ΡΡΠΊΠ° ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΡΠ° (Π»ΠΎΠΊΠ°Π»Π΅Π½ Π΄Π°ΡΡΠΌ,
Π΄Π²ΠΎΡΠ½Π° ΡΡΠΌΠ°
ΠΠΏΠΈΡ Π½Π° Π½ΠΈΠ·Π°ΡΠ°) {}ΠΠ²Π°Π° Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ ΡΠ΅ Π΄ΠΎΠ΄Π°Π΄Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ equals(), hashCode() ΠΈ toString() ΠΏΠΎΠΊΡΠ°Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈ getter.
-
Π‘ΡΠ°Π½Π΄Π°ΡΠ΄ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΈ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎ Π΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Π½ΠΎΠ²Π° ΡΠΎΡΠΌΠ° Π½Π° ΠΈΠ·ΡΠ°Π·ΠΈ βΠΏΡΠ΅ΠΊΠΈΠ½ΡΠ²Π°Ρβ, ΡΡΠΎ Π½Π΅ Π±Π°ΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΡ βΠΏΡΠ΅ΠΊΠΈΠ½β, Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈ ΠΎΠ·Π½Π°ΠΊΠΈ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π½Π΅ ΡΠ°ΠΌΠΎ Π²ΠΎ ΡΠΎΡΠΌΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, ΡΡΠΊΡ ΠΈ ΠΊΠ°ΠΊΠΎ ΠΈΠ·ΡΠ°Π·ΡΠ²Π°ΡΠ΅.var log = ΠΏΡΠ΅ΠΊΠΈΠ½ΡΠ²Π°Ρ (Π½Π°ΡΡΠ°Π½) {
ΡΠ»ΡΡΠ°Ρ PLAY -> βΠΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ Π³ΠΎ Π°ΠΊΡΠΈΠ²ΠΈΡΠ° ΠΊΠΎΠΏΡΠ΅ΡΠΎ Π·Π° ΡΠ΅ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡΠ°β;
ΡΠ»ΡΡΠ°Ρ Π‘Π’ΠΠ, ΠΠΠ£ΠΠ -> βΠΠ° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ ΠΌΡ ΡΡΠ΅Π±Π° ΠΏΠ°ΡΠ·Π°β;
ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎ -> {
Π‘ΡΡΠΈΠ½Π³ ΠΏΠΎΡΠ°ΠΊΠ° = Π½Π°ΡΡΠ°Π½.toString();
LocalDateTime now = LocalDateTime.now();
Π΄Π°Π²Π° βΠΠ΅ΠΏΠΎΠ·Π½Π°Ρ Π½Π°ΡΡΠ°Π½β + ΠΏΠΎΡΠ°ΠΊΠ° +
Β» Π½Π°ΡΠ°Π²Π΅Π½ΠΈ Β» + ΡΠ΅Π³Π°;
}
}; - ΠΡΠΎΡΠΈΡΠ΅Π½Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ°
ΡΠ΅ΠΊΡΡΡΠ°Π»Π½ΠΈ Π±Π»ΠΎΠΊΠΎΠ²ΠΈ - Π½ΠΎΠ²Π° ΡΠΎΡΠΌΠ° Π½Π° Π±ΡΠΊΠ²Π°Π»Π½ΠΈ ΠΆΠΈΡΠΈ ΡΡΠΎ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° Π²ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅Π»ΠΈΠ½ΠΈΡΠΊΠΈ ΡΠ΅ΠΊΡΡΡΠ°Π»Π½ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΠΎ ΠΈΠ·Π²ΠΎΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄ Π±Π΅Π· ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° Π±Π΅Π³ΡΡΠ²ΠΎ Π½Π° Π·Π½Π°ΡΠΈ ΠΈ Π·Π°ΡΡΠ²ΡΠ²Π°ΡΠ΅ Π½Π° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΎΡΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠ΅ΠΊΡΡΠΎΡ Π²ΠΎ Π±Π»ΠΎΠΊΠΎΡ. ΠΠ»ΠΎΠΊΠΎΡ Π΅ Π²ΡΠ°ΠΌΠ΅Π½ ΡΠΎ ΡΡΠΈ Π΄Π²ΠΎΡΠ½ΠΈ Π½Π°Π²ΠΎΠ΄Π½ΠΈΡΠΈ. ΠΠΎ Java 14, ΡΠ΅ΠΊΡΡΡΠ°Π»Π½ΠΈΡΠ΅ Π±Π»ΠΎΠΊΠΎΠ²ΠΈ ΡΠ΅Π³Π° ΡΠ° ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π°Π°Ρ ΡΠ΅ΠΊΠ²Π΅Π½ΡΠ°ΡΠ° Π·Π° Π±Π΅Π³ΡΡΠ²ΠΎ β\sβ Π·Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ΅ Π½Π° Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ ΠΏΡΠΎΡΡΠΎΡ ΠΈ β\β Π·Π° ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ ΡΠΎ ΡΠ»Π΅Π΄Π½Π°ΡΠ° Π»ΠΈΠ½ΠΈΡΠ° (ΠΈΠ³Π½ΠΎΡΠΈΡΠ°ΡΠ΅ Π½Π° Π½ΠΎΠ²ΠΈΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ ΠΊΠΎΠ³Π° ΡΡΠ΅Π±Π° Π΄Π° ΠΈΡΠΏΠ΅ΡΠ°ΡΠΈΡΠ΅ ΠΌΠ½ΠΎΠ³Ρ Π΄ΠΎΠ»Π³Π° Π»ΠΈΠ½ΠΈΡΠ°). ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ΄ΠΠΈΠ·Π° html = " Β» +
"\n\t" + " Β» +
"\n\t\t" + " \"Java 1 Π΅ ΡΡΠΊΠ°!\" Β» +
"\n\t" + " Β» +
"\n" + " ";ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°Π²Π΅Π΄Π΅ΡΠ΅:
ΠΠΈΠ·Π° html = """
Β»ΠΠ°Π²Π° 1\
Π΅ ΡΡΠΊΠ°!
"""; - ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½Π°ΡΠ° ΡΠΎΠ΄ΡΠΆΠΈΠ½Π° Π½Π° Π΄ΠΈΡΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° ΠΊΠΎΠ³Π° ΠΈΠΌΠ° ΠΈΡΠΊΠ»ΡΡΠΎΡΠΈ Π΅ ΠΏΡΠΎΡΠΈΡΠ΅Π½Π°
NullPointerException . ΠΠΎΠ΄Π΅ΠΊΠ° ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΡΠ°ΠΊΠ°ΡΠ° Π·Π° Π³ΡΠ΅ΡΠΊΠ° ΡΠ΅ ΠΎΠ΄Π½Π΅ΡΡΠ²Π°ΡΠ΅ ΡΠ°ΠΌΠΎ Π½Π° Π±ΡΠΎΡΠΎΡ Π½Π° Π»ΠΈΠ½ΠΈΡΠ°ΡΠ°, ΡΠ΅Π³Π° ΡΠ°Π° Π΄Π΅ΡΠ°Π»ΠΈΠ·ΠΈΡΠ° ΠΊΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π³ΠΎ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°Π» ΠΈΡΠΊΠ»ΡΡΠΎΠΊΠΎΡ. ΠΠ°ΠΏΡΠ΅Π΄Π½Π°ΡΠ° Π΄ΠΈΡΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»Π½ΠΎ Π΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½Π° ΡΠ°ΠΌΠΎ ΠΊΠΎΠ³Π° Π΅ ΡΡΠ°ΡΡΡΠ²Π°Π½Π° ΡΠΎ ΠΎΠ·Π½Π°ΠΊΠ°ΡΠ° β-XX:+ShowCodeDetailsInExceptionMessagesβ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΎΠ΄ΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΠΎΠ²Π° Π·Π½Π°ΠΌΠ΅, ΠΈΡΠΊΠ»ΡΡΠΎΠΊ Π²ΠΎ Π»ΠΈΠ½ΠΈΡΠ°ΡΠ°var ΠΈΠΌΠ΅ = user.getLocation().getCity().getName();
ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠΈΡΠ° ΡΠΎ ΠΏΠΎΡΠ°ΠΊΠ°
ΠΡΠΊΠ»ΡΡΠΎΠΊ Π²ΠΎ Π½ΠΈΠ·Π°ΡΠ° βΠ³Π»Π°Π²Π½Π°β 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). ΠΠ°ΠΊΠ΅ΡΠΈΡΠ΅ Π³ΠΈ Π²ΠΊΠ»ΡΡΡΠ²Π°Π°Ρ ΡΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ. - ΠΠΎ ΡΠΎΠ±ΠΈΡΠ°ΡΠΎΡ Π½Π° ΡΡΠ±ΡΠ΅ Π1
Π΄ΠΎΠ΄Π°Π΄Π΅ Π½ΠΎΠ² ΠΌΠ΅Ρ Π°Π½ΠΈΠ·Π°ΠΌ Π·Π° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π±Π° Π½Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° ΠΊΠΎΡ Π³ΠΈ Π·Π΅ΠΌΠ° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠΈΡΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ°ΠΠΠΠ . ΠΠΎΠ²ΠΈΠΎΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ²Π°Ρ Π½Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ° Π΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΡΠΎ ΠΎΠ·Π½Π°ΠΊΠ°ΡΠ° β+XX:+UseNUMAβ ΠΈ ΠΌΠΎΠΆΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° Π³ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π½Π° NUMA ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅. -
ΠΠΎΠ΄Π°Π΄Π΅Π½ΠΎ API Π·Π° ΡΠ»Π΅Π΄Π΅ΡΠ΅ Π²ΠΎ Π»Π΅Ρ Π½Π° Π½Π°ΡΡΠ°Π½ΠΈ JFR (JDK Flight Recorder), Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½ΠΎ ΡΠ»Π΅Π΄Π΅ΡΠ΅. -
ΠΠΎΠ΄Π°Π΄Π΅Π½ΠΎ jdk.nio.mapmode ΠΌΠΎΠ΄ΡΠ», ΠΊΠΎΡ Π½ΡΠ΄ΠΈ Π½ΠΎΠ²ΠΈ ΡΠ΅ΠΆΠΈΠΌΠΈ (READ_ONLY_SYNC, WRITE_ONLY_SYNC) Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΌΠ°ΠΏΠΈΡΠ°Π½ΠΈ Π±Π°ΡΡΠΈ Π±Π°ΡΠ΅ΡΠΈ (MappedByteBuffer) ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΡΠ°ΡΠ΅ Π½Π° Π½Π΅ΠΈΡΠΏΠ°ΡΠ»ΠΈΠ²Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ° (NVM). -
ΠΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½ ΠΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΠΠΠ-ΡΠΎ Π·Π° ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ ΡΡΡΠ°Π½ΡΠΊΠΈ ΠΌΠ΅ΠΌΠΎΡΠΈΠΈ, ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°ΡΡΠΈ ΠΈΠΌ Π½Π° Java-Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎ ΠΈ Π΅ΡΠΈΠΊΠ°ΡΠ½ΠΎ Π΄Π° ΠΏΡΠΈΡΡΠ°ΠΏΡΠ²Π°Π°Ρ Π΄ΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠΊΠΈΡΠ΅ ΡΠ΅Π³ΠΈΠΎΠ½ΠΈ Π½Π°Π΄Π²ΠΎΡ ΠΎΠ΄ ΠΠ°Π²Π° ΠΊΡΠΏΠΎΡ ΡΠΎ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°ΡΠ΅ ΡΠΎ Π½ΠΎΠ²ΠΈΡΠ΅ Π°ΠΏΡΡΡΠ°ΠΊΡΠΈΠΈ Π½Π° 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