ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááŒá±á¬ááºáá¡ááŒá¬ááœáẠOracle ááẠOpenJDK open source ááá±á¬áá»ááºááᯠááá¯ážáá¬ážá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯á¡ááŒá ẠOpenJDK ááá¯á¡áá¯á¶ážááŒá¯ááá·áº Java SE 22 (Java Platformá Standard Edition 22) ááááºáá±á¬ááºážááᯠáá¯ááºááŒááºáá²á·áááºá áá¬ážááŒá áºáá¬ážáá±á¬á¡ááºá¹áá«áááºá¡áá»áá¯á·ááᯠáááºááŸá¬ážááŒááºážááŸááœá²á Java SE 22 ááẠááááºááœááºááŸááá¬ážáá±á¬ Java ááááºáá±á¬ááºážáá»á¬ážááŸáá·áº áá±á¬ááºááŒááºááá¯ááºáááºááŸá¯ááᯠááááºážááááºážáá¬ážáá«áááºâááááºáá±ážáá¬ážáá¬ážáá±á¬ Java ááá±á¬áá»ááºá¡áá»á¬ážá á¯ááẠáá¬ážááŸááºážá¡áá áºá¡á±á¬ááºááœáẠáá¯ááºáá±á¬ááºááá·áºá¡áá« ááŒá¯ááŒááºááœááºážáá¶ááŒááºážáááŸááá² áááºáááºáá¯ááºáá±á¬ááºáá±áááºááŒá áºáááºá ááá·áºááœááºážááá¯ááºáá±á¬ Java SE 22 (JDKá JRE ááŸáá·áº Server JRE) ááá¯á·ááᯠLinux (x86_64á AArch64)á Windows (x86_64) ááŸáá·áº macOS (x86_64á AArch64) á¡ááœáẠááŒááºáááºáá¬ážáá«áááºá OpenJDK ááá±á¬áá»ááºá០áá®ááœááºáá¬ážááá·áº Java 22 áááºááœáŸááºážá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááẠGNU ClassPath ááŒáœááºážáá»ááºáá»á¬ážááŒáá·áº GNU ClassPath ááŒáœááºážáá»ááºááŒáá·áº á á®ážááœá¬ážáá±ážááá¯ááºáá¬áá¯ááºáá¯ááºáá»á¬ážááŸáá·áº áááºááŒáœá áœá¬áá»áááºáááºááŒááºážááᯠááœáá·áºááŒá¯ááẠGPLv2 ááá¯ááºá ááºá¡á±á¬ááºááœáẠá¡ááŒáá·áºá¡áááœáá·áºáá¬ážáááºá
Java SE 22 ááᯠáá¯á¶ááŸááºáá¶á·ááá¯ážááŸá¯áá¯ááºáá±ááŸá¯áá áºáá¯á¡ááŒá ẠáááºááŸááºáá¬ážááŒá®áž áá±á¬ááºááœááºááŸááá»áááºá¡áá á¡ááºááááºáá»á¬ážááᯠáááºáááºáááºáá¶áááŸááááºááŒá áºáááºá Long Term Support (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 ááŸáá·áº áá°áááºážáá¯ááºááŒá¬ážááœáẠáá±ážáááºážá áœá¬ áá°ážáááºážááá¯ááºá á±ááẠáááºááá¯áá®á¡ááœááºážááŸá Java á¡áá¬áá»á¬ážá áááºáá±áá¬ááᯠáá¬áá®ááŒááºáááºááá¯ááºá á±áááºááŸáá·áº á¡ááá¯áá«á¡áá¬ááá¹áá¯áá»á¬ážá¡ááœáẠáááºááœáŸááºážáá»ááºáá»á¬ážááᯠJava ááŸáá·áº áá°áááºážáá¯ááºáá»á¬ážááŒá¬ážááœáẠáá¯á¶ááŒá¯á¶á áœá¬ááŒááºáááºážááá¯ááºá á±áááºá¡ááœáẠGXNUMX á¡ááŸáá¯ááºá á¯áá±á¬ááºážáá°ááœáẠáá¶á·ááá¯ážááŸá¯áá«áááºáá«áááºá áááºááŒá±ááá¯ážááŒááºážááẠááá·áºá¡á¬áž áá¯á¶á·ááŒááºáá»áááºááᯠáá»áŸá±á¬á·áá»áááºááŸáá·áº JNI (Java Native Interface) á á¡áá±ážááŒá®ážáá±á¬áá±ááá»á¬ážááᯠáá°áááºážáá¯ááºááŒáá·áº áá¯ááºáá±á¬ááºááá·áºá¡áá« á¡ááŸáá¯ááºá á¯áá±á¬ááºážááŒááºážááᯠááŸá±á¬ááºááŸá¬ážááá¯ááºá á±ááẠ(á€ááá¹ááá»á¬ážááᯠáá¯ááºáá±á¬ááºáá±á ááºá JVM ááẠáá°áá»áá¯ážáá±ážá¡ááŒá±á¡áá±áá»á¬ážááᯠááŸá±á¬ááºááŸá¬ážáááºá¡ááœáẠáááºážááá¯á·ááŸáá·áºáááºá ááºáá±áá±á¬ á¡áá±ážááŒá®ážáá±á¬á¡áá¬áá»á¬ážááᯠáááœáŸá±á·ááá·áºáá«)á áááºááá¯ážáá¬ážááŒááºážááẠáááºááááºáá¬ážáá±á¬áá±áá¬áá»á¬ážááᯠáááºáááºááŸááºážáááºážá á±ááá¯ááºááá·áº á¡ááŸáá¯ááºá á¯áá±á¬ááºážáá°áááŒááºááœááºážá០á¡áá±ážááŒá®ážáá±á¬á¡áá¬áá»á¬ážááᯠáááºááŸá¬ážáá±ážáááºá
- á á°áá«(...) ááᯠááá±á«áºááá¯áá® constructors ááœáẠáá±á¬áºááŒáá»ááºáá»á¬ážááᯠáááºááŸááºááœáá·áºááŒá¯ááẠááá¬áá¡ááºá¹áá«áááºááᯠááá·áºááœááºážáá¬ážááŒá®ážá ááá¯áá±á¬áºááŒáá»ááºáá»á¬ážááẠáááºáá±á¬ááºáá°á០áááºáá®ážáá¬ážááá·áº instance áá áºáá¯ááᯠáááºááœáŸááºážááŒááºážáááŸááá«á parent class constructor ááᯠá¡ááá¡áááºážáá±á«áºááá¯áááºá¡ááœáẠá¡áá¯á¶ážááŒá¯áááºá class Outer { void hello() { System.out.println("Hello"); } class Inner { Inner() { hello(); á á°áá«(); } } }
- FFM (Foreign Function & Memory) API ááẠJNI (Java Native Interface) ááá¯á¡áá¯á¶ážáááŒá¯áá² ááŒááºááá¯ááºááŸáá·áº áá±áá¬áá»á¬ážááŸáá·áºá¡áá° Java áááá¯ááááºáá»á¬ážá á¡ááŒááºá¡ááŸááºáááºááœááºááŸá¯ááᯠááœáá·áºááŒá¯áá±ážááŒá®áž FFM (Foreign Function & Memory) API ááᯠáááºááŒáááºá¡á±á¬ááºááŒá¯áá¯ááºáá¬ážáá«áááºá
- á¡áááºááá±á¬áºááŒáá¬ážáá±á¬ ááááºážááŸááºáá»á¬ážááŸáá·áº áá¯á¶á á¶áá°ááá¯ááºáá®ááŸá¯áá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ááᯠááœáá·áºáá¬ážáá«ááẠ- áá¯ááºážáá±á«áºááá¯ááá·áºá¡áá« á¡áá¯á¶ážáááŒá¯áá±á¬áºáááºáž ááá¯á¡ááºáá±á¬ ááááºážááŸááºáá»á¬ážááŸáá·áº áá¯á¶á á¶áá»á¬ážá¡á á¬áž â_â á á¬áá¯á¶ážááᯠááᯠááẠáááºááŸááºááá¯ááºáá«ááŒá®á // was String pageName = switch (page) { case GitHubIssuePage(var url, var content, var links, int issueNumber) -> âISSUE #â + issueNumber; ... }; // ááá¯ááẠString pageName = switch (page) { case GitHubIssuePage(_, _, _, int issueNumber) -> âISSUE #â + issueNumber; };
- Class-File 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 instanceof MethodModel mm && mm.methodName().stringValue(). startsWith("debug"))) { classBuilder.with(ce); } } });
- java utility ááẠáá¯ááºááá¯ááºá¡áá»á¬ážá¡ááŒá¬áž ááá¯á·ááá¯áẠprecompiled class libraries áá¯á¶á
á¶ááŒáá·áº áá¶á·ááá¯ážáá±ážáá¬ážááá·áº Java áááá¯ááááºáá»á¬ážááᯠáááºáááºá
á±ááŒá®ážá á€ááá¯ááºáá»á¬ážááᯠáá®ážááŒá¬ážá
á®á
á¯ááŒá®áž áááºáá±á¬ááºááŸá¯á
áá
áºááᯠáá¯á¶áá±á¬áºááŒááºážáááŒá¯áá² áá¯ááºáá±á¬ááºááá¯ááºá
á±áááºá á¡ááºá¹áá«áááºá¡áá
áºááẠááá°áá®áá±á¬á¡áááºážáá»á¬ážááá¯ááºáá»á¬ážááᯠáá®ážááŒá¬ážááá¯ááºáá»á¬ážá¡ááŒá
Ạááœá²ááŒá¬ážáá¬ážááá·áº áááá¯ááááºáá»á¬ážááᯠááá¯ááá¯ááœááºáá°á
á±áááºá Prog.java: class Prog { public static void main(String[] args) { Helper.run(); } } Helper.java: class Helper { static void run() { System.out.println("Hello!"); } }
á¥ááá¬á¡á¬ážááŒáá·áºá "Prog.java" ááŸáá·áº "Helper.java" ááá¯ááºááŸá áºáá¯áá«ááá·áº áááá¯ááááºáá áºáá¯ááᯠrun ááẠááá¯á¡áá« Prog class ááᯠcompile áá¯ááºááá·áº "java Prog.java" ááᯠrun ááẠáá¯á¶áá±á¬ááºááŒá®á Helper á¡áááºážááᯠáááºááœáŸááºážáá»ááºáá áºáᯠáááºááŸááºáááºá Helper ááá¯ááºááᯠááŸá¬ááœá±ááŒá®áž á á¯á ááºážáá«á java ááŸáá·áº áááºááááºážáááºážááᯠáá±á«áºááá¯áá«á
- string literals ááŸáá·áº text blocks áá»á¬ážá¡ááŒáẠá¡áá±á¬ááºá¡áááºáá±á¬áºáá²á·ááá·áº string Templates á áá¯áááááá¬áá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯áá áºáá¯ááᯠáááºááá·áºáá¬ážáááºá á á¬ááŒá±á¬ááºážáááºážáááááºáá»á¬ážááẠááá·áºá¡á¬áž +á¡á±á¬áºááá±áá¬ááᯠá¡áá¯á¶ážáááŒá¯áá² ááœááºáá»ááºáá¬ážáá±á¬á¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážááŸáá·áº ááááºážááŸááºáá»á¬ážááŸáá·áºá¡áá° á á¬áá¬ážááᯠáá±á«ááºážá ááºááá¯ááºá á±áá«áááºá á¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážááᯠá¡á á¬ážááá¯ážááŒááºáž \{..} ááᯠá¡á á¬ážááá¯ážá¡áá¯á¶ážááŒá¯ááŒá®áž á¡á á¬ážááá¯ážáááºááá¯ážáá»á¬ážá ááŸááºáááºááŸá¯ááᯠá á áºáá±ážááẠá¡áá°ážááá¯ááºááœááºáá°áá»á¬ážááᯠáá»áááºáááºááá¯ááºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá SQL á¡ááºáá»ááºááẠSQL áá¯ááºááœáẠá¡á á¬ážááá¯ážáá¬ážááá·áº áááºááá¯ážáá»á¬ážááᯠá á áºáá±ážááŒá®áž java.sql.Statement object ááᯠoutput á¡ááŒá ẠááŒááºáá±ážáááºá JSON áááá¯áááºáá¬ááẠJSON á¡á á¬ážááá¯ážááŸá¯áá»á¬ážá ááŸááºáááºááŸá¯ááᯠá á±á¬áá·áºááŒáá·áºááŒá®áž JsonNode ááᯠááŒááºáá±ážáá«áááºá string query = "SELECT * FROM Person p WHERE p" + property + " = ' " + value + "'"; // was Statement query = SQL."""SELECT * FROM Person p WHERE p.\{property} = '\{value}'"""; // ááŒá áºáá¬áááºá
- x86_64 ááŸáá·áº AArch64 áááá¯áááºáá¬áá»á¬ážáá±á«áºááœáẠvector ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á áá¯ááºáá±á¬ááºááá·áº vector ááœááºáá»ááºááŸá¯áá»á¬ážá¡ááœáẠáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá±ážáá±á¬ááºááŒá®áž áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáááºááá¯ážáá»á¬ážá áœá¬ (SIMD) ááœáẠáááŒáá¯ááºáááºá¡áá¯á¶ážááŒá¯ááá¯ááºá á±ááẠááá¹ááááŒá±á¬áẠVector API á ááá¹ááá¡ááŒáá¯ááŒáá·áºááŸá¯ááŒááºážááᯠááá·áºááœááºážáá¬ážáá«áááºá scalar áááºáááºááŸá¯áá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬áẠááœá²áá¯ááºááŒááºážá¡ááœáẠHotSpot JIT compiler ááœáẠáá¶á·ááá¯ážáá±ážáá¬ážááá·áº á áœááºážáááºáá»á¬ážááŸáá·áº ááá°áá² API á¡áá áºááẠá¡ááŒáá¯ááºáá±áᬠáá¯ááºáá±á¬ááºááŒááºážá¡ááœáẠvectorization ááᯠááŒááºáá¬ážá áœá¬ ááááºážáá»á¯ááºááá¯ááºá á±áá«áááºá
- ááá¯ážáá»á²á·áá¬ážáá±á¬ Stream API á ááá¬áá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááᯠááá·áºááœááºážáá¬ážááŒá®áž áá±áá¬á¡ááœááºááŒá±á¬ááºážáááºá¡ááœáẠááá·áºááá¯ááºááá¯ááºá¡áááºá¡áááºáá¯ááºáááºážáá±á¬ááºáá¬áá»á¬ážááᯠáááºááŸááºáá¬ááœáẠá¡áá¯á¶ážáááºááá¯ááºáááºá áááºážááẠááŸáááŒá®ážáá¬áž built-in á¡áááºá¡áááºáá¯ááºáá±á¬ááºááŸá¯áá»á¬ážááẠááá¯áá»ááºáá±á¬áá±áá¬á¡ááœááºááŒá±á¬ááºážááŸá¯á¡ááœáẠááá¯á¶áá±á¬ááºááá·áºááá á¹á áá»á¬ážááœáẠá¡áá¯á¶ážáááºááá¯ááºáá«áááºá á¡áá¯á¶ážááŒá¯áá°áááºááŸááºáá¬ážáá±á¬ ááá¯ááºááœááºáá°á¡á¬áž á¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áº áááºážááá¯á·á¡á¬áž á¡áá¯á¶ážááŒá¯áá°áááºááŸááºáá¬ážáá±á¬ ááá¯ááºááœááºá¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áº ááŒááºá ááºáá»á¬ážááᯠáá¯ááºááœáŸáá·áºáá±ážááá·áº á¡áááºá¡áááºáá¯ááºáá±á¬ááºáá»ááºá¡áá ẠStream::gather(Gatherer) ááᯠá¡áá¯á¶ážááŒá¯á áá°áááºážááá¯ááºááœááºáá°áá»á¬ážááᯠáá»áááºáááºáá¬ážáááºá jshell> Stream.of(1,2,3,4,5,6,7,8,9).gather(WindowFixed(3)).toList() $1 ==> [[1, 2, 3]á [áá á á á]á [áá áá á]]
- Structured Concurrency á¡ááœáẠá ááºážááẠAPI á áá¯ááááá¬ážááŸááºážááᯠá ááºážáááºááẠá¡ááá¯ááŒá¯áá¬ážááŒá®ážá áááºážááẠáá áºáá¯áááºážáá±á¬ ááá±á¬ááºáá áºáá¯á¡ááŒá Ạááá°áá®áá±á¬ threads ááœáẠáá¯ááºáá±á¬ááºáá²á·áá±á¬ á¡áá¯ááºáá»á¬ážá áœá¬ááᯠáá¯ááºáá±á¬ááºááŒááºážááŒáá·áº multi-threaded applications áá»á¬ážá ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááᯠááá¯ážááŸááºážá á±áááºá
- á¡áá»á¬ážáá°ááŸá¬/áááºááŒáááºáá±á¬ ááŒá±ááŒá¬áá»ááºáá»á¬ážááᯠááŒáá·áºáá±ááŒááºážá ááŒááºážáá¯á¶ááŸá¯áá áºáá¯á¡á¬áž ááŒááºáááºážááŒááºážááŸáá·áº á¡áááºážááœá²ááŒá±ááŒá¬áá»ááºáá áºáá¯ááŸáá·áº áááºá ááºááá·áº á¡ááŒá¬ážá¡áá¬áá»á¬ážááᯠááœá²áá±áá±ážááá¯ááºááá·áº "áááºá" áááºážáááºážá ááœááºááá¯ááºáá±á¬ááŒá±ááŒá¬áá¬ážáá±á¬ á¡áááºážáá»á¬ážááŸáá·áº á¡áááºááá±á¬áºááá¯ááá·áº ááŒá áºáááºáá»á¬ážá áá¯áááááá¬áá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááᯠáá±á«ááºážááá·áºáá¬ážáááºá // á¡áá»á¬ážáá°ááŸá¬ á¡áááºážááẠHelloWorld { public static void main(String[] args) { System.out.println("Hello world!"); } } // ááá¯ááœáẠmain() { System.out.println("Hello, World!"); }
- Scoped Values ââá áá¯áááá¡á ááºážááŒáá·áºááŸá¯ááŸá¯ á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááᯠáá±á«ááºážááá·áºáá²á·ááŒá®ážá áááŒá±á¬ááºážáá²ááá¯ááºáá±á¬áá±áá¬á¡á¬áž ááœá²áá»á¬ážááŒá¬ážááœáẠáá»áŸáá±áááºááŸáá·áº ááá±ážá á¬ááœá²áá»á¬ážááŒá¬ážááœáẠáá±áá¬áá»á¬ážááᯠáááá±á¬ááºá áœá¬áááŸááºááá¯ááºááẠ(áááºááá¯ážáá»á¬ážááᯠá¡ááœá±áááºáá¶áááº)á Thread-local variables ááá¹ááá¬ážááá¯á¡á á¬ážááá¯ážáááºá¡ááœáẠáááºáááºá¡ááá¯ááºáááºááá¯ážáá»á¬ážááᯠáá®ááœááºáá±ááŒá®áž á¡ááœááºáá»á¬ážááŒá¬ážáá±á¬ virtual threads ( threads áá±á¬ááºáá±á«ááºážáá»á¬ážá áœá¬ ááá¯á·ááá¯áẠáááºážáá±á«ááºážáá»á¬ážá áœá¬) ááá¯á¡áá¯á¶ážááŒá¯áá±á¬á¡áá« ááá¯ááá¯áááá±á¬ááºáá«áááºá Scoped Values ââââááŸáá·áº thread-local variable áá»á¬ážááŒá¬áž á¡ááá ááœá¬ááŒá¬ážáá»ááºááŸá¬ ááááºááᯠáá áºááŒáááºáᬠáá±ážáá¬ážáá¬ážááŒá®ážá á¡áá¬áááºááœáẠááŒá±á¬ááºážáá²áááááá·áºá¡ááŒáẠthread á áá¯ááºáá±á¬ááºááŸá¯ááŒá¬áá»áááºá¡ááœááºáᬠáááºáááºáááºááŸááá±ááŒááºážááŒá áºáááºá
- Parallel á¡ááŸáá¯ááºá á¯áá±á¬ááºážáá°ááẠááŒá®ážáá¬ážáá±á¬ arrays áá»á¬ážááŒáá·áº áá¯ááºáá±á¬ááºáá±á¬á¡áá«ááœáẠá áœááºážáá±á¬ááºáááºááᯠááŒáŸáá·áºáááºáá±ážáá«áááºá á¡áá¬ááá¹áá¯áá áºáá¯ááᯠááŸá¬ááœá±ááŒááºážáááŒá¯áá® ááŸá±á¬áá·áºááŸá±ážááŸá¯ááᯠáá»áŸá±á¬á·áá»áááºá¡ááœáẠá¡áá»áá¯á·áá±á¬á ááºážáááºááŸá¯áá»á¬ážááœáẠááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºááŒááºážááŒáá·áº ááŸá±á¬áá·áºááŸá±ážááŸá¯ááᯠáá»áŸá±á¬á·áá»ááá¯ááºá á±áá«áááºá
ááá¯á·á¡ááŒááºá ááááºáá
áºá¡ááºáá¬áá±á·á
ẠJavaFX 22 ááŒáá·áº á¡ááá®áá±ážááŸááºážáá»á¬ážáááºáá®ážáááºá¡ááœáẠááááºáá±á¬ááºážááœáẠá¡ááºááááºáá
áºáá¯áá¯ááºááŒááºááŒááºážááᯠáááºááŸááºáá¬ážááá¯ááºáááºá
source: opennet.ru