рдЬрд╛рд╡рд╛ 14: рд░рд┐рдХреЙрд░реНрдб, рдПрдХ рдЕрдзрд┐рдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЙрджрд╛рд╣рд░рдг, рдЬреЗрдкрд░реЗрдЬ рд░реИрдкрд░, рд╕реНрд╡рд┐рдЪ рд▓реИрдореНрдмреНрдбрд╛ рдФрд░ рдЯреЗрдХреНрд╕реНрдЯ рдмреНрд▓реЙрдХ

рдпреБрдкреАрдбреАред рдЖрдЬ рдЬрд╛рд╡рд╛ 14 рдХреА рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд┐рдд рд░рд┐рд▓реАрдЬ рд╣реЛрдЧреА - рдФрд░ рднрд▓реЗ рд╣реА рдпрд╣ рдПрд▓рдЯреАрдПрд╕ рдирд╣реАрдВ рд╣реИ - рдЗрд╕рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВред рдЬрд╛рд╡рд╛ 14 рдХреБрдЫ рдШрдВрдЯреЛрдВ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ - рд▓реЗрдХрд┐рди рдЕрдм рдЖрдк рдЗрд╕реЗ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВред



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

рдЬрд╛рд╡рд╛ 14 рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рд╣реИ:

  • JEP 305. рдЙрджрд╛рд╣рд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛ рд░рд╣реА рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рд╕рдВрджрд░реНрдн рд╕реМрдВрдкрдирд╛ред
  • JEP 343. рдкреИрдХрд░ рдЬреЕрдХрдкреЗрдЬ (рдЗрдирдХреНрдпреВрдмреЗрдЯрд░)ред
  • JEP 345. G1 рдХреЗ рд▓рд┐рдП NUMA- рдЖрдзрд╛рд░рд┐рдд рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрдиред
  • JEP 349. JFR рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕реНрдЯреНрд░реАрдо рдХрд░рдирд╛ред
  • JEP 352. рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдореИрдк рдмрд╛рдЗрдЯ рдмрдлрд╝рд░реНрд╕ред
  • JEP 358. NullPointerException рдкрд░ рдЯрд┐рдкреНрд╕ред
  • рдЬреЗрдк 359. рд░рд┐рдХреЙрд░реНрдбред
  • JEP 361. рд╕реНрд╡рд┐рдЪ рд▓реИрдореНрдмрджрд╛рд╕ред
  • JEP 362. рд╕реЛрд▓рд╛рд░рд┐рд╕ рдФрд░ SPARC рдкреЛрд░реНрдЯ рдЕрдм рдбрд┐рдкреНрд░реЗрд╕реНрдб рд╣реЛ рдЧрдП рд╣реИрдВред
  • JEP 363. рдХреЙрдирдХреНрдпреВрд░реЗрдВрдЯ рдорд╛рд░реНрдХ рд╕реНрд╡реАрдк рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рдХреЛ рд╣рдЯрд╛рдирд╛ рдЬреЛ рдкрд╣рд▓реЗ рдбрд┐рдкреНрд░реЗрдХреЗрдЯреЗрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
  • JEP 364. MacOS рдкрд░ рдкреЛрд░реНрдЯрд┐рдВрдЧ ZGCред
  • JEP 365. рдкреЛрд░реНрдЯрд┐рдВрдЧ ZGC рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдПред
  • JEP 366. ParallelScavenge + SerialOld GC рдХрд╛ рд╕рдВрдпреЛрдЬрди рдЕрдм рдЪрд┐рддреНрд░рд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИред
  • JEP 367. Pack200 рд╕реЗ рдЙрдкрдХрд░рдг рдФрд░ рдПрдкреАрдЖрдИ рдХреЛ рд╣рдЯрд╛рдирд╛ (рдЬреЛ рдХрд┐ рдЬрд╛рд╡рд╛ 11 рдореЗрдВ рд╡рд╛рдкрд╕ рдЪрд┐рд╣реНрдирд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред
  • JEP 368. рдкрд╛рда рдмреНрд▓реЙрдХред
  • JEP 370. рдмрд╛рд╣рд░реА рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рдПрдкреАрдЖрдИ (рдЗрдирдХреНрдпреВрдмреЗрдЯрд░)ред

рдЖрдЗрдП рдкреНрд░рддреНрдпреЗрдХ рд╕реБрдзрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред

JEP 305. рдЙрджрд╛рд╣рд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдБрдЪ рдХреА рдЧрдИ рд╡рд╕реНрддреБ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛




рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ ClassCastException рдХреЛ рдЬреЛрдЦрд┐рдо рдореЗрдВ рдбрд╛рд▓реЗ рдмрд┐рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рдХрд╛рд░ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд╣ рдкреНрд░рдХрд╛рд░ рд╣реИ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

    private static void showNameIfToy(Object o) {
        if (o instanceof Toy) {  //,    -  Toy
            Toy t = (Toy) o;  //  
            System.out.println("Toy's name: " + t.getName());  //-   
        }
    }

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

    private static void showNameIfToy(Object o) {
        if (o instanceof Toy t) {  //      
            System.out.println("Toy's name: " + t.getName());  //     
        }
    }

рдпрд╣ рд╕рдм рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рдЙрдкрдпреЛрдЧреА рдХреИрд╕реЗ рд╣реИ, рдореИрдВ рдЖрдкрдХреЛ, рдкрд╛рдардХ рдХреЛ рдЖрдВрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реВрдВред рд╣рд╛рдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рд░реВрдк рдореЗрдВ рдпрд╣ рдирд┐рд░реНрдорд╛рдг рд╣реЛрддрд╛ рд╣реИ, рд╢рд╛рдпрдж, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 99% рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдФрд░, рд╢рд╛рдпрдж, рд╕рд░рд▓реАрдХрд░рдг рдореВрд▓ (рдпрд╛ рд╢рд╛рдпрдж рдирд╣реАрдВ) рд▓реЗ рдЬрд╛рдПрдЧрд╛ред рд╕рдордп рдмрддрд╛рдПрдЧрд╛ред

JEP 343. рдЬреЕрдХрдкреЗрдЬ рдкреИрдХрд░ (рдЗрдирдХреНрдпреВрдмреЗрдЯрд░)




рд╣рдо, рдбреЗрд╡рд▓рдкрд░, рдЧреЛрд▓реА рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧ рд╣реИрдВ, рдЖрдкрдиреЗ рд╣рдореЗрдВ рдбрд╛рд░реНрдЬрд╝рдирд┐рдХ рдХреА рд╕реНрдерд╛рдкрдирд╛ рд╕реЗ рдбрд░рд╛рдпрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ рдЬреЛ рдЬреЗрд╡реАрдПрдо рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдЬрд╛рдирдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ 3 рдмрд┐рд▓рд┐рдпрди рдорд╢реАрдиреЛрдВ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рдЬрд╛рд╡рд╛ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл 2 рдХреЛ рд░реЛрдХрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рд╕рдордп .exe рдлрд╝рд╛рдЗрд▓ рдпрджрд┐ рдЗрд╕рдореЗрдВ Windows рд╣реИ, рдпрд╛ рдХреЗрд╡рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ .app рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛ рдЦреАрдВрдЪреЗрдВ рдФрд░ рдЫреЛрдбрд╝реЗрдВ, рдЕрдЧрд░ рдпрд╣ рдПрдХ рдЦрд╕рдЦрд╕ тАЛтАЛрд╣реИ, рдФрд░ рдЗрд╕реЗ рднрд╛рдк рдирд╣реАрдВ? рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╢рд░реНрддреЗрдВ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ рддрд╛рдХрд┐ рд╡реЗ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП "рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп" рдореЗрдВ рдкреИрдХ рдХрд░реЗрдВ?

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

  • рд▓рд┐рдирдХреНрд╕: рдбрд┐рдм рдФрд░ рдЖрд░рдкреАрдПрдо
  • macOS: pkg рдФрд░ dmg
  • Windows: msi рдФрд░ exe

рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

$ jpackage --name myapp --input lib --main-jar main.jar --type exe

--name myapp - рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рднрд╡рд┐рд╖реНрдп рдХрд╛ рдирд╛рдо
--input lib - рдЬрд╛рд░ рдЖрд░реНрдХрд╛рдЗрд╡ рдХрд╛ рд╕реНрд░реЛрдд
--main-jar main.jar - рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдирд╛рдо рдЬрд┐рд╕рдореЗрдВ рдореБрдЦреНрдп рд╡рд░реНрдЧ рд╣реИ
- рдЯрд╛рдЗрдк exe - рдЬрд┐рд╕рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХреЗ рдмрд╛рдж, рдЖрдк myapp.exe (рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд┐рдВрдбреЛрдЬрд╝ рд╣реИ) рдкрд░ рдбрдмрд▓-рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ рдирд┐рдпрдорд┐рдд рд╡рд┐рдВрдбреЛрдЬрд╝ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред JavaFX рджреНрд╡рд╛рд░рд╛ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЖрдЗрдП рд╡рд┐рдВрдбреЛрдЬ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рддреЛ, рдЪрд▓рд┐рдП рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдпрд╣рд╛рдБ рд╕реЗ рд▓реЗрддреЗ рд╣реИрдВ:
https://github.com/promoscow/bouncer
GET рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╕рдордп, рд╣рдореЗрдВ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИ: "рдмрд╛рдЙрдВрд╕ рд╕рдХреНрд╕реЗрд╕" рдФрд░ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдкред

рджрдЭрд░рдирдХреА рд▓рдЧрд╛рдирд╛ред рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд░реНрдЧреАрдХреГрдд рд╣реИ, рдпрд╣ рдмрд┐рд▓реНрдб / рд▓рд┐рдмрд╛рд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реИред



рдмрд┐рд▓реНрдб рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рдЬрд╛рдПрдВ, рдЖрд╡рд╢реНрдпрдХ рдиреНрдпреВрдирддрдо рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░реЗрдВ:

jpackage --name bouncer --input libs --main-jar bouncer.jar --type exe

рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ exe-shnik рд╣реИред



рд╣рдо рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдореЗрдВ рджреЛ рдмрд╛рд░ рдкреНрд░рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдЖрд╡реЗрджрди рдХреА рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд╛рдкрдирд╛ рд╣реЛрддреА рд╣реИред
рд╡рд╛рд╣!



рдЖрд╡реЗрджрди рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкрдВрдЦреЛрдВ рдореЗрдВ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдкреНрд░реЛрдЧреНрд░рд╛рдо рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ, рдмрд╛рдЙрдВрд╕рд░ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рдЖрдк bouncer.exe рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред



JEP 345. G1 рдХреЗ рд▓рд┐рдП NUMA- рдЖрд╡рдВрдЯрд┐рдд рд╕реНрдореГрддрд┐ рдЖрд╡рдВрдЯрди


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

рдЬреА 1 рдвреЗрд░ рдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдХреНрд╖реЗрддреНрд░ рдЖрдорддреМрд░ рдкрд░ рднреМрддрд┐рдХ рдкреГрд╖реНрдареЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реЛрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмрдбрд╝реЗ рдкреГрд╖реНрдареЛрдВ (-XX: + UseLargePages) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдХрдИ рдХреНрд╖реЗрддреНрд░ рдПрдХ рднреМрддрд┐рдХ рдкреГрд╖реНрда рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдпрджрд┐ рдЖрдк JVM рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди + XX: + UseNUMA рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз NUMA рдиреЛрдбреНрд╕ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдУрд░реЗрдХрд▓ рдХрд╛ рд╡рд╛рджрд╛ рд╣реИ рдХрд┐ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рдЪреАрд▓рд╛ рдирд╣реАрдВ рд╣реИ, рд╡реЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдВрдЧреЗред

JEP 349. JFR рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдШрдЯрдирд╛рдХреНрд░рдо


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

рдпрд╣рд╛рдБ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

try (var rs = new RecordingStream()) {
  rs.enable("jdk.CPULoad").withPeriod(Duration.ofSeconds(1));
  rs.onEvent("jdk.CPULoad", event -> System.out.println(event.getFloat("machineTotal")));
  rs.start();
}

рдпрд╣ рдШрдЯрдирд╛ рд╣рд░ рд╕реЗрдХрдВрдб рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЛрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИред



JEP 358. NullPointerException рдкрд░ рдЯрд┐рдкреНрд╕


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

public class Planet {

    private List<Country> countries;
    //...
}

public class Country {

    private List<City> cities;
    //...
}

public class City {

    private String name;
    //...
}

рд╣рдордиреЗ рдЧреНрд░рд╣ рдкрд░ рд╕рднреА рд╢рд╣рд░реЛрдВ рдХреЗ рд╣реИрд╢ рдХреЛрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛:

planet.getCountries().forEach(c -> c.getCities().forEach(city -> city.hashCode()));

рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЛрдВрдиреЗ рдЦреЗрддреЛрдВ рдХреЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рдЖрд░рдВрдн рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрд╛ред рдФрд░ рдХрд┐рд╕реА рд╕рдордп рдЙрдиреНрд╣реЗрдВ NullPointerException рдорд┐рд▓реА:

Exception in thread "main" java.lang.NullPointerException
	at ru.xpendence.jep_358_nullpointerexception.Main.main(Main.java:19)

рдХрд┐рд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣рдо рдЕрд╢рдХреНрдд рд╣реИрдВ? рдЧреНрд░рд╣? рджреЗрд╢? рд╢рд╣рд░ ??? рд╣рдо рдирд╣реАрдВ рдЬрд╛рдирддреЗред рд╣рдордиреЗ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рдХреЛ рд╕рд╣реА рд░реЗрдЦрд╛ рдкрд░ рд░рдЦрд╛ рдФрд░, рдЖрд╣ рдХреЗ рд╕рд╛рде, рдбрд┐рдмреЗрдЬ рдкрд░ рдЬрд╛рдПрдВред

рдЬрд╛рд╡рд╛ 14 рдореЗрдВ, рдПрдХ NullPointerException рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реАрдкреВрд░реНрдг рд╣реИ:

Exception in thread "main" java.lang.NullPointerException: Cannot assign field "cities" because "countries" is null
     at Main.main(Main.java:21)
     ...

рдФрд░ рддреБрд░рдВрдд рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИред рджреЗрд╢ рдЕрд╢рдХреНрдд рд╣реИрдВред

JEP 359. рд░рд┐рдХреЙрд░реНрдб




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

рдбреЗрдЯрд╛ рдХреНрд▓рд╛рд╕ рдХреНрдпрд╛ рд╣реИ? рдЖрдЗрдП рдПрдХ рдирд┐рдпрдорд┐рдд POJO рд▓рд┐рдЦреЗрдВ:

public class Station {

    private String name;
    private Coordinates coordinates;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Coordinates getCoordinates() {
        return coordinates;
    }

    public void setCoordinates(Coordinates coordinates) {
        this.coordinates = coordinates;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        PlainStation that = (PlainStation) o;
        return Objects.equals(name, that.name) &&
                Objects.equals(coordinates, that.coordinates);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, coordinates);
    }

    @Override
    public String toString() {
        return "PlainStation{" +
                "name='" + name + '\'' +
                ", coordinates=" + coordinates +
                '}';
    }
}

рдпрд╣рд╛рдБ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдм рдХреБрдЫ рд╣реИ - рдЧреЗрдЯрд░реНрд╕, рд╕реЗрдЯрд░, рдЗрдХреНрд╡рд▓реНрд╕, рд╣реИрд╢рдХреЛрдб, рд╕реНрдЯреНрд░реАрдВрдЧ ... рдХрд┐рд╕реА рднреА рддрд░рд╣ рдЗрд╕ рдЕрдкрдорд╛рди рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдЪреНрдЫреЗ рд▓реЛрдЧ рд▓реЛрдореНрдмреЛрдХ рдХреЗ рд╕рд╛рде рдЖрдПред

Jetbrains рдореЗрдВ, рд╕рдорд╕реНрдпрд╛ рдХреЛ рдПрдХ рд╕рдордп рдореЗрдВ рдЕрдзрд┐рдХ рдХрдЯреНрдЯрд░рдкрдВрдереА рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдХреЛрдЯрд▓рд┐рди рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдХреЗред рд╕рднреА рдорд╛рдирдХ рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рд╡рд░реНрдЧ рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

data class Station(val name: String, val coordinates: Coordinates)

рдФрд░ рдмрд╕ред рдУрд░реЗрдХрд▓ рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдЗрд╕ рдбрд┐рдЬрд╛рдЗрди рдХреЛ рджреЗрдЦрд╛ рдФрд░ рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рдХрд┐рдпрд╛, рдХреЗрд╡рд▓ рд░рд┐рдХреЙрд░реНрдб:

