рд╡рд┐рдХрд╛рд╕рдХреЛ рдЫ рдорд╣рд┐рдирд╛ рдкрдЫрд┐, рдУрд░реЗрдХрд▓рд▓реЗ Java SE 20 (рдЬрд╛рднрд╛ рдкреНрд▓реЗрдЯрдлрд░реНрдо, рдорд╛рдирдХ рд╕рдВрд╕реНрдХрд░рдг 20) рдЬрд╛рд░реА рдЧрд░реНтАНрдпреЛ, рдЬрд╕рд▓реЗ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд OpenJDK рдкрд░рд┐рдпреЛрдЬрдирд╛рд▓рд╛рдИ рд╕рдиреНрджрд░реНрдн рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред рдХреЗрд╣реА рдЕрдкреНрд░рдЪрд▓рд┐рдд рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рд╣рдЯрд╛рдЙрдиреЗ рдЕрдкрд╡рд╛рджрдХреЛ рд╕рд╛рде, Java SE 20 рд▓реЗ рдЬрд╛рднрд╛ рдкреНрд▓реЗрдЯрдлрд░реНрдордХреЛ рдЕрдШрд┐рд▓реНрд▓реЛ рд░рд┐рд▓реАрдЬрд╣рд░реВрд╕рдБрдЧ рдкрдЫрд╛рдбрд┐ рдЕрдиреБрдХреВрд▓рддрд╛ рдХрд╛рдпрдо рд░рд╛рдЦреНрдЫ - рдзреЗрд░реИ рдкрд╣рд┐рд▓реЗ рд▓реЗрдЦрд┐рдПрдХрд╛ рдЬрд╛рднрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВ рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдг рдЕрдиреНрддрд░реНрдЧрдд рдЪрд▓реНрджрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдмрд┐рдирд╛ рдХрд╛рдо рдЧрд░реНрдиреЗрдЫрдиреНред Java SE 20 (JDK, JRE рд░ Server JRE) рдХреЛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рддрдпрд╛рд░ рд╣реБрди рд▓рд┐рдирдХреНрд╕ (x86_64, AArch64), Windows (x86_64) рд░ macOS (x86_64, AArch64) рдХреЛ рд▓рд╛рдЧрд┐ рддрдпрд╛рд░ рдЫрдиреНред OpenJDK рдкрд░рд┐рдпреЛрдЬрдирд╛ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд, Java 20 рд╕рдиреНрджрд░реНрдн рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди GPLv2 рдЗрдЬрд╛рдЬрддрдкрддреНрд░ рдЕрдиреНрддрд░реНрдЧрдд рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╣реЛ, GNU ClassPath рдЕрдкрд╡рд╛рджрд╣рд░реВрд▓реЗ рд╡реНрдпрд╛рдкрд╛рд░рд┐рдХ рдЙрддреНрдкрд╛рджрдирд╣рд░реВрд╕рдБрдЧ рдЧрддрд┐рд╢реАрд▓ рд▓рд┐рдЩреНрдХ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред

Java SE 20 рд▓рд╛рдИ рдирд┐рдпрдорд┐рдд рд╕рдорд░реНрдерди рд░рд┐рд▓реАрдЬрдХреЛ рд░реВрдкрдорд╛ рд╡рд░реНрдЧреАрдХреГрдд рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ рдЕрд░реНрдХреЛ рд░рд┐рд▓реАрдЬ рдирднрдПрд╕рдореНрдо рдЕрджреНрдпрд╛рд╡рдзрд┐рдХрд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЬрд╛рд░реА рд░рд╣рдиреЗрдЫред рд▓рд╛рдореЛ рдЕрд╡рдзрд┐рдХреЛ рд╕рдорд░реНрдерди (LTS) рд╢рд╛рдЦрд╛ Java SE 17 рд╣реБрдиреБрдкрд░реНрдЫ, рдЬрд╕рд▓реЗ 2029 рд╕рдореНрдо рдЕрджреНрдпрд╛рд╡рдзрд┐рдХрд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЬрд╛рд░реА рд░рд╛рдЦреНрдиреЗрдЫред рд╣рд╛рдореА рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╕рдореНрдЭрдирд╛ рдЧрд░реМрдВ рдХрд┐ Java 10 рдХреЛ рд░рд┐рд▓реАрдЬрдХреЛ рд╕рд╛рде рд╕реБрд░реБ рдЧрд░реНрджреИ, рдкрд░рд┐рдпреЛрдЬрдирд╛рд▓реЗ рдирдпрд╛рдБ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рд╕реНрд╡рд┐рдЪ рдЧрд░реНрдпреЛ, рдирдпрд╛рдБ рд░рд┐рд▓реАрдЬрд╣рд░реВрдХреЛ рдЧрдардирдХреЛ рд▓рд╛рдЧрд┐ рдЫреЛрдЯреЛ рдЪрдХреНрд░рд▓рд╛рдИ рд╕рдВрдХреЗрдд рдЧрд░реНрджреИред рдирдпрд╛рдБ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЕрдм рдПрдХ рдирд┐рд░рдиреНрддрд░ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░рд┐рдПрдХреЛ рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛рдорд╛ рд╡рд┐рдХрд╕рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬрд╕рдорд╛ рддрдпрд╛рд░ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреН рд░ рдЬрд╕рдмрд╛рдЯ рдирдпрд╛рдБ рд╡рд┐рдореЛрдЪрдирд╣рд░реВ рд╕реНрдерд┐рд░ рдЧрд░реНрди рдкреНрд░рддреНрдпреЗрдХ рдЫ рдорд╣рд┐рдирд╛рдорд╛ рд╢рд╛рдЦрд╛рд╣рд░реВ рдЫрдиреНред

Java 20 рдорд╛ рдирдпрд╛рдБ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреН:

  • рддреНрдпрд╣рд╛рдБ рд╕реНрдХреЛрдкреЗрдб рдорд╛рдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рд╕рдорд░реНрдерди рдЫ, рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдбреЗрдЯрд╛рд▓рд╛рдИ рдереНрд░реЗрдбрд╣рд░реВрдорд╛ рд╕рд╛рдЭреЗрджрд╛рд░реА рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдБрджреИ рд░ рдЪрд╛рдЗрд▓реНрдб рдереНрд░реЗрдбрд╣рд░реВ (рдорд╛рдирд╣рд░реВ рдЗрдирд╣реЗрд░рд┐рдЯ рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреН) рдмреАрдЪ рдХреБрд╢рд▓рддрд╛рдкреВрд░реНрд╡рдХ рдбреЗрдЯрд╛ рдЖрджрд╛рдирдкреНрд░рджрд╛рди рдЧрд░рд┐рдиреНрдЫред рдереНрд░реЗрдб-рд╕реНрдерд╛рдиреАрдп рдЪрд░ рд╕рдВрдпрдиреНрддреНрд░рд▓рд╛рдИ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрди рд╕реНрдХреЛрдкреЗрдб рдорд╛рдирд╣рд░реВ рд╡рд┐рдХрд╕рд┐рдд рднрдЗрд░рд╣реЗрдХрд╛ рдЫрдиреН рд░ рдзреЗрд░реИ рдареВрд▓реЛ рд╕рдВрдЦреНрдпрд╛рдорд╛ рднрд░реНрдЪреБрдЕрд▓ рдереНрд░реЗрдбрд╣рд░реВ (рд╣рдЬрд╛рд░реМрдВ рд╡рд╛ рд▓рд╛рдЦреМрдВ рдереНрд░реЗрдбрд╣рд░реВ) рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ рдЕрдЭ рдкреНрд░рднрд╛рд╡рдХрд╛рд░реА рд╣реБрдиреНрдЫрдиреНред рд╕реНрдХреЛрдкреЗрдб рдорд╛рдирд╣рд░реВ рд░ рдереНрд░реЗрдб-рд╕реНрдерд╛рдиреАрдп рдЪрд░рд╣рд░реВ рдмреАрдЪрдХреЛ рдореБрдЦреНрдп рднрд┐рдиреНрдирддрд╛ рдпреЛ рд╣реЛ рдХрд┐ рдкрд╣рд┐рд▓реЗ рдПрдХ рдкрдЯрдХ рд▓реЗрдЦрд┐рдПрдХреЛ рдЫ, рднрд╡рд┐рд╖реНрдпрдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрди, рд░ рдереНрд░реЗрдбрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рдЕрд╡рдзрд┐рдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рддреНрд░ рдЙрдкрд▓рдмреНрдз рд░рд╣рдиреНрдЫред рд╡рд░реНрдЧ рд╕рд░реНрднрд░ {рдЕрдиреНрддрд┐рдо рд╕реНрдерд┐рд░ ScopedValue CURRENT_USER = рдирдпрд╛рдБ ScopedValue(); рд╢реВрдиреНрдп рд╕реЗрд╡рд╛ (рдЕрдиреБрд░реЛрдз рдЕрдиреБрд░реЛрдз, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛) { var рд╕реНрддрд░ = (рдЕрдиреБрд░реЛрдзред рдЕрдзрд┐рдХреГрдд ()? рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ: рдЕрддрд┐рдерд┐); var рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ = рдирдпрд╛рдБ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ (рд╕реНрддрд░); ScopedValue.where(CURRENT_USER, user).run(() -> Application.handle(рдЕрдиреБрд░реЛрдз, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛)); } } рдХрдХреНрд╖рд╛ рдбрд╛рдЯрд╛рдмреЗрд╕ рдкреНрд░рдмрдиреНрдзрдХ { DBConnection open() { var user = Server.CURRENT_USER.get(); рдпрджрд┐ (!user.canOpen()) рд▓реЗ рдирдпрд╛рдБ InvalidUserException(); рдирдпрд╛рдБ DBConnection рдлрд┐рд░реНрддрд╛ (...); } }
  • рд░реЗрдХрд░реНрдб рдврд╛рдБрдЪрд╛рд╣рд░реВрдХреЛ рджреЛрд╕реНрд░реЛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдердкрд┐рдПрдХреЛ рдЫ, рд░реЗрдХрд░реНрдб рд╡рд░реНрдЧрд╣рд░реВрдХреЛ рдорд╛рдирд╣рд░реВ рдкрд╛рд░реНрд╕ рдЧрд░реНрди рдЬрд╛рднрд╛ 16 рдорд╛ рдкреЗрд╢ рдЧрд░рд┐рдПрдХреЛ рдврд╛рдБрдЪрд╛ рдорд┐рд▓рд╛рди рд╕реБрд╡рд┐рдзрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░реНрджреИред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐: рд░реЗрдХрд░реНрдб рдкреЛрдЗрдиреНрдЯ(int x, int y) {} static void printSum(рд╡рд╕реНрддреБ рд╡рд╕реНрддреБ) { if (obj instance of Point 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("double %f", d); рдХреЗрд╕ рд╕реНрдЯреНрд░рд┐рдЩ s -> String.format("рд╕реНрдЯреНрд░рд┐рдЩ %s", s); рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд -> o.toString(); }; }
  • FFM (Foreign Function & Memory) API рдХреЛ рджреЛрд╕реНрд░реЛ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдердкрд┐рдПрдХреЛ рдЫ, рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдмрд╛рд╣реНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВрдмрд╛рдЯ рдХрд▓рд┐рдЩ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рд░ JVM рдмрд╛рд╣рд┐рд░ рдореЗрдореЛрд░реА рдкрд╣реБрдБрдЪ рдЧрд░реЗрд░ рдмрд╛рд╣реНрдп рдХреЛрдб рд░ рдбреЗрдЯрд╛рд╕рдБрдЧ рдЬрд╛рднрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдорд╣рд░реВрдХреЛ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред
  • рднрд░реНрдЪреБрдЕрд▓ рдереНрд░реЗрдбрд╣рд░реВрдХреЛ рджреЛрд╕реНрд░реЛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдердкрд┐рдПрдХреЛ рдЫ, рдЬреБрди рд╣рд▓реНрдХрд╛ рдереНрд░реЗрдбрд╣рд░реВ рд╣реБрдиреН рдЬрд╕рд▓реЗ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рд▓реЗрдЦреНрди рд░ рдХрд╛рдпрдо рд░рд╛рдЦреНрди рдзреЗрд░реИ рд╕рд░рд▓ рдмрдирд╛рдЙрдБрдЫред
  • рд╕рдВрд░рдЪрд┐рдд рд╕рдорд╛рдирд╛рдиреНрддрд░рдХреЛ рд▓рд╛рдЧрд┐ рджреЛрд╕реНрд░реЛ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ API рдердкрд┐рдпреЛ, рдЬрд╕рд▓реЗ рд╡рд┐рднрд┐рдиреНрди рдереНрд░реЗрдбрд╣рд░реВрдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдмрд╣реБ рдХрд╛рд░реНрдпрд╣рд░реВрд▓рд╛рдИ рдПрдХрд▓ рдмреНрд▓рдХрдХреЛ рд░реВрдкрдорд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд░реЗрд░ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рд╡рд┐рдХрд╛рд╕рд▓рд╛рдИ рд╕рд░рд▓ рдмрдирд╛рдЙрдБрдЫред
  • рднреЗрдХреНрдЯрд░ рдПрдкреАрдЖрдИрдХреЛ рдкрд╛рдБрдЪреМрдВ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдердкрд┐рдПрдХреЛ рдЫ, x86_64 рд░ AArch64 рдкреНрд░реЛрд╕реЗрд╕рд░рд╣рд░реВрдорд╛ рднреЗрдХреНрдЯрд░ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреНрд░рджрд░реНрд╢рди рдЧрд░рд┐рдПрдХрд╛ рднреЗрдХреНрдЯрд░ рдЧрдгрдирд╛рд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рдХрд╛рд░реНрдпрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджреИ рд░ рдмрд╣реБ тАЛтАЛтАЛтАЛрдорд╛рдирд╣рд░реВ (SIMD) рдорд╛ рдПрдХреИ рд╕рд╛рде рд▓рд╛рдЧреВ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред HotSpot JIT рдХрдореНрдкрд╛рдЗрд▓рд░рдорд╛ рд╕реНрдХреЗрд▓рд░ рдЕрдкрд░реЗрд╕рдирд╣рд░реВрдХреЛ рд╕реНрд╡рдд: рднреЗрдХреНрдЯреЛрд░рд╛рдЗрдЬреЗрд╢рдирдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдПрдХреЛ рдХреНрд╖рдорддрд╛рд╣рд░реВрдХреЛ рд╡рд┐рдкрд░реАрдд, рдирдпрд╛рдБ API рд▓реЗ рд╕рдорд╛рдирд╛рдиреНрддрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╢реЛрдзрдирдХрд╛ рд▓рд╛рдЧрд┐ рднреЗрдХреНрдЯреЛрд░рд╛рдЗрдЬреЗрд╢рдирд▓рд╛рдИ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрди рд╕рдореНрднрд╡ рдмрдирд╛рдЙрдБрдЫред

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди