2020 рдореЗрдВ рдЬрд╛рд╡рд╛ рд╕реЗ рдХреНрдпрд╛ рдЙрдореНрдореАрдж рдХрд░реЗрдВ?

2020 рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреВрд░реЗ рдЬреЛрд░реЛрдВ рдкрд░ рд╣реИ, рдЖрдЗрдП рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рд╕рд╛рд▓ рдЬрд╛рд╡рд╛ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХрд┐рди рдмрджрд▓рд╛рд╡реЛрдВ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рд╣реИред рдпрд╣ рд▓реЗрдЦ рдЬрд╛рд╡рд╛ рдФрд░ рдЬреЗрдбреАрдХреЗ рдХреЗ рдореБрдЦреНрдп рд░реБрдЭрд╛рдиреЛрдВ рдХреА рд╕реВрдЪреА рджреЗрдЧрд╛ред рдФрд░ рдореИрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдкрд╛рдардХреЛрдВ рд╕реЗ рдЬреЛрдбрд╝ рдХреЗ рд╕рд╛рде рдЦреБрд╢ рд░рд╣реВрдВрдЧрд╛ред

рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░реЗрдВ рдХрд┐ рд▓реЗрдЦ рдПрдХ рддрдереНрдп-рдЦреЛрдЬ рдЪрд░рд┐рддреНрд░ рдХрд╛ рдЕрдзрд┐рдХ рд╣реИред рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╖рдп рдкрд░ рд╡рд┐рд╡рд░рдг рд╕рдВрдмрдВрдзрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдпрд╛ рдЦреБрд▓реЗ рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рдкреНрд░рдХрд╛рд╢рдиреЛрдВ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЫрд╡рд┐

рддреЛ, рдЪрд▓реЛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЖрдкрдХреЛ рддреБрд░рдВрдд рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдирд┐рд░рд╛рд╢ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЬрд╛рд╡рд╛ рд░рд┐рд▓реАрдЬрд╝ рдЪрдХреНрд░ рдХрд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬреЛ рдПрдХ рд▓рдВрдмреЗ рд╕рдорд░реНрдерди рдХрд╛рд░реНрдпрдХреНрд░рдо (рдПрд▓рдЯреАрдЯреА) рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕ рд╕рд╛рд▓ рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рдЫреЛрдЯреЗ рд╕рдорд░реНрдерди рдЬреАрд╡рди рдЪрдХреНрд░ (рдПрд╕рдЯреАрдПрд╕) рдХреЗ рд╕рд╛рде рд░рд┐рд▓реАрдЬ рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдкрд╣рд▓реЗ рд╣рдо рдЬреЗрдбреАрдХреЗ 14 рдХреА рдЖрдЧрд╛рдореА рд░рд┐рд▓реАрдЬ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕реЗ рдорд╛рд░реНрдЪ рдХреЗ рдордзреНрдп рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рд░рд┐рд▓реАрдЬ рдЪрдХреНрд░ рдореЗрдВ, 16 JEP рдХрд╛ рджрд╛рд╡рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣рд╛рдБ рдкреВрд░реА рд╕реВрдЪреА рд╣реИ:
305:рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди (рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди)
343:рдкреИрдХреЗрдЬрд┐рдВрдЧ рдЙрдкрдХрд░рдг (рдЗрдирдХреНрдпреВрдмреЗрдЯрд░)
345:G1 рдХреЗ рд▓рд┐рдП NUMA-Aware рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди
349:JFR рдЗрд╡реЗрдВрдЯ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ
352:рдЧреИрд░-рд╡рд╛рд╖реНрдкрд╢реАрд▓ рдореИрдкреНрдб рдмрд╛рдЗрдЯ рдмрдлрд░
358:рд╕рд╣рд╛рдпрдХ NullPointerException
359:рд░рд┐рдХреЙрд░реНрдбреНрд╕ (рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди)
361:рд╕реНрд╡рд┐рдЪ рдПрдХреНрд╕рдкреНрд░реЗрд╢рдВрд╕ (рдорд╛рдирдХ)
362:рд╕реЛрд▓рд╛рд░рд┐рд╕ рдФрд░ рдПрд╕рдкреАрдПрдЖрд░рд╕реА рдкреЛрд░реНрдЯреНрд╕ рдХреЛ рдбрд┐рдкреНрд░реЗрд╕ рдХрд░реЗрдВ
363:рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рдХреЛ рд╕рдорд╡рд░реНрддреА рдорд╛рд░реНрдХ рд╕реНрд╡реАрдк (рд╕реАрдПрдордПрд╕) рдирд┐рдХрд╛рд▓реЗрдВ
364:MacOS рдкрд░ ZGC
365:рд╡рд┐рдВрдбреЛрдЬ рдкрд░ ZGC
366:рд╕рдорд╛рдирд╛рдВрддрд░рд╕реНрд╡рд╛рдЧреЗрди + рд╕реАрд░рд┐рдпрд▓рдСрдпрд▓ рдЬреАрд╕реА рдХреЙрдореНрдмрд┐рдиреЗрд╢рди рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ
367:Pack200 рдЙрдкрдХрд░рдг рдФрд░ API рдирд┐рдХрд╛рд▓реЗрдВ
368:рдкрд╛рда рдмреНрд▓реЙрдХ (рджреВрд╕рд░рд╛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди)
370:рд╡рд┐рджреЗрд╢реА рдореЗрдореЛрд░реА рдореЗрдореЛрд░реА рдПрдкреАрдЖрдИ (рдЗрдирдХреНрдпреВрдмреЗрдЯрд░)

рдЗрд╕ рд╕реВрдЪреА рдХреЗ рдХрдИ рдЬреЗрдИрдкреА рдЬреЛрдХрд░ 2019 рд╕рдореНрдореЗрд▓рди рдореЗрдВ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдЧрдП рдереЗред рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдореБрдЭреЗ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧрддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди (рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди)


рд▓рдВрдмреЗ JEP рдЖрдЦрд┐рд░рдХрд╛рд░ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдореЗрдВ рдЖ рд░рд╣рд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдПрдХ рдкреНрд░реИрдХреНрдЯрд┐рд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реИрдВ, рдЬреЛ рдХрдИ рд╕рд╛рд▓реЛрдВ рд╕реЗ рдЬрд╛рд╡рд╛ рдХреЛрдб рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЗрд╕ рджрд░реНрдж рд╕реЗ рдЧреБрдЬрд░ рдЪреБрдХреЗ рд╣реИрдВ:

if (obj instanceof String) {
    String s = (String) obj;
    System.out.println(s.toUpperCase());
}

рдпрджрд┐ рдЖрдкрдиреЗ рдХреЛрдЯрд▓рд┐рди рдореЗрдВ рднреА рдХреЛрдб рд▓рд┐рдЦрд╛ рдпрд╛ рд▓рд┐рдЦрд╛ рд╣реИ, рддреЛ рдЬрд╛рд╡рд╛ рдХреЛрдб рдХреЛ рджреЗрдЦрдиреЗ рд╕реЗ рджрд░реНрдж рдереЛрдбрд╝рд╛ рдмрджрддрд░ рд╣реИред рдПрдореНрдмрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдиреЗ рд╣рдореЗрдВ рдЬрд╛рд╡рд╛ рдореЗрдВ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рдХреЗ рдЕрдкрдиреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдкреЗрд╢ рдХрд┐рдпрд╛, рдЬрд┐рд╕рд╕реЗ рдЗрд╕ рджрд░реНрдж рдХреЛ рдХрдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрд╛рд╡рд╛ 14 рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде, рд╣рдо рдЙрджрд╛рд╣рд░рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

if (obj instanceof String s) {
   System.out.println(s.toUpperCase());
}

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрдб-рдСрди рдЗрддрдирд╛ рдореВрд▓реНрдпрд╡рд╛рди рдирд╣реАрдВ рд╣реИ - рд╣рдо рдХреЛрдб рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдмрдЪрд╛рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:

if (obj instanceof String) {
    String s = (String) obj;
    if (s.contains(тАЬprefix_тАЭ)) {
       return s.toUpperCase();
    }
}
return null;

рдпрд╣ рднрд╛рд░реА рд▓рдЧрддрд╛ рд╣реИ, рд╣реИ рдирд╛? рдЪрд▓реЛ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рдХреЗ рд╕рд╛рдеред

return (obj instanceof String s) && s.contains(тАЬprefix_тАЭ) ? s.toUpperCase() : null;

рддреЛ рдЬрд╛рд╣рд┐рд░ рд╣реИ рдпрд╣ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╣реИред рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдордп рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдмрджрд▓рддрд╛ рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореЗрд░реЗ рдЬреАрд╡рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдПрдЧрд╛ред

рд╕рд╣рд╛рдпрдХ NullPointerException


2020 рдпрд╛рд░реНрдб рдореЗрдВ рд╣реИ, рдФрд░ рдЖрдк рдЕрднреА рднреА рд▓рд┐рдЦрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ NullPointerException рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдбрд╝рд╛рди рднрд░реЗ? рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ, рдЖрдк рд╢рд╛рдпрдж рдЕрдХреЗрд▓реЗ рдирд╣реАрдВ рд╣реИрдВред Goetz Lindenmaier рдФрд░ Ralf Schmelter рдиреЗ NullPointerException (рд╡реИрдХрд▓реНрдкрд┐рдХ рдЕрднреА рднреА рд╣рдорд╛рд░реЗ рд╕рд╛рде рд╣реИ) рд╕реЗ рджреВрд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╕реБрдЭрд╛рдпрд╛, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЛрдВрдиреЗ рдЖрд╡реЗрджрди рдХреА рдбрд┐рдмрдЧрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджрд┐рдпрд╛, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕реБрд╕реНрдд рдЭреВрда рдХрд╣рд╛рдБ рд╣реИред рддреЛ, рдЖрдЗрдП рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдо рдкрд╛рдВрдЪ рдмрдЬреЗ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ ... рд░рд╛рдд рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗред рдФрд░ рд╣рдордиреЗ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрд╛ рд╣реИ:

public String getStreetFromRequest(Request request) {
   return request.getAddress().getStreet().toUpperCase();
}

рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ @Nullable рдФрд░ @Nonnull рдПрдиреЛрдЯреЗрд╢рди рдбрд╛рд▓рдирд╛ рдФрд░ рдкреНрд░реЗрд╖рд┐рдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдкрддреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднреВрд▓ рдЧрдПред NullPointerException рдорд┐рд▓рд╛ред рдЕрдкрд╡рд╛рдж рд╣рдореЗрдВ рдХреНрдпрд╛ рдмрддрд╛рддрд╛ рд╣реИ?

Exception in thread "main" java.lang.NullPointerException
	at Program.getStreetFromRequest(Program.java:10)
	at Program.main(Program.java:6)

рдХрд╛рд╢, рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рдкрдВрдХреНрддрд┐, рдПрдХ рд╡рд░реНрдЧ рдФрд░ рдПрдХ рд╕реНрдЯреИрдХ рджреЗрдЦрддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрд╢рдХреНрдд рдХрд╣рд╛рдБ рд▓реМрдЯ рдЖрдП? рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЕрдиреБрд░реЛрдз рд╣реИ? рд╢рд╛рдпрдж getAddress () рдЕрд╢рдХреНрдд рд▓реМрдЯ рдЖрдП? рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ getStreet ()? рдЦреИрд░, рдХреЙрд▓ рдЪреЗрди рдХрднреА-рдХрднреА рдЖрд╣рдд рд╣реЛрддреА рд╣реИред

рдЬреЗрдИрдкреА рд▓реЗрдЦрдХ рдПрдХ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддреЗ рд╣реИрдВ: рдЬрдм рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдХ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрд╢рдХреНрдд рдХрд╣рд╛рдВ рд▓реМрдЯ рдЖрдпрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЪрд░ / рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдирд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВред рдЖрдЗрдП рдЬрд╛рд╡рд╛ 14 рдХреЛ -XX рдХреЗ рд╕рд╛рде рдЖрдЬрд╝рдорд╛рдПрдБ: + ShowCodeDetailsInExceptionMessages рд╡рд┐рдХрд▓реНрдкред рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реЛрддреЗ рд╣реИрдВ:

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.toUpperCase()" because the return value of "Address.getStreet()" is null
	at Program.getStreetFromRequest(Program.java:10)
	at Program.main(Program.java:6)

рдЕрдм рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд░рд╛рдд рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд▓рд╛рддреА рд╣реИ (рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рд╕рдордп рдкрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ), рдФрд░ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╣рдо рдпрд╣ рднреВрд▓ рдЧрдП рдХрд┐ рдкрддрд╛ рдПрдХ рдЖрд╡рд╢реНрдпрдХ рдлрд╝реАрд▓реНрдб рдирд╣реАрдВ рд╣реИред

рд░рд┐рдХреЙрд░реНрдбреНрд╕ (рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди)


рдЕрднреА рднреА рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рде рдЧреЗрдЯрд░реНрд╕ / рд╕реЗрдЯрд░ / рдЗрдХреНрд╡рд▓ / рд╣реИрд╢рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛? рдлрд┐рд░ рдпрд╣ JEP рдЖрдкрдХреЗ рдкрд╛рд╕ рдЖ рд░рд╣рд╛ рд╣реИ!
рдбреЗрдЯрд╛ рдХрдХреНрд╖рд╛рдПрдВ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдЬреАрд╡рди рдореЗрдВ рдЕрдВрддрд┐рдо рд╕реНрдерд╛рди рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИрдВред рд╣рд░ рдмрд╛рд░ рд╣рдореЗрдВ рдпрд╛ рддреЛ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдЖрдИрдбреАрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рд╡рд░реНрдЧреЛрдВ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдпрд╛ рдЖрд╡рд╢реНрдпрдХ рддрд░реАрдХреЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдХрд▓рди-рд╕рдордп рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд▓реЛрдордмреЙрдХред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд╕рдорд╛рди рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рд╣реИрдВ:

public class Request {
    private Address address;

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
       this.address = address;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Request request = (Request) o;
        return Objects.equals(address, request.address);
    }

    @Override
    public int hashCode() {
        return Objects.hash(address);
    }

    @Override
    public String toString() {
        return "Request{" +
                "address=" + address +
                '}';
    }
}

рдпрд╛ рдРрд╕реЗ:
@Data
@AllArgsConstructor
public class Request {
    private Address address;
}

рдЬрд╛рд╡рд╛ 14 рдореЗрдВ, рдЕрдВрдмрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рджрд╕реНрдп рдбреЗрдЯрд╛ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирдП рдХреАрд╡рд░реНрдб рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╡рд░реНрдЧ рд╡рд┐рд╡рд░рдг рдпрд╛ рдПрдирдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИ, рдФрд░ рдХреЛрдЯрд▓рд┐рди рдХреЗ рд╕рдорд╛рди рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

public record Request(Address address) {
}

рд╕рднреА рд░рд┐рдХреЙрд░реНрдб рдлрд╝реАрд▓реНрдб рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рдЬреА рдФрд░ рдЕрдВрддрд┐рдо рд╕рдВрд╢реЛрдзрдХ рд╣реЛрддреЗ рд╣реИрдВред рд░рд┐рдХреЙрд░реНрдб рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рдЕрдВрддрд┐рдо рд╡рд░реНрдЧ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдмреЙрдХреНрд╕ рд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ: рдЧреЗрдЯрд░реНрд╕ рдореЗрдердбреНрд╕, рдПрдХ рдкрдмреНрд▓рд┐рдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд┐рд╡рд░рдг рдХреНрд░рдо рдореЗрдВ рд╕рднреА рд░рд┐рдХреЙрд░реНрдб рдлрд╝реАрд▓реНрдб рд╣реИрдВ, рдмрд░рд╛рдмрд░ / рд╣реИрд╢рдХреЛрдб рдФрд░ рд╕реНрдЯреНрд░реАрдВрдЧред рдЕрдкреНрд░рд┐рдп рд╕реЗ: рд╣рдо рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ рдлрд╝реАрд▓реНрдб рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ, рд╕рд┐рд╡рд╛рдп рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рдЬреЛ рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдХреЗ рдмрд╛рдж рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдХреЛрдб рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреА:

public record Request(Address address) {
   private final String anotherParameter; // compilation error
}

рдкрд╛рда рдмреНрд▓реЙрдХ (рджреВрд╕рд░рд╛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди)


рдкрд╛рда рдЦрдВрдб рдЬрд╛рд╡рд╛ 13 рдореЗрдВ рд╡рд╛рдкрд╕ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдереЗред рд╣рдордиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдореБрдбрд╝, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреА рдФрд░ рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рд╡рд╛ 13 рдХрд╛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ)ред рдирддреАрдЬрддрди, рдЬрд╛рд╡рд╛ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдиреЗ рдЯреЗрдХреНрд╕реНрдЯрдмреНрд▓реЙрдХ рдореЗрдВ рдорд╛рдореВрд▓реА рдмрджрд▓рд╛рд╡ рдХрд┐рдПред рдкрд╣рд▓реЗ, рдЕрдм рд╣рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрдХреЗрдд рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реА рдкрдВрдХреНрддрд┐ рдореЗрдВ escapesequence \ s рдбрд╛рд▓рдХрд░ рд▓рд╛рдЗрди рдХрд╣рд╛рдБ рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

public static void main(String[] args) {
        final var test = """
                This is the long text block with escape string \s
                that is really well done            \s
                """;
        System.out.println(test);
}

рдЕрдм рд╣рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рднреА рд╕реНрдкреЗрд╕ рдХреЛ \ _ рдХреЗ рдХреИрд░реЗрдХреНрдЯрд░ рдкрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рднреА рд╕реНрдкреЗрд╕ рдХреИрд░реЗрдХреНрдЯрд░ рдХреЛ \ _ рдХреЗ рдХреИрд░реЗрдХреНрдЯрд░ рдореЗрдВ рд╕реЗрд╡ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рджреВрд╕рд░реЗ, рдЕрдм рд╣рдо рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдореЗрдВ \ n рд╡рд░реНрдг рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкрд╛рда рдЦрдВрдб рдХреА рд▓рдВрдмреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд▓рдкреЗрдЯ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рдкрд░ \ _ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рд╡реЛ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

public static void main(String[] args) {
        final var test = """
                This is the long text block with escape string \
                that is really well-done functional            
                """;
System.out.println(test);

рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐ рдорд┐рд▓рддреА рд╣реИ: "рдпрд╣ рдПрд╕реНрдХреЗрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд▓рдВрдмрд╛ рдЯреЗрдХреНрд╕реНрдЯ рдмреНрд▓реЙрдХ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ"ред

рдПрдХ рдЕрдЪреНрдЫрд╛ рдЬреЛрдбрд╝, рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╛рдирдХ рдореЗрдВ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реВрдВред
рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕рдореАрдХреНрд╖рд╛ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рдЖрдЧрд╛рдореА рд╕рдореНрдореЗрд▓рдиреЛрдВ рдореЗрдВ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЪрд░реНрдЪрд╛ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреЛрдХрд░ 2019 рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВред рдХреЗрдЖрд░ рд╣реЛрд░реНрд╕реНрдЯрдореИрди рджреНрд╡рд╛рд░рд╛ "рдЬрд╛рд╡рд╛ 13 рдореЗрдВ рдФрд░ рдЙрд╕рд╕реЗ рдЖрдЧреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛" рдкрд░ рдЬреЛрдХрд░ 2019 рдХреА рдЪрд░реНрдЪрд╛ рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред

рдФрд░ рдХреБрдЫ рдФрд░ рд░реЛрдЪрдХ рдмрд╛рддреЗрдВред


рдЗрдирдХреНрдпреВрдмреЗрдЯрд░ рдореЗрдВ JEP рд╕реВрдЪреА рдореЗрдВ рджреЛ рджрд┐рд▓рдЪрд╕реНрдк рдЖрдЗрдЯрдо рд╣реИрдВред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдЙрдкрдХрд░рдг рд╣реЛрдЧрд╛ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдмрдирд╛рдПрдЧрд╛ (рдареАрдХ рд╣реИ, рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдиреГрддреНрдп рдХрд┐рдпрд╛ рдерд╛)ред Jpacker рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП msi / exe рдЗрдВрд╕реНрдЯрд╛рд▓рд░ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛, рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП macOS рдкреИрдХреЗрдЬ рдФрд░ rpm / debред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрди рджреБрд░реНрд▓рдн рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрдм рдореИрдВрдиреЗ рдбреЗрд╕реНрдХрдЯреЙрдк рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд┐рдпрд╛, рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЗрд╕ рддрдереНрдп рд╕реЗ рдкреАрдбрд╝рд┐рдд рд╣реЛрдирд╛ рдкрдбрд╝рд╛ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдорд┐рдд рдЙрдкрдХрд░рдг рдирд╣реАрдВ рдерд╛ред

рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ рдЖрд╢рд╛рдЬрдирдХ "рд╡рд┐рджреЗрд╢реА-рдореЗрдореЛрд░реА" рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдирдпрд╛ рдПрдкреАрдЖрдИ рд╣реИ, рдЕрд░реНрдерд╛рдд рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХреА рдореВрд▓ рдпрд╛ рд▓рдЧрд╛рддрд╛рд░ рд╕реНрдореГрддрд┐ред рдпрд╣ рдПрдкреАрдЖрдИ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЬрд╛рд╡рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рдпрд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдирд┐рд░реНрдорд╛рддрд╛рдУрдВ рдЬреИрд╕реЗ рдХрд┐ рдиреЗрдЯреНрдЯреА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред рд╡реЗ, рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рдмрд╛рдЗрдЯрдмрдлрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдСрдл-рд╣реАрдк рдХреЗ рд╕рд╛рде рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬ рдЦреБрд╢реА рдФрд░ рд╣рддрд╛рд╢рд╛


рд╕рд┐рддрдВрдмрд░ рдореЗрдВ, рд╣рдо рдирдВрдмрд░ 15 рдкрд░ рдПрдХ рдФрд░ рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рд╕рдорд░реНрдерди рд░рд┐рд▓реАрдЬ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЬреЗрдИрдкреА рдХреА рд╕реВрдЪреА рдЬрд┐рд╕реЗ рдЕрдВрддрд┐рдо рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЕрднреА рднреА рдЦреБрд▓рд╛ рд╣реИред рдЕрдм рддрдХ, рдЖрдк рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдФрд░ рдЖрднрд╛рд╕реА рдорд╢реАрди рдореЗрдВ, рднрд╛рд╖рд╛ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмрджрд▓рд╛рд╡ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрдореНрдореАрджрд╡рд╛рд░реЛрдВ рдХреА рд╕реВрдЪреА рдпрд╣рд╛рдВ рджреА рдЧрдИ рд╣реИ (рдЗрд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ: рдмрдЧрд╕реЛрдкреЗрдирдЬреНрдбрдХ ред Java.net/secure/Dashboard.jspa?selectPageId=19114 ):
111:Additional Unicode Constructs for Regular Expressions
116:Extended Validation SSL Certificates
134:Intuitive Semantics for Nested Reference Objects
152:Crypto Operations with Network HSMs
198:Light-Weight JSON API
218:Generics over Primitive Types
300:Augment Use-Site Variance with Declaration-Site Defaults
301:Enhanced Enums
302:Lambda Leftovers
303:Intrinsics for the LDC and INVOKEDYNAMIC Instructions
306:Restore Always-Strict Floating-Point Semantics
338:Vector API (Incubator)
339:Compiler Intrinsics for Java SE APIs
348:Compiler Intrinsics for Java SE APIs
356:Enhanced Pseudo-Random Number Generators
360:Sealed Types (Preview)
371:Hidden Classes

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реВрдЪреА рдореЗрдВ рдЕрднреА рднреА рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЪреАрдЬреЗрдВ рдирд╣реАрдВ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд▓реВрдо рд╣реИред рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд╕рдорд╛рдирддрд╛ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╣рд╛рд▓ рдХреЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп рд░рд╣рд╛ рд╣реИред рдХреЛрд░рд╛рдЯрд╛рдЗрди рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдорд╣рд╛рди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрдЯрд▓рд┐рди (рдХреЛрд░рд╛рдЙрдЯрд╛рдЗрдиреНрд╕) рдФрд░ рдЧреЛ (рдЧреЛрд░рдЖрдЙрдЯ)ред рдЬрд╛рд╡рд╛ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд╕рдорд╛рдирддрд╛ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреА рднреА рдЦреЛрдЬ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд╣рд▓реЗ рдкрд░рд┐рдгрд╛рдо рд╣реИрдВред рдЕрднреА рдХреЗ рд▓рд┐рдП, рдЖрдк рдХреЗрд╡рд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдЬреЗрдбреАрдХреЗ рд╕рдВрдХрд▓рди рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдХ рдмрд╣реБрдд рд╣реА рдЖрд╢рд╛рдЬрдирдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд▓реНрд▓рд╛рд╣ рднреА рдЕрднреА рддрдХ рд╣рдореЗрдВ рдХрд┐рд╕реА рднреА рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХреЗ рд╕рд╛рде рдЦреБрд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд░рд┐рдкреЛрд░реНрдЯ рдЬреЛрдХрд░ 2019 ("рдХреНрдпрд╛ рдЬрд╛рд╡рд╛ рдХреЛ" рдЗрдирд▓рд╛рдЗрди "рдкреНрд░рдХрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рд╕реЗрд░реНрд▓реА рдХреБрдХреНрд╕реЗрдВрдХреЛ рджреНрд╡рд╛рд░рд╛ рд╡реЗрд▓рд╣рд╛рд▓рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдкреНрд░рджрд░реНрд╢рди рдЗрдВрдЬреАрдирд┐рдпрд░ рдХрд╛ рдПрдХ рд╕рдВрдХреАрд░реНрдг рджреГрд╖реНрдЯрд┐рдХреЛрдг)ред

рд╕реВрдЪреА рдореЗрдВ рдХреНрдпрд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

рдЖрдкрдХреА рдЖрдВрдЦ рдХреЛ рдкрдХрдбрд╝рдиреЗ рд╡рд╛рд▓реА рдкрд╣рд▓реА рдЪреАрдЬ JSON рдПрдкреАрдЖрдИ рд╣реИред рдкреНрд░рд╢реНрди рддреБрд░рдВрдд рдЙрдарддрд╛ рд╣реИ - рдХреНрдпреЛрдВ? рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреЛрдИ рдирд┐рд╢реНрдЪрд┐рдд рдЙрддреНрддрд░ рдирд╣реАрдВ рд╣реИред рдкреНрд░реЗрд░рдгрд╛ рдкрд░ JEP рдЕрдиреБрднрд╛рдЧ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ JSON рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдХ рдмрди рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЕрдм JSON рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ SE рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ (рднрд▓реЗ рд╣реА JSON рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдПрдХ рдЯрди рд╣реЛ)ред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рдХреЛрд░ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рднрд╛рд░реА рдЬреИрдХреНрд╕рди рдХреЛ рдЦреБрдж рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреЗ рдмрд┐рдирд╛ рдмрдВрдбрд▓ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдореБрдЭреЗ рдХреЛрдИ рдЕрдиреНрдп рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдбреЗрдЯрд╛рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рднреА рдирд╣реАрдВ рд╣реЛрдЧреАред

рд╣рдо рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдПрдкреАрдЖрдИ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрдИ рд╕реБрдзрд╛рд░ рднреА рджреЗрдЦрддреЗ рд╣реИрдВред рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, JDK рдбреЗрд╡рд▓рдкрд░реНрд╕ EVSSL рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдХрд░ SSL рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЬрд╛рд╡рд╛ рдореЗрдВ рдЗрд╕ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдИрд╡реА рдкреНрд░рдорд╛рдг рдкрддреНрд░ (рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕рддреНрдпрд╛рдкрди) рджреНрд╡рд╛рд░рд╛ рдПрдХ рдПрд╕рдПрд╕рдПрд▓ рдХрдиреЗрдХреНрд╢рди рдкрд░ рднрд░реЛрд╕рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдИрд╡реАрдПрд╕рдПрд╕рдПрд▓ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдПрдХ рдирдпрд╛ рдПрдбреАрдбреАрдПрд╕рдП рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рднреА рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдПрдЪрдПрд╕рдПрдо рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХреЗ рд╕рддреНрдпрд╛рдкрди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рднрд╛рд╖рд╛ рдХреА рдЪреАрдЬреЛрдВ рд╕реЗ, рдореИрдВ рдЖрджрд┐рдо рдкрд░ рдЬреЗрдирд░рд┐рдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░реВрдВрдЧрд╛ред рд╣рд░ рдХреЛрдИ рдЬрд┐рд╕рдиреЗ рдХрднреА C # рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЬрд╛рд╡рд╛ рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рд╣реИ, рд╢рд╛рдпрдж рдпрд╣ рд╕рд╡рд╛рд▓ рдкреВрдЫ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдкреНрд░рд╛рдЗрдорд░реА рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЙрддреНрддрд░ рд╕рд░рд▓ рд╣реИ - рдЬреЗрдирд░рд┐рдХ рдХреЗрд╡рд▓ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЖрджрд┐рдо рд╡рд╕реНрддреБрдПрдВ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрд▓рд╛рд╕ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред рдпрд╣ рдкрд╣рд▓рд╛ рд╡рд░реНрд╖ рдирд╣реАрдВ рд╣реИ рдЬрдм рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдпреБрджреНрдз рдЫрд┐рдбрд╝ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдмреНрд░рд╛рдпрди рдЧреЛрдПрдЯреНрдЬрд╝ рдлрд┐рд░ рд╕реЗ рдЗрд╕ рдкрд░ рд▓реМрдЯ рд░рд╣реЗ рд╣реИрдВред рдЕрдм рддрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВ рд╣реИред рдХрд╛рд░реНрдп рд╕реНрдкрд╖реНрдЯ рд╣реИ - рд╕реВрдЪреА рдЬреИрд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдордп рднреА 13 рдЦреБрд▓реЗ рдкреНрд░рд╢реНрди рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдпрд╣ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреИрд╕реЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдЧреАред

рдФрд░ рдЖрдЦрд┐рд░реА рдЪреАрдЬ рдЬрд┐рд╕реЗ рдореИрдВ рдЫреВрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд╡рд╣ рд╣реИ рд╕реАрд▓ рдХрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░ред рдпрд╣ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдЕрдЧрд▓рд╛ рдХрджрдо рд╣реИред рд╕реАрд▓ рдкреНрд░рдХрд╛рд░ рдПрдХ рднрд╛рд╖рд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИ рдЬреЛ рд╕реАрд▓ (рд╕рдВрд╢реЛрдзрдХ) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╡рд░реНрдЧ рдпрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП рдХреАрд╡рд░реНрдб рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рд╕реАрд▓рдмрдВрдж рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рд╡рдВрд╢рдЬреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХреЗрд╡рд▓ рдЙрди рд╡рд░реНрдЧреЛрдВ рддрдХ рд╕реАрдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдкрд░рдорд┐рдЯ (рдПрдХ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рддрд┐рдмрдВрдз) рдпрд╛ рдПрдХ рд╣реА рд╕рдВрдХрд▓рди рдЗрдХрд╛рдИ (рдлрд╝рд╛рдЗрд▓) рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИрдВред рдПрдХ рд╕реАрд▓ рд╡рд░реНрдЧ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╡рд┐рд╡рд░рдг:

// 
public abstract sealed class Base {
   public static class ChildA extends Base{}
   public static class ChildB extends Base{}
}

// 
public sealed interface BaseInterface permits ChildC, ChildD{
}

//  
public class ChildC implements BaseInterface {
}
//  
public class ChildD implements BaseInterface {
}

рд╕реАрд▓рдмрдВрдж рд╕рдВрд╢реЛрдзрдХ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рд╕реАрдорд┐рдд рд╕реАрдорд┐рдд рд╡рдВрд╢рдЬ рд╣реА рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрди рд╡рд░реНрдЧреЛрдВ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рдХреЗ рд╕рд╛рде рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рд╛рди рдЙрдореНрдореАрджрд╡рд╛рд░ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


рд╣рдордиреЗ рдЗрд╕ рд╡рд░реНрд╖ рдЬреЗрдбреАрдХреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдХреЛ рджреЗрдЦрд╛ред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╢реВрдЯ рдХрд░реЗрдВрдЧреЗ, рдХреБрдЫ рдирд╣реАрдВред рд▓реЗрдХрд┐рди рдирдП JDK рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ, рдореИрдВ рдирдП рдЫреЛрдЯреЗ (рдпрд╛ рдРрд╕рд╛ рдирд╣реАрдВ) рдЕрдиреБрдХреВрд▓рди рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдореБрдлреНрдд рдореЗрдВ рд╣рд░ рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде рддреЗрдЬреА рд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВред рдФрд░ рдпрджрд┐ рдЖрдк рдЕрдВрддрд┐рдо рдЬреЛрдХрд░ 2019 рдкрд░ рдереЗ рдФрд░ рдЯреИрдЧрд┐рд░ рд╡рд▓реЗрд╡ рдЬрд╛рд╡рд╛ 9-14 рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рджреМрд░рд╛ рдХрд┐рдпрд╛: рдЫреЛрдЯреА рдЕрдиреБрдХреВрд▓рди, рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдореЗрд░реА рддрд░рд╣, рдЖрдк рдЙрд╕ рдХрд╛рдо рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдереЗ рдЬреЛ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛ рдЬреЗрдбреАрдХреЗ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ JEP рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рд╣рд░ рджрд┐рди рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдЕрдЪреНрдЫрд╛ рдЬрд╛рд╡рд╛ рд╣рдо рд╕рднреА рдХреЗ рд▓рд┐рдП рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИред рдирдИ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЕрдиреНрд╡реЗрд╖рдг рдХрд░реЗрдВ, рд╕рдореНрдореЗрд▓рдиреЛрдВ рдореЗрдВ рдЬрд╛рдПрдВ рдФрд░ рд░реБрдЭрд╛рдиреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред

All Articles