рд╕рд╣рд╛ рдорд╣рд┐рдиреНрдпрд╛рдВрдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рдирдВрддрд░, рдУрд░реЕрдХрд▓рдиреЗ Java SE 20 (Java Platform, Standard Edition 20) рдЬрд╛рд░реА рдХреЗрд▓реЗ, рдЬреЗ OpenJDK рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯрдЪрд╛ рд╕рдВрджрд░реНрдн рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдореНрд╣рдгреВрди рд╡рд╛рдкрд░ рдХрд░рддреЗ. рдХрд╛рд╣реА рдЕрдкреНрд░рдЪрд▓рд┐рдд рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рдХрд╛рдвреВрди рдЯрд╛рдХрд▓реНрдпрд╛рдЪрд╛ рдЕрдкрд╡рд╛рдж рд╡рдЧрд│рддрд╛, Java SE 20 Java рдкреНрд▓реЕрдЯрдлреЙрд░реНрдордЪреНрдпрд╛ рдорд╛рдЧреАрд▓ рд░рд┐рд▓реАрдЭрд╕рд╣ рдмреЕрдХрд╡рд░реНрдб рд╕реБрд╕рдВрдЧрддрддрд╛ рд░рд╛рдЦрддреЗ - рдмрд╣реБрддреЗрдХ рдкреВрд░реНрд╡реА рд▓рд┐рд╣рд┐рд▓реЗрд▓реЗ Java рдкреНрд░рдХрд▓реНрдк рдирд╡реАрди рдЖрд╡реГрддреНрддреА рдЕрдВрддрд░реНрдЧрдд рдЪрд╛рд▓рд╡рд▓реЗ рдЬрд╛рддрд╛рдд рддреЗрд╡реНрд╣рд╛ рдмрджрд▓рд╛рдВрд╢рд┐рд╡рд╛рдп рдХрд╛рд░реНрдп рдХрд░рддреАрд▓. Linux (x20_86, AArch64), Windows (x64_86) рдЖрдгрд┐ macOS (x64_86, AArch64) рд╕рд╛рдареА Java SE 64 (JDK, JRE рдЖрдгрд┐ Server JRE) рдЪреНрдпрд╛ рддрдпрд╛рд░-рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА-рдЗрдВрд╕реНрдЯреЙрд▓ рдмрд┐рд▓реНрдб рддрдпрд╛рд░ рдЖрд╣реЗрдд. OpenJDK рдкреНрд░рдХрд▓реНрдкрд╛рджреНрд╡рд╛рд░реЗ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗрд▓реЗ, Java 20 рд╕рдВрджрд░реНрдн рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА GPLv2 рдкрд░рд╡рд╛рдиреНрдпрд╛рдЕрдВрддрд░реНрдЧрдд рдкреВрд░реНрдгрдкрдгреЗ рдореБрдХреНрдд рд╕реНрд░реЛрдд рдЖрд╣реЗ, GNU ClassPath рдЕрдкрд╡рд╛рдж рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЙрддреНрдкрд╛рджрдирд╛рдВрд╕рд╣ рдбрд╛рдпрдиреЕрдорд┐рдХ рд▓рд┐рдВрдХрд┐рдВрдЧрд▓рд╛ рдкрд░рд╡рд╛рдирдЧреА рджреЗрддрд╛рдд.

Java SE 20 рдЪреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд░реНрдерди рдкреНрд░рдХрд╛рд╢рди рдореНрд╣рдгреВрди рд╡рд░реНрдЧреАрдХрд░рдг рдХреЗрд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ рдкреБрдвреАрд▓ рдкреНрд░рдХрд╛рд╢рди рд╣реЛрдИрдкрд░реНрдпрдВрдд рдЕрджреНрдпрддрдиреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреЗ рд╕реБрд░реВ рд░рд╛рд╣реАрд▓. рд▓рд╛рдБрдЧ рдЯрд░реНрдо рд╕рдкреЛрд░реНрдЯ (LTS) рд╢рд╛рдЦрд╛ Java SE 17 рдЕрд╕рд╛рд╡реА, рдЬреА 2029 рдкрд░реНрдпрдВрдд рдЕрдкрдбреЗрдЯреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдд рд░рд╛рд╣реАрд▓. рдЖрдореНтАНрд╣реА рддреБрдореНтАНрд╣рд╛рд▓рд╛ рд╕реНтАНрдорд░рдг рдХрд░реВрди рджреЗрддреЛ рдХреА Java 10 рдЪреНтАНрдпрд╛ рд░рд┐рд▓реАрдЭрдкрд╛рд╕реВрди рд╕реБрд░реВрд╡рд╛рдд рдХрд░реВрди, рдкреНрд░реЙрдЬреЗрдХреНрдЯ рдирд╡реАрди рдбреЗрд╡реНрд╣рд▓рдкрдореЗрдВрдЯ рдкреНрд░рдХреНрд░рд┐рдпреЗрдХрдбреЗ рд╡рд│рд▓рд╛, рдирд╡реАрди рд░рд┐рд▓реАрдЭ рддрдпрд╛рд░ рд╣реЛрдгреНтАНрдпрд╛рд╕рд╛рдареА рдПрдХ рд▓рд╣рд╛рди рдЪрдХреНрд░ рд╕реВрдЪрд┐рдд рдХрд░рддреЗ. рдирд╡реАрди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЖрддрд╛ рдПрдХрд╛ рд╕рддрдд рдЕрджреНрдпрдпрд╛рд╡рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦреЗрдд рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ, рдЬреНрдпрд╛рдордзреНрдпреЗ рддрдпрд╛рд░ рдмрджрд▓ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗрдд рдЖрдгрд┐ рдирд╡реАрди рдкреНрд░рдХрд╛рд╢рдирд╛рдВрдирд╛ рд╕реНрдерд┐рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рджрд░ рд╕рд╣рд╛ рдорд╣рд┐рдиреНрдпрд╛рдВрдиреА рд╢рд╛рдЦрд╛ рд╢рд╛рдЦрд╛ рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд.

Java 20 рдордзреАрд▓ рдирд╡реАрди рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЖрд╣реЗ:

  • рд╕реНрдХреЛрдкреНрдб рд╡реНрд╣реЕрд▓реНрдпреВрдЬрд╕рд╛рдареА рдкреНрд░рд╛рдердорд┐рдХ рд╕рдорд░реНрдерди рдЖрд╣реЗ, рдЬреНрдпрд╛рдореБрд│реЗ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдбреЗрдЯрд╛ рдереНрд░реЗрдбреНрд╕рд╡рд░ рд╕рд╛рдорд╛рдпрд┐рдХ рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ рдЖрдгрд┐ рдбреЗрдЯрд╛ рдЪрд╛рдЗрд▓реНрдб рдереНрд░реЗрдбреНрд╕ рджрд░рдореНрдпрд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдиреЗ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ (рдореВрд▓реНрдпреЗ рд╡рд╛рд░рд╢рд╛рдиреЗ рдорд┐рд│рддрд╛рдд). рдереНрд░реЗрдб-рд▓реЛрдХрд▓ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдореЗрдХреЕрдирд┐рдЭрдо рдмрджрд▓рдгреНрдпрд╛рд╕рд╛рдареА рд╕реНрдХреЛрдкреЗрдб рд╡реНрд╣реЕрд▓реНрдпреВрдЬ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реНрдпрд╛ рдЬрд╛рдд рдЖрд╣реЗрдд рдЖрдгрд┐ рдЦреВрдк рдореЛрдареНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдиреЗ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдереНрд░реЗрдбреНрд╕ (рд╣рдЬрд╛рд░реЛ рдХрд┐рдВрд╡рд╛ рд▓рд╛рдЦреЛ рдереНрд░реЗрдб) рд╡рд╛рдкрд░рддрд╛рдирд╛ рддреЗ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдо рдЖрд╣реЗрдд. рд╕реНрдХреЛрдкреЗрдб рд╡реНрд╣реЕрд▓реНрдпреВрдЬ рдЖрдгрд┐ рдереНрд░реЗрдб-рд▓реЛрдХрд▓ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдордзреАрд▓ рдореБрдЦреНрдп рдлрд░рдХ рдЕрд╕рд╛ рдЖрд╣реЗ рдХреА рдЖрдзреАрдЪреЗ рдПрдХрджрд╛ рд▓рд┐рд╣рд┐рд▓реЗрд▓реЗ рдЖрд╣реЗрдд, рднрд╡рд┐рд╖реНрдпрд╛рдд рдмрджрд▓рд▓реЗ рдЬрд╛рдК рд╢рдХрдд рдирд╛рд╣реАрдд рдЖрдгрд┐ рдХреЗрд╡рд│ рдереНрд░реЗрдбрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рдХрд╛рд▓рд╛рд╡рдзреАрд╕рд╛рдареА рдЙрдкрд▓рдмреНрдз рд░рд╛рд╣рддрд╛рдд. рдХреНрд▓рд╛рд╕ рд╕рд░реНрд╡реНрд╣рд░ { рдЕрдВрддрд┐рдо рд╕реНрдерд┐рд░ рд╕реНрдХреЛрдкрдбрд╡реНрд╣реЕрд▓реНрдпреВ CURRENT_USER = рдирд╡реАрди рд╕реНрдХреЛрдкреЗрдбрд╡реНрд╣реЕрд▓реНрдпреВ(); рд╢реВрдиреНрдп рд╕реЗрд╡рд╛ (рд╡рд┐рдирдВрддреА рд╡рд┐рдирдВрддреА, рдкреНрд░рддрд┐рд╕рд╛рдж рдкреНрд░рддрд┐рд╕рд╛рдж) { var рд╕реНрддрд░ = (рд╡рд┐рдирдВрддреА. рдЕрдзрд┐рдХреГрдд ()? рдкреНрд░рд╢рд╛рд╕рдХ : рдЕрддрд┐рдереА); var рд╡рд╛рдкрд░рдХрд░реНрддрд╛ = рдирд╡реАрди рд╡рд╛рдкрд░рдХрд░реНрддрд╛(рд╕реНрддрд░); ScopedValue.where(CURRENT_USER, user).run(() -> Application.handle(рд╡рд┐рдирдВрддреА, рдкреНрд░рддрд┐рд╕рд╛рдж)); } } рд╡рд░реНрдЧ рдбрд╛рдЯрд╛рдмреЗрд╕ рдореЕрдиреЗрдЬрд░ { DBConnection open() { var user = Server.CURRENT_USER.get(); рдЬрд░ (!user.canOpen()) рдирд╡реАрди InvalidUserException() рдЯрд╛рдХрд▓реЗ рддрд░; рдирд╡реАрди рдбреАрдмреА рдХрдиреЗрдХреНрд╢рди рдкрд░рдд рдХрд░рд╛(...); } }
  • рд░реЗрдХреЙрд░реНрдб рдХреНрд▓рд╛рд╕реЗрд╕рдЪреНрдпрд╛ рдореВрд▓реНрдпрд╛рдВрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА Java 16 рдордзреНрдпреЗ рд╕рд╛рджрд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреЕрдЯрд░реНрди рдореЕрдЪрд┐рдВрдЧ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдЪрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реВрди, рд░реЗрдХреЙрд░реНрдб рдкреЕрдЯрд░реНрдирдЪреЗ рджреБрд╕рд░реЗ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде: рд░реЗрдХреЙрд░реНрдб рдкреЙрдЗрдВрдЯ(int x, int y) {} рд╕реНрдЯреЕрдЯрд┐рдХ рд╡реНрд╣реЙрдЗрдб рдкреНрд░рд┐рдВрдЯрд╕рдо(рдСрдмреНрдЬреЗрдХреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ) { рдЬрд░ (рдСрдмреНрдЬреЗрдХреНрдЯ рдкреЙрдЗрдВрдЯ p рдЪреЗ рдЙрджрд╛рд╣рд░рдг) { int x = px(); int y = py(); System.out.println(x+y); } }
  • тАЬрд╕реНрд╡рд┐рдЪтАЭ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯреНрд╕рдордзреАрд▓ рдкреЕрдЯрд░реНрди рдореЕрдЪрд┐рдВрдЧрдЪреА рдЪреМрдереА рдкреНрд░рд╛рдердорд┐рдХ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЬреЛрдбрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ, рдЬреНрдпрд╛рдореБрд│реЗ тАЬрдХреЗрд╕тАЭ рд▓реЗрдмрд▓реЗ рдЕрдЪреВрдХ рдореВрд▓реНрдпреЗ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрдд тАЛтАЛтАЛтАЛрдирд╛рд╣реА, рдкрд░рдВрддреБ рдПрдХрд╛рдЪ рд╡реЗрд│реА рдореВрд▓реНрдпрд╛рдВрдЪреА рдорд╛рд▓рд┐рдХрд╛ рдХрд╡реНрд╣рд░ рдХрд░рдгрд╛рд░реЗ рд▓рд╡рдЪрд┐рдХ рдирдореБрдиреЗ, рдЬреНрдпрд╛рд╕рд╛рдареА рдкреВрд░реНрд╡реА рдЕрд╡рдЬрдб рд╡рд╛рдкрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреЗ. "рдЬрд░...рддрд░" рдЕрднрд┐рд╡реНрдпрдХреНрддреАрдВрдЪреА рд╕рд╛рдЦрд│реА. рд╕реНрдЯреЕрдЯрд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдлреЙрд░рдореЕрдЯрд░рдкреЕрдЯрд░реНрдирд╕реНрд╡рд┐рдЪ(рдСрдмреНрдЬреЗрдХреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ) { рд░рд┐рдЯрд░реНрди рд╕реНрд╡рд┐рдЪ (рдСрдмреНрдЬреЗрдХреНрдЯ) { рдХреЗрд╕ рдЗрдВрдЯреАрдЬрд░ i -> String.format("int %d", i); рдХреЗрд╕ рд▓рд╛рдВрдм l -> String.format("long %d", l); рдХреЗрд╕ Double d -> String.format("рдбрдмрд▓ %f", d); рдХреЗрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ s -> String.format("рд╕реНрдЯреНрд░рд┐рдВрдЧ %s", s); рдбреАрдлреЙрд▓реНрдЯ -> o.toString(); }; }
  • FFM (рдлреЙрд░реЗрди рдлрдВрдХреНрд╢рди рдЖрдгрд┐ рдореЗрдорд░реА) API рдЪреЗ рджреБрд╕рд░реЗ рдкреНрд░рд╛рдердорд┐рдХ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдмрд╛рд╣реНрдп рд▓рд╛рдпрдмреНрд░рд░реАрдВрдордзреВрди рдХреЙрд▓рд┐рдВрдЧ рдлрдВрдХреНрд╢рдиреНрд╕ рдЖрдгрд┐ JVM рдЪреНрдпрд╛ рдмрд╛рд╣реЗрд░ рдореЗрдорд░реА рдНрдХреНрд╕реЗрд╕ рдХрд░реВрди рдмрд╛рд╣реНрдп рдХреЛрдб рдЖрдгрд┐ рдбреЗрдЯрд╛рд╕рд╣ Java рдкреНрд░реЛрдЧреНрд░рд╛рдореНрд╕рдЪреЗ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рдж рдЖрдпреЛрдЬрд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ.
  • рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдереНрд░реЗрдбреНрд╕рдЪреЗ рджреБрд╕рд░реЗ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЬреЗ рд╣рд▓рдХреЗ рдереНрд░реЗрдбреНрд╕ рдЖрд╣реЗрдд рдЬреЗ рдЙрдЪреНрдЪ-рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдорд▓реНрдЯреА-рдереНрд░реЗрдбреЗрдб рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕ рд▓рд┐рд╣рд┐рдгреЗ рдЖрдгрд┐ рд░рд╛рдЦрдгреЗ рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рд╕реБрд▓рдн рдХрд░рддрд╛рдд.
  • рд╕рдВрд░рдЪрд┐рдд рд╕рдорд╛рдВрддрд░рддреЗрд╕рд╛рдареА рджреБрд╕рд░реЗ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ API рдЬреЛрдбрд▓реЗ, рдЬреЗ рд╡рд┐рд╡рд┐рдз рдереНрд░реЗрдбреНрд╕рдордзреНрдпреЗ рдЪрд╛рд▓рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдПрдХрд╛рдзрд┐рдХ рдХрд╛рд░реНрдпрд╛рдВрдирд╛ рдПрдХрд╛рдЪ рдмреНрд▓реЙрдХрдЪреНрдпрд╛ рд░реВрдкрд╛рдд рд╣рд╛рддрд╛рд│реВрди рдорд▓реНрдЯреА-рдереНрд░реЗрдбреЗрдб рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдЪрд╛ рд╡рд┐рдХрд╛рд╕ рд╕реБрд▓рдн рдХрд░рддреЗ.
  • рд╡реЗрдХреНрдЯрд░ API рдЪреЗ рдкрд╛рдЪрд╡реЗ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЬреЗ x86_64 рдЖрдгрд┐ AArch64 рдкреНрд░реЛрд╕реЗрд╕рд░рд╡рд░ рд╡реЗрдХреНрдЯрд░ рд╕реВрдЪрдирд╛ рд╡рд╛рдкрд░реВрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╡реЗрдХреНрдЯрд░ рдЧрдгрдиреЗрд╕рд╛рдареА рдХрд╛рд░реНрдпреЗ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рдЖрдгрд┐ рдПрдХрд╛рдзрд┐рдХ рдореВрд▓реНрдпрд╛рдВрд╡рд░ (SIMD) рдСрдкрд░реЗрд╢рдиреНрд╕ рдПрдХрд╛рдЪ рд╡реЗрд│реА рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ. HotSpot JIT рдХрдВрдкрд╛рдпрд▓рд░рдордзреНрдпреЗ рд╕реНрдХреЗрд▓рд░ рдСрдкрд░реЗрд╢рдиреНрд╕рдЪреНрдпрд╛ рдСрдЯреЛ-рд╡реНрд╣реЗрдХреНрдЯрд░рд╛рдпрдЭреЗрд╢рдирд╕рд╛рдареА рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХреНрд╖рдорддреЗрдЪреНрдпрд╛ рд╡рд┐рдкрд░реАрдд, рдирд╡реАрди API рд╕рдорд╛рдВрддрд░ рдбреЗрдЯрд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрд╕рд╛рдареА рд╡реЗрдХреНрдЯрд░рд╛рдпрдЭреЗрд╢рди рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдгреЗ рд╢рдХреНрдп рдХрд░рддреЗ.

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