Java SE 22 рдкреНрд▓реЕрдЯрдлреЙрд░реНрдордЪреЗ рдкреНрд░рдХрд╛рд╢рди рдЖрдгрд┐ OpenJDK 22 рдЦреБрд▓реЗ рд╕рдВрджрд░реНрдн рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА

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

Java SE 22 рдирд┐рдпрдорд┐рдд рд╕рдорд░реНрдерди рдкреНрд░рдХрд╛рд╢рди рдореНрд╣рдгреВрди рд╡рд░реНрдЧреАрдХреГрдд рдЖрд╣реЗ рдЖрдгрд┐ рдкреБрдвреАрд▓ рдкреНрд░рдХрд╛рд╢рди рд╣реЛрдИрдкрд░реНрдпрдВрдд рдЕрджреНрдпрддрдиреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреЗ рд╕реБрд░реВ рдареЗрд╡реЗрд▓. рд▓рд╛рдБрдЧ рдЯрд░реНрдо рд╕рдкреЛрд░реНрдЯ (LTS) рд╢рд╛рдЦрд╛ Java SE 21 рдХрд┐рдВрд╡рд╛ Java SE 17 рдЕрд╕рд╛рд╡реА, рдЬреНрдпрд╛рдВрдирд╛ рдЕрдиреБрдХреНрд░рдореЗ 2031 рдЖрдгрд┐ 2029 рдкрд░реНрдпрдВрдд рдЕрдкрдбреЗрдЯреНрд╕ рдорд┐рд│рддреАрд▓ (рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ 2028 рдЖрдгрд┐ 2026 рдкрд░реНрдпрдВрдд рдЙрдкрд▓рдмреНрдз). Java SE 11 рдЪреНрдпрд╛ LTS рд╢рд╛рдЦреЗрд╕рд╛рдареА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдорд░реНрдерди рдЧреЗрд▓реНрдпрд╛ рд╕рдкреНрдЯреЗрдВрдмрд░рдордзреНрдпреЗ рд╕рдВрдкрд▓реЗ, рдкрд░рдВрддреБ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕рдорд░реНрдерди 2032 рдкрд░реНрдпрдВрдд рд╕реБрд░реВ рд░рд╛рд╣реАрд▓. Java SE 8 рдЪреНрдпрд╛ LTS рд╢рд╛рдЦреЗрд╕рд╛рдареА рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕рдорд░реНрдерди 2030 рдкрд░реНрдпрдВрдд рд╕реБрд░реВ рд░рд╛рд╣реАрд▓.

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

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

  • G1 рдЧрд╛рд░реНрдмреЗрдЬ рдХрд▓реЗрдХреНрдЯрд░рдордзреНрдпреЗ рд░рд┐рдЬрди рдкрд┐рдирд┐рдВрдЧрд╕рд╛рдареА рд╕рдорд░реНрдерди рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ, рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдЬрд╛рд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рдЪреЗ рд╕реНрдерд╛рди рддрд╛рддреНрдкреБрд░рддреЗ рдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдореЗрдорд░реАрдордзреНрдпреЗ рддреЗ рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░рджреНрд╡рд╛рд░реЗ рд╣рд▓рд╡рд▓реЗ рдЬрд╛рдгреЗ рдЯрд╛рд│рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рдЪреЗ рд╕рдВрджрд░реНрдн Java рдЖрдгрд┐ рдореВрд│ рдХреЛрдб рджрд░рдореНрдпрд╛рди рд╕реБрд░рдХреНрд╖рд┐рддрдкрдгреЗ рдкрд╛рд╕ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ. рдкрд┐рдирд┐рдВрдЧрдореБрд│реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд╡рд┐рд▓рдВрдм рдХрдореА рдХрд░рддрд╛ рдпреЗрддреЛ рдЖрдгрд┐ JNI (рдЬрд╛рд╡рд╛ рдиреЗрдЯрд┐рд╡реНрд╣ рдЗрдВрдЯрд░рдлреЗрд╕) рдЪреЗ рдЧрдВрднреАрд░ рдХреНрд╖реЗрддреНрд░ рд╕реНрдерд╛рдирд┐рдХ рдХреЛрдбрд╕рд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддрд╛рдирд╛ рдХрдЪрд░рд╛ рд╕рдВрдХрд▓рди рдЕрдХреНрд╖рдо рдХрд░рдгреЗ рдЯрд╛рд│рддрд╛ рдпреЗрддреЗ (рд╣реЗ рд╡рд┐рднрд╛рдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддрд╛рдирд╛, JVM рдиреЗ рд╢рд░реНрдпрддреАрдЪреА рдкрд░рд┐рд╕реНрдерд┐рддреА рдЯрд╛рд│рдгреНрдпрд╛рд╕рд╛рдареА рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЧрдВрднреАрд░ рд╡рд╕реНрддреВ рд╣рд▓рд╡реВ рдирдпреЗ). рдкрд┐рдирд┐рдВрдЧ рдХреЗрд▓реНрдпрд╛рдиреЗ рдХрдЪрд░рд╛ рдЧреЛрд│рд╛ рдХрд░рдгрд╛рд▒реНрдпрд╛рдЪреНрдпрд╛ рдирдЬрд░реЗрддреВрди рдЧрдВрднреАрд░ рд╡рд╕реНрддреВ рдХрд╛рдвреВрди рдЯрд╛рдХрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд, рдЬреНрдпрд╛рдореБрд│реЗ рдЕрдирдкрд┐рди рдХреЗрд▓реЗрд▓реЗ рдХреНрд╖реЗрддреНрд░ рд╕рд╛рдл рдХрд░рдгреЗ рд╕реБрд░реВ рдареЗрд╡рддрд╛ рдпреЗрддреЗ.
  • рд╕реБрдкрд░(...) рдХреЙрд▓ рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░рдордзреНрдпреЗ рдЕрднрд┐рд╡реНрдпрдХреНрддреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рдкреНрд░рд╛рдердорд┐рдХ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЬрд░ рддреЗ рдЕрднрд┐рд╡реНрдпрдХреНрддреА рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░рдиреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдЪрд╛ рд╕рдВрджрд░реНрдн рджреЗрдд рдирд╕рддреАрд▓ рддрд░ рд╡рд╛рд░рд╕рд╛ рдорд┐рд│рд╛рд▓реЗрд▓реНрдпрд╛ рдХреНрд▓рд╛рд╕ рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░рдХрдбреВрди рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдкреЕрд░реЗрдВрдЯ рдХреНрд▓рд╛рд╕ рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░рд▓рд╛ рдХреЙрд▓ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ. рд╡рд░реНрдЧ рдмрд╛рд╣реНрдп { void hello() { System.out.println("Hello"); } рдХреНрд▓рд╛рд╕ рдЗрдирд░ { рдЗрдирд░() { рд╣реЕрд▓реЛ(); рдЙрддреНрдХреГрд╖реНрдЯ(); } } }
  • FFM (Foreign Function & Memory) API рд╕реНрдерд┐рд░ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЬреЗ рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдореНрд╕рдирд╛ рдмрд╛рд╣реНрдп рд▓рд╛рдпрдмреНрд░рд░реАрдВрдордзреВрди рдлрдВрдХреНрд╢рдиреНрд╕ рдХреЙрд▓ рдХрд░реВрди рдЖрдгрд┐ JVM рдмрд╛рд╣реЗрд░ рдореЗрдорд░реА рдНрдХреНрд╕реЗрд╕ рдХрд░реВрди, JNI (рдЬрд╛рд╡рд╛ рдиреЗрдЯрд┐рд╡реНрд╣ рдЗрдВрдЯрд░рдлреЗрд╕) рди рд╡рд╛рдкрд░рддрд╛ рдмрд╛рд╣реНрдп рдХреЛрдб рдЖрдгрд┐ рдбреЗрдЯрд╛рд╕рд╣ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рдж рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ.
  • рдЕрдирд╛рдорд┐рдд рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдЖрдгрд┐ рдкреЕрдЯрд░реНрди рдореЕрдЪрд┐рдВрдЧрд╕рд╛рдареА рд╕рдорд░реНрдерди рд╕рдХреНрд╖рдо рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ - рдХреЙрд▓ рдХрд░рддрд╛рдирд╛ рди рд╡рд╛рдкрд░рд▓реЗрд▓реЗ рдкрд░рдВрддреБ рдЖрд╡рд╢реНрдпрдХ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдЖрдгрд┐ рдкреЕрдЯрд░реНрдирдРрд╡рдЬреА, рддреБрдореНрд╣реА рдЖрддрд╛ тАЬ_тАЭ рд╡рд░реНрдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛. // рд╣реЛрддреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреГрд╖реНрдардирд╛рдо = рд╕реНрд╡рд┐рдЪ (рдкреГрд╖реНрда) { рдХреЗрд╕ GitHubIssuePage(var url, var рд╕рд╛рдордЧреНрд░реА, var рджреБрд╡реЗ, int issueNumber) -> тАЬISSUE #тАЭ + issueNumber; ... }; // рдЖрддрд╛ рддреБрдореНрд╣реА String pageName = рд╕реНрд╡рд┐рдЪ (рдкреГрд╖реНрда) { рдХреЗрд╕ GitHubIssuePage(_, _, _, int issueNumber) -> тАЬISSUE #тАЭ + issueNumber; };
  • рдХреНрд▓рд╛рд╕-рдлрд╛рдЗрд▓ API рдЪреА рдкреНрд░рд╛рдердорд┐рдХ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА Java рдХреНрд▓рд╛рд╕ рдлрд╛рдпрд▓реА рдкрд╛рд░реНрд╕ рдХрд░рдгреЗ, рдЬрдирд░реЗрдЯ рдХрд░рдгреЗ рдЖрдгрд┐ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдЖрд╣реЗ. ClassFile cf = ClassFile.of(); ClassModel classModel = cf.parse(bytes); byte[] newBytes = cf.build(classModel.thisClass().asSymbol(), classBuilder -> { for (ClassElement ce : classModel) { if (!(ce instance of MethodModel mm && mm.methodName().stringValue(). startsWith("debug"))) { classBuilder.with(ce);
  • java рдпреБрдЯрд┐рд▓рд┐рдЯреА рдЕрдиреЗрдХ рдХреЛрдб рдлрд╛рдЗрд▓реНрд╕ рдХрд┐рдВрд╡рд╛ рдкреНрд░реАрдХрдВрдкрд╛рдЗрд▓ рдХреНрд▓рд╛рд╕ рд▓рд╛рдпрдмреНрд░рд░реАрдЪреНрдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдд рдкреБрд░рд╡рд▓реЗрд▓реНрдпрд╛ Java рдкреНрд░реЛрдЧреНрд░рд╛рдореНрд╕ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ, рдпрд╛ рдлрд╛рдЗрд▓реНрд╕ рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓реНрдпрд╛рд╢рд┐рд╡рд╛рдп рдЖрдгрд┐ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реНрдпрд╛рд╢рд┐рд╡рд╛рдп. рдирд╡реАрди рдлреАрдЪрд░ рдЕрд╢рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдореНрд╕ рдЪрд╛рд▓рд╡рдгреЗ рд╕реЛрдкреЗ рдХрд░рддреЗ рдЬреНрдпрд╛рдордзреНрдпреЗ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рд╡рд░реНрдЧрд╛рдВрдЪреЗ рдХреЛрдб рд╡реЗрдЧрд│реНрдпрд╛ рдлрд╛рдЗрд▓реНрд╕рдордзреНрдпреЗ рд╡реЗрдЧрд│реЗ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд. Prog.java: рд╡рд░реНрдЧ Prog { рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдерд┐рд░ рд╢реВрдиреНрдп рдореБрдЦреНрдп(рд╕реНрдЯреНрд░рд┐рдВрдЧ[] рдЖрд░реНрдЧреНрд╕) { Helper.run(); } } Helper.java: рдХреНрд▓рд╛рд╕ рд╣реЗрд▓реНрдкрд░ { static void run() { System.out.println("рд╣реЕрд▓реЛ!"); } }

    рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, "Prog.java" рдЖрдгрд┐ "Helper.java" рдпрд╛ рджреЛрди рдлрд╛рдпрд▓реАрдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЕрд╕рд▓реЗрд▓рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА рдЖрддрд╛ "java Prog.java" рдЪрд╛рд▓рд╡рдгреЗ рдкреБрд░реЗрд╕реЗ рдЖрд╣реЗ, рдЬреЗ Prog рд╡рд░реНрдЧ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрд▓, рд╣реЗрд▓реНрдкрд░ рдХреНрд▓рд╛рд╕рдЪрд╛ рд╕рдВрджрд░реНрдн рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрд▓, рд╣реЗрд▓реНрдкрд░ рдлрд╛рдИрд▓ рд╢реЛрдзрд╛ рдЖрдгрд┐ рд╕рдВрдХрд▓рд┐рдд рдХрд░рд╛ рдЖрдгрд┐ рдореБрдЦреНрдп рдкрджреНрдзрдд рдХреЙрд▓ рдХрд░рд╛.

  • рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЯреЗрдореНрдкреНрд▓реЗрдЯреНрд╕рдЪреА рджреБрд╕рд░реА рдкреНрд░рд╛рдердорд┐рдХ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЬреЛрдбрд▓реА, рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рд┐рдЯрд░рд▓ рдЖрдгрд┐ рдЯреЗрдХреНрд╕реНрдЯ рдмреНрд▓реЙрдХреНрд╕ рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд рдЕрдВрдорд▓рд╛рдд рдЖрдгрд▓реА. рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рддреБрдореНрд╣рд╛рд▓рд╛ + рдСрдкрд░реЗрдЯрд░ рди рд╡рд╛рдкрд░рддрд╛ рдХреЕрд▓рдХреНрдпреБрд▓реЗрдЯреЗрдб рдПрдХреНрд╕рдкреНрд░реЗрд╢рдиреНрд╕ рдЖрдгрд┐ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рд╕рд╣ рдордЬрдХреВрд░ рдПрдХрддреНрд░ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддрд╛рдд. рдЕрднрд┐рд╡реНрдпрдХреНрддреАрдЪреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди \{..} рд╡рд╛рдкрд░реВрди рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдореВрд▓реНрдпрд╛рдВрдЪреА рд╢реБрджреНрдзрддрд╛ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд┐рд╢реЗрд╖ рд╣рдБрдбрд▓рд░ рдХрдиреЗрдХреНрдЯ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, SQL рдЗрдВрдЬрд┐рди рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЛрдбрдордзреНрдпреЗ рдмрджрд▓рд▓реА рдЬрд╛рдгрд╛рд░реА рдореВрд▓реНрдпреЗ рддрдкрд╛рд╕рддреЗ рдЖрдгрд┐ рдЖрдЙрдЯрдкреБрдЯ рдореНрд╣рдгреВрди java.sql.Statement рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░рдд рдХрд░рддреЗ, рддрд░ JSON рдкреНрд░реЛрд╕реЗрд╕рд░ JSON рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдирд╛рдВрдЪреНрдпрд╛ рдЕрдЪреВрдХрддреЗрд╡рд░ рд▓рдХреНрд╖ рдареЗрд╡рддреЛ рдЖрдгрд┐ JsonNode рдкрд░рдд рдХрд░рддреЛ. рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреНрд╡реЗрд░реА = "рд╡реНрдпрдХреНрддреАрдХрдбреВрди * рдирд┐рд╡рдбрд╛ p WHERE p." + рдорд╛рд▓рдорддреНрддрд╛ + " = '" + рдореВрд▓реНрдп + "'"; // рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреНрд╡реЗрд░реА = SQL рд╣реЛрддреА."""рд╡реНрдпрдХреНрддрд┐рдХрдбреВрди рдирд┐рд╡рдбрд╛ * WHERE p.\{property} = '\{value}'"""; // рдЭрд╛рд▓реЗ
  • рд╡реНрд╣реЗрдХреНрдЯрд░ API рдЪреЗ рд╕рд╛рддрд╡реЗ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЬреЗ x86_64 рдЖрдгрд┐ AArch64 рдкреНрд░реЛрд╕реЗрд╕рд░рд╡рд░ рд╡реЗрдХреНрдЯрд░ рд╕реВрдЪрдирд╛ рд╡рд╛рдкрд░реВрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╡реЗрдХреНрдЯрд░ рдЧрдгрдиреЗрд╕рд╛рдареА рдХрд╛рд░реНрдпреЗ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рдЖрдгрд┐ рдПрдХрд╛рдзрд┐рдХ рдореВрд▓реНрдпрд╛рдВрд╡рд░ (SIMD) рдСрдкрд░реЗрд╢рдиреНрд╕ рдПрдХрд╛рдЪ рд╡реЗрд│реА рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ. HotSpot JIT рдХрдВрдкрд╛рдпрд▓рд░рдордзреНрдпреЗ рд╕реНрдХреЗрд▓рд░ рдСрдкрд░реЗрд╢рдиреНрд╕рдЪреНрдпрд╛ рдСрдЯреЛ-рд╡реНрд╣реЗрдХреНрдЯрд░рд╛рдпрдЭреЗрд╢рдирд╕рд╛рдареА рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХреНрд╖рдорддреЗрдЪреНрдпрд╛ рд╡рд┐рдкрд░реАрдд, рдирд╡реАрди API рд╕рдорд╛рдВрддрд░ рдбреЗрдЯрд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрд╕рд╛рдареА рд╡реЗрдХреНрдЯрд░рд╛рдпрдЭреЗрд╢рди рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдгреЗ рд╢рдХреНрдп рдХрд░рддреЗ.
  • рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕реНрдЯреНрд░реАрдо API рдЪреА рдкреНрд░рд╛рдердорд┐рдХ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЬреЛрдбрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ рдЬреА рддреБрдордЪреНрдпрд╛ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдСрдкрд░реЗрд╢рдиреНрд╕ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рд╕рдорд░реНрдерди рджреЗрддреЗ, рдЬреЗ рд╡рд┐рджреНрдпрдорд╛рди рдмрд┐рд▓реНрдЯ-рдЗрди рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдСрдкрд░реЗрд╢рдиреНрд╕ рдЗрдЪреНрдЫрд┐рдд рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдиреНрд╕рдлреЙрд░реНрдореЗрд╢рдирд╕рд╛рдареА рдкреБрд░реЗрд╢реА рдирд╕рд▓реЗрд▓реНрдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ рдЙрдкрдпреБрдХреНрдд рдЕрд╕реВ рд╢рдХрддрд╛рдд. рдиреЗрдЯрд┐рд╡реНрд╣ рд╣рдБрдбрд▓рд░ рдирд╡реАрди рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдСрдкрд░реЗрд╢рди Stream::gather(Gatherer) рд╡рд╛рдкрд░реВрди рдЬреЛрдбрд▓реЗрд▓реЗ рдЖрд╣реЗрдд, рдЬреЗ рд╡рд╛рдкрд░рдХрд░реНрддрд╛-рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣рдБрдбрд▓рд░ рд▓рд╛рдЧреВ рдХрд░реВрди рдкреНрд░рд╡рд╛рд╣ рдШрдЯрдХрд╛рдВрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ. jshell> Stream.of(1,2,3,4,5,6,7,8,9). gather(рдирд╡реАрди WindowFixed(3)).toList() $1 ==> [[1, 2, 3], [рек, рел, рем], [рен, рео, реп]]
  • рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрдб рдХреЙрдиреНрдХрд░рдиреНрд╕реАрд╕рд╛рдареА рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ API рдЪреА рджреБрд╕рд░реА рдЖрд╡реГрддреНрддреА рдЪрд╛рдЪрдгреАрд╕рд╛рдареА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ, рдЬреА рдПрдХрд╛рдЪ рдмреНрд▓реЙрдХрдЪреНрдпрд╛ рд░реВрдкрд╛рдд рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдереНрд░реЗрдбрдордзреНрдпреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдПрдХрд╛рдзрд┐рдХ рдХрд╛рд░реНрдпрд╛рдВрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реВрди рдорд▓реНрдЯреА-рдереНрд░реЗрдбреЗрдб рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдЪрд╛ рд╡рд┐рдХрд╛рд╕ рд╕реБрд▓рдн рдХрд░рддреЗ.
  • рдЕрд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдШреЛрд╖рд┐рдд рд╡рд░реНрдЧ рдЖрдгрд┐ "рдореБрдЦреНрдп" рдкрджреНрдзрддреАрдЪреНрдпрд╛ рдЕрдирд╛рдорд┐рдд рдЙрджрд╛рд╣рд░рдгрд╛рдВрдЪреА рджреБрд╕рд░реА рдкреНрд░рд╛рдердорд┐рдХ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЬреЛрдбрд▓реА, рдЬреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ/рд╕реНрдерд┐рд░ рдШреЛрд╖рдгрд╛рдВрд╕рд╣ рд╡рд┐рддрд░реАрдд рдХрд░реВ рд╢рдХрддреЗ, рд╡рд┐рддрд░реНрдХрд╛рдВрдЪреА рд╢реНрд░реЗрдгреА рдЙрддреНрддреАрд░реНрдг рдХрд░реВ рд╢рдХрддреЗ рдЖрдгрд┐ рд╡рд░реНрдЧ рдШреЛрд╖рдгрд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЗрддрд░ рд╕рдВрд╕реНрдерд╛. // рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ HelloWorld { рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдерд┐рд░ рд╢реВрдиреНрдп рдореБрдЦреНрдп(String[] args) { System.out.println("Hello world!"); } } // рдЖрддрд╛ рддреБрдореНрд╣реА main() { System.out.println("рд╣реЕрд▓реЛ, рд╡рд░реНрд▓реНрдб!") рд░рджреНрдж рдХрд░реВ рд╢рдХрддрд╛; }
  • рд╕реНрдХреЛрдкреНрдб рд╡реНрд╣реЕрд▓реНрдпреВрдЬрдЪреА рджреБрд╕рд░реА рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЬреЛрдбрд▓реА, рдЬреНрдпрд╛рдореБрд│реЗ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдбреЗрдЯрд╛ рдереНрд░реЗрдбрд╡рд░ рд╕рд╛рдорд╛рдпрд┐рдХ рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ рдЖрдгрд┐ рдЪрд╛рдЗрд▓реНрдб рдереНрд░реЗрдбреНрд╕ рджрд░рдореНрдпрд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдиреЗ рдбреЗрдЯрд╛рдЪреА рджреЗрд╡рд╛рдгрдШреЗрд╡рд╛рдг рдХреЗрд▓реА рдЬрд╛рддреЗ (рдореВрд▓реНрдпреЗ рд╡рд╛рд░рд╢рд╛рдиреЗ рдорд┐рд│рддрд╛рдд). рдереНрд░реЗрдб-рд▓реЛрдХрд▓ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдореЗрдХреЕрдирд┐рдЭрдо рдмрджрд▓рдгреНрдпрд╛рд╕рд╛рдареА рд╕реНрдХреЛрдкреЗрдб рд╡реНрд╣реЕрд▓реНрдпреВрдЬ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реНрдпрд╛ рдЬрд╛рдд рдЖрд╣реЗрдд рдЖрдгрд┐ рдЦреВрдк рдореЛрдареНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдиреЗ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдереНрд░реЗрдбреНрд╕ (рд╣рдЬрд╛рд░реЛ рдХрд┐рдВрд╡рд╛ рд▓рд╛рдЦреЛ рдереНрд░реЗрдб) рд╡рд╛рдкрд░рддрд╛рдирд╛ рддреЗ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдо рдЖрд╣реЗрдд. рд╕реНрдХреЛрдкреЗрдб рд╡реНрд╣реЕрд▓реНрдпреВрдЬ рдЖрдгрд┐ рдереНрд░реЗрдб-рд▓реЛрдХрд▓ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдордзреАрд▓ рдореБрдЦреНрдп рдлрд░рдХ рдЕрд╕рд╛ рдЖрд╣реЗ рдХреА рдЖрдзреАрдЪреЗ рдПрдХрджрд╛ рд▓рд┐рд╣рд┐рд▓реЗрд▓реЗ рдЖрд╣реЗрдд, рднрд╡рд┐рд╖реНрдпрд╛рдд рдмрджрд▓рд▓реЗ рдЬрд╛рдК рд╢рдХрдд рдирд╛рд╣реАрдд рдЖрдгрд┐ рдХреЗрд╡рд│ рдереНрд░реЗрдбрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рдХрд╛рд▓рд╛рд╡рдзреАрд╕рд╛рдареА рдЙрдкрд▓рдмреНрдз рд░рд╛рд╣рддрд╛рдд.
  • рд╕рдорд╛рдВрддрд░ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╛рд╣рдХрд╛рдиреЗ рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдирд╛ рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд╛рд░рд▓реЗ рдЖрд╣реЗ. рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рдирдиреЗ рдСрдмреНрдЬреЗрдХреНрдЯрдЪрд╛ рд╢реЛрдз рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА 20% рдиреЗ рд╡рд┐рд▓рдВрдм рдХрдореА рдХрд░рдгреЗ рдСрдмреНрдЬреЗрдХреНрдЯрдЪреНрдпрд╛ рдореЛрдареНрдпрд╛ ре▓рд░реЗрд╕рд╣ рдХрд╛рд╣реА рдЪрд╛рдЪрдгреНрдпрд╛рдВрдордзреНрдпреЗ рд╢рдХреНрдп рдХреЗрд▓реЗ.

рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рддреБрдореНрд╣реА рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЗрдВрдЯрд░рдлреЗрд╕ JavaFX 22 рд╕рд╣ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╡рд░ рдЕрдкрдбреЗрдЯрдЪреЗ рдкреНрд░рдХрд╛рд╢рди рд▓рдХреНрд╖рд╛рдд рдШреЗрдК рд╢рдХрддрд╛.

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

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