public record RecordStation(String name, List<Coordinates> coordinates) {}

рдЗрд╕рдореЗрдВ рд╕реНрдЯреИрдгреНрдбрд░реНрдб рдЧреЗрдЯрд░реНрд╕, рд╕реЗрдЯрд░реНрд╕, рдЗрдХреНрд╡рд▓реНрд╕, рд╣реИрд╢рдХреЛрдб рдФрд░ рд╕реНрдЯреНрд░реАрдВрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рд╡рд░реНрдЧ IDEA 2020.1 рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

POJO рд╕реЗ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИрдВ?


  • рд░рд┐рдХреЙрд░реНрдб рдХрд┐рд╕реА рднреА рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  • рдХрдХреНрд╖рд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╕рдордп рд░рдЪрдирд╛рдХрд╛рд░ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЧрдП рд▓реЛрдЧреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдкрд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдХреЛрдИ рдЕрдиреНрдп рдХреНрд╖реЗрддреНрд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рд╣рд╛рдБ, рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдорд╛рддрд╛ рд╣реИ, рд╡реИрд╕реЗ)ред рд╕реНрдерд┐рд░ - рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  • рдлрд╝реАрд▓реНрдб рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░реВрдк рд╕реЗ рдЕрдВрддрд┐рдо рд╣реИрдВред рд╡рд╕реНрддреБрдПрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдВрддрд┐рдо рд╣реИрдВред рд╕рднреА рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде, рдЕрдореВрд░реНрдд рд╣реЛрдиреЗ рдХреА рдЕрд╕рдВрднрд╡рддрд╛ рдХреА рддрд░рд╣ред

рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдРрд╕реА рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдбреЗрдЯрд╛-рдХреНрд▓рд╛рд╕ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЗрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЬрдЯрд┐рд▓ рддрд╛рд░реНрдХрд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреЗ рд▓рд┐рдП рд╣реИ, рдФрд░ рдпрд╣ рд╕рдм рд╣реИред

JEP 361. рд▓реИрдореНрдмрдбрд╛ рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ




рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдУрд░реЗрдХрд▓ рдиреЗ рд╕реНрд╡рд┐рдЪ рдХреЛ рдХрд╕рдХрд░ рдЙрдард╛рдпрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рд░рд┐рд▓реАрдЬ рд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдПрдХ рдмрд▓реНрдХрд┐ рднрд╛рд░реА рдбрд┐рдЬрд╛рдЗрди рдерд╛, рдФрд░ рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рдерд╛:

    public static void translateDayOfWeekOld(String dayOfWeek) {
        switch (dayOfWeek) {
            case "MONDAY":
                System.out.println("");
                break;
            case "TUESDAY":
                System.out.println("");
                break;
            case "WEDNESDAY":
                System.out.println("");
                break;
            case "THURSDAY":
                System.out.println("");
                break;
            case "FRIDAY":
                System.out.println("");
                break;
            case "SATURDAY":
                System.out.println("");
                break;
            case "SUNDAY":
                System.out.println("");
                break;
            default:
                System.out.println("Day of week not found, try again with today day of week");
                String displayName = LocalDate.now().getDayOfWeek().name();
                translateDayOfWeek(displayName);
        }
    }

рдПрдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рддреАрди рд▓рд╛рдЗрдиреЗрдВ рд▓рдЧрддреА рд╣реИрдВ - рдХреЗрд╕, рдПрдХреНрд╢рди, рдмреНрд░реЗрдХред рдЕрдм, рд╕реНрд╡рд┐рдЪ рдХреА рдмрдврд╝реА рд╣реБрдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде, рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рдирд┐рд░реНрдорд╛рдг рдХреЛ рдЫреЛрдЯрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

    public static void translateDayOfWeek(String dayOfWeek) {
        switch (dayOfWeek) {
            case "MONDAY" -> System.out.println("");
            case "TUESDAY" -> System.out.println("");
            case "WEDNESDAY" -> System.out.println("");
            case "THURSDAY" -> System.out.println("");
            case "FRIDAY" -> System.out.println("");
            case "SATURDAY" -> System.out.println("");
            case "SUNDAY" -> System.out.println("");
            default -> {
                System.out.println("Day of week not found, try again with today day of week");
                String displayName = LocalDate.now().getDayOfWeek().name();
                translateDayOfWeek(displayName);
            }
        }
    }

рд╕рд╣рдордд, рдХрд╛рдлреА рдХреЙрдореНрдкреИрдХреНрдЯ, рдлреИрд╢рдиреЗрдмрд▓ рдФрд░ рд▓рдВрдмреЛрджрд░ рдХреЗ рд╕рд╛рдеред рдХреНрдпрд╛ рдпрд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИ, рдЖрдк рддрдп рдХрд░рддреЗ рд╣реИрдВред

рд╡реИрд╕реЗ, IDEA 2020.1 рдХреЛ рдкреБрд░рд╛рдиреЗ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдзреНрдпрд╛рди рд╕реЗ рдПрдХ рдирдП рддрд░реАрдХреЗ рд╕реЗ рдкреБрдирд░реНрд▓реЗрдЦрди рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред



JEP 362. рд╕реЛрд▓рд╛рд░рд┐рд╕ рдФрд░ рд╕реНтАНрдкрд╛рд░реНрдХ рдкреЛрд░реНрдЯ рдЕрдм рдбрд┐рдкреНрд░реЗрдХреНтАНрдЯреЗрдб


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

JEP 363. рдХреЙрдирдХреНрдпреВрд░реЗрдВрдЯ рдорд╛рд░реНрдХ рд╕реНрд╡реАрдк рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рдХреЛ рд╣рдЯрд╛рдирд╛ рдЬреЛ рдкрд╣рд▓реЗ рдбрд┐рдкреНрд░реЗрдХреЗрдЯреЗрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛


рд╕реАрдПрдордПрд╕ рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рдХреЛ рд╣рдЯрд╛рдиреЗ рдкрд░ рджреЛ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, 9 рд╡реАрдВ рд╡рд┐рдЬреНрдЮрдкреНрддрд┐ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереАред рдЗрд╕ рд╕рдордп рдХреЗ рджреМрд░рд╛рди, рджреЛ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╛рд╣рдХ рдирд┐рдХрд▓реЗ - ZGC рдФрд░ рд╢реЗрдирд╛рдиреНрджреЛрдЖред рдЙрд╕реА рд╕рдордп, рднрд░реЛрд╕реЗрдордВрдж рдУрд░реЗрдХрд▓ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдиреЗ рд╕реАрдПрдордПрд╕ рд╕рдорд░реНрдерди рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдбреЙрдХреНрдЯрд░ рдиреЗ рдореБрд░реНрджрд╛рдШрд░ рдХреЛ рдХрд╣рд╛ - рдлрд┐рд░ рдореБрд░реНрджрд╛рдШрд░ рдХреЛред

JEP 364, 365. рдореИрдХрдУрдПрд╕ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдкреЛрд░реНрдЯрд┐рдВрдЧ рдЬреЗрдбрдЬреАрд╕реА


рд╣рдо рдЖрдо рддреМрд░ рдкрд░ рд▓рд┐рдирдХреНрд╕ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреИрдирд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╣рдо рдЕрдХреНрд╕рд░ рд╡рд┐рдВрдбреЛрдЬ рдФрд░ рдореИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрди рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛ 14 рдиреЗ рдЬреЗрдбрдЬреАрд╕реА рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рдХреЛ рдЗрди рджреЛ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ред

JEP 366. ParallelScavenge + SerialOld GC Combination рдЕрдм рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛


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

рд╣рдореЗрдВ рдЦреБрд╢реА рдорд┐рд▓рддреА рд╣реИ, рднрд╛рдЗрдпреЛрдВред

JEP 367. рдкреИрдХрдЯ 200 рдЯреВрд▓реНрд╕ рдФрд░ рдПрдкреАрдЖрдИ рдХреЛ рд╣рдЯрд╛рдирд╛ (рдЬреЛ рдХрд┐ 11 рдЬрд╛рд╡рд╛ рдореЗрдВ рдбрд┐рдкреНрд░реЗрдХреЗрдЯреЗрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)


Pack200, unpack200 рдФрд░ API pack200 рдХреА рдмрд╛рд░реА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЖрд░рд╛рдо рдХреЗ рд▓рд┐рдП рдЖрдИред рдФрд░ рдХрд╛рд░рдг рд╣реИ рдЗрд╕ рдкреИрдХрд░ рдХреА рдЕрд╢реНрд▓реАрд▓рддрд╛ред рдПрдХ рдмрд╛рд░, рдЬрдм рдЗрдВрдЯрд░рдиреЗрдЯ рдореЙрдбреЗрдо рдерд╛ рдФрд░ рдЗрд╕рдХреА рдЧрддрд┐ 56k рдереА (рдмреВрдорд░реНрд╕ рдпрд╛рдж рд╣реИ), JDK рдХреЛ рдШрдВрдЯреЛрдВ рддрдХ рдкрдВрдк рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдерд╛ред рдПрдХ рдкреИрдХрд░ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ JDK рдХреЛ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рд╕рдордп рдХреЛ рдХрдо рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡реЗ рдПрдкреНрд▓реЗрдЯ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╕рдордп рдмреАрдд рдЧрдпрд╛, рдФрд░ рд╡рд░реНрддрдорд╛рди рдЧрддрд┐ рдкрд░, рдкреИрдХрд░ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрдХреЗрдЬ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗ:

java.util.jar.Pack200
java.util.jar.Pack200.Packer
java.util.jar.Pack200.Unpacker

рд╕рд╛рде рд╣реА jdk.pack рдореЙрдбреНрдпреВрд▓ред

JEP 368. рдкрд╛рда рдмреНрд▓реЙрдХ




рдПрдХ рд╕рдордп, рдЬрд╛рд╡рд╛ рдореЗрдВ (рдбреЗрдврд╝ рджрд░реНрдЬрди рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ) рдкрд╛рдпрдерди рдкрд░ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдкрд╛рдпрдерди рддреЗрдЬреА рд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЬрд╛рд╡рд╛ рдФрд░ рд╕реА рдЖрдИрдЯреА рдЪрд╛рд░реНрдЯ рдХреЗ рдЕрдиреНрдп рдиреЗрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реНрд╡рд╛рд╕рдкреВрд░реНрд╡рдХ рдЖрдЧреЗ рдмрдврд╝ рд░рд╣рд╛ рд╣реИ, рд╡рд╣рд╛рдВ рдЭрд╛рдВрдХрдиреЗ рдореЗрдВ рдХреБрдЫ рднреА рдЧрд▓рдд рдирд╣реАрдВ рд╣реИред рдПрдХ рд╕рдордп рдореЗрдВ, Java 9 рдиреЗ JShell рдХреЛ рдкреЗрд╢ рдХрд┐рдпрд╛ рдерд╛, рдЬреЛ рдХрд┐ рдкрд╛рдЗрдереЛрдирд┐рдпрдо рдЬреНрдпреВрдкрд┐рдЯрд░ рдХреЗ рд╕рдорд╛рди рд╣реИред рдФрд░ рдЕрдм, рдкрд╛рда рдмреНрд▓реЙрдХреЛрдВ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред

рдЬрдм рд╣рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рд╣рдо рдПрдХ рдкрдВрдХреНрддрд┐ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

String s = "";

рдЬрдм рд╣рдореЗрдВ рдПрдХ рд╕реНрд╡рд░реВрдкрд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рд╣рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
String oldHtml = "<html>\n\t<body>\n\t\t<p>Hi all!</p>\n\t</body>\n</html>";

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

        String html = """
                      <html>
                          <body>
                              <p>Hi all!</p>
                          </body>
                      </html>
                      """;

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

        String text = """
                    \
                 ,  , \
                     \
                   . \
                , ,  ! \
                  ; \
                    \
                   .
                """;

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

рджреЗрд╡рддрд╛рдУрдВ рдиреЗ рдЕрднреА рднреА рдЖрдк рдХреЛ рд╕реНрд╡рд░реНрдгрд┐рдо рджрд┐рди, рд╕реБрдирд╣рд░реА рд░рд╛рддреЗрдВ рджреА рд╣реИрдВ, рдФрд░ рдЖрдк рдкрд░ рдЪреМрдХрд╕ рдирдЬрд░ рдЖрдиреЗ рд╡рд╛рд▓реА рдХреБрдВрд╡рд╛рд░реА рд▓рдбрд╝рдХрд┐рдпреЛрдВ рдиреЗред рдЦреЗрд▓рддреЗ рд╣реИрдВ, рдЧрд╛рддреЗ рд╣реИрдВ, рд╣реЗ рджреЛрд╕реНрддреЛрдВ! рдПрдХ рдХреНрд╖рдгрднрдВрдЧреБрд░ рдЦреЛрдирд╛; рдФрд░ рддреБрдореНрд╣рд╛рд░реА рд▓рд╛рдкрд░рд╡рд╛рд╣реА рдХреА рдЦреБрд╢реА рдЖрдБрд╕реВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореИрдВ рдореБрд╕реНрдХреБрд░рд╛рддрд╛ рд╣реВрдБред


JEP 370. рдмрд╛рд╣рд░реА рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рдПрдкреАрдЖрдИ (рдЗрдирдХреНрдпреВрдмреЗрдЯрд░)


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

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


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

рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдореИрдВ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдЬреАрдердм рдкрд░ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрд▓рдЧреНрди рдХрд░ рд░рд╣рд╛ рд╣реВрдВ [рдпрд╣рд╛рдВ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ]

All Articles