ΠΠΎ ΡΠ΅ΡΡ ΠΌΠ΅ΡΠ΅ΡΠΈ ΡΠ°Π·Π²ΠΎΡ, Oracle Π³ΠΎ ΠΈΠ·Π΄Π°Π΄Π΅ Java SE 22 (ΠΠ°Π²Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°, ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ 22), ΠΊΠΎΡ Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ ΡΠΎ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ OpenJDK ΠΊΠ°ΠΊΠΎ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ½Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°. Π‘ΠΎ ΠΈΡΠΊΠ»ΡΡΠΎΠΊ Π½Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° Π½Π΅ΠΊΠΎΠΈ Π·Π°ΡΡΠ°ΡΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, 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 Π΅ ΡΠ΅Π»ΠΎΡΠ½ΠΎ ΠΎΡΠ²ΠΎΡΠ΅Π½Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½ΡΠ°ΡΠ° GPLv2 ΡΠΎ ΠΈΡΠΊΠ»ΡΡΠΎΡΠΈ Π½Π° GNU ClassPath Π·Π° Π΄Π° ΡΠ΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΊΠΎΠΌΠ΅ΡΡΠΈΡΠ°Π»Π½ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈ.
Java SE 22 Π΅ ΠΊΠ»Π°ΡΠΈΡΠΈΡΠΈΡΠ°Π½ ΠΊΠ°ΠΊΠΎ ΡΠ΅Π΄ΠΎΠ²Π½ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° ΠΈ ΡΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈ Π΄Π° Π΄ΠΎΠ±ΠΈΠ²Π° Π°ΠΆΡΡΠΈΡΠ°ΡΠ° Π΄ΠΎ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅. Π€ΠΈΠ»ΠΈΡΠ°Π»Π°ΡΠ° Π·Π° Π΄ΠΎΠ»Π³ΠΎΡΠΎΡΠ½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° (LTS) ΡΡΠ΅Π±Π° Π΄Π° Π±ΠΈΠ΄Π΅ Java SE 21 ΠΈΠ»ΠΈ Java SE 17, ΠΊΠΎΠΈ ΡΠ΅ Π΄ΠΎΠ±ΠΈΠ²Π°Π°Ρ Π°ΠΆΡΡΠΈΡΠ°ΡΠ° Π΄ΠΎ 2031 ΠΈ 2029 Π³ΠΎΠ΄ΠΈΠ½Π°, ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΎ (ΠΎΠΏΡΡΠΎ Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΈ Π΄ΠΎ 2028 ΠΈ 2026 Π³ΠΎΠ΄ΠΈΠ½Π°). ΠΠ°Π²Π½Π°ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° LTS ΡΠΈΠ»ΠΈΡΠ°Π»Π°ΡΠ° Π½Π° Java SE 11 Π·Π°Π²ΡΡΠΈ ΠΌΠΈΠ½Π°ΡΠΈΠΎΡ ΡΠ΅ΠΏΡΠ΅ΠΌΠ²ΡΠΈ, Π½ΠΎ ΠΏΡΠΎΡΠΈΡΠ΅Π½Π°ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° ΡΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈ Π΄ΠΎ 2032 Π³ΠΎΠ΄ΠΈΠ½Π°. ΠΡΠΎΡΠΈΡΠ΅Π½Π°ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° LTS ΡΠΈΠ»ΠΈΡΠ°Π»Π°ΡΠ° Π½Π° Java SE 8 ΡΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈ Π΄ΠΎ 2030 Π³ΠΎΠ΄ΠΈΠ½Π°.
ΠΠ° ΠΏΠΎΡΡΠ΅ΡΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΏΠΎΡΠ½ΡΠ²Π°ΡΡΠΈ ΠΎΠ΄ ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° Java 10, ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ ΡΠ΅ ΠΏΡΠ΅ΡΡΠ»ΠΈ Π½Π° Π½ΠΎΠ² ΡΠ°Π·Π²ΠΎΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ, ΡΡΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ° ΠΏΠΎΠΊΡΠ°ΡΠΎΠΊ ΡΠΈΠΊΠ»ΡΡ Π·Π° ΡΠΎΡΠΌΠΈΡΠ°ΡΠ΅ Π½Π° Π½ΠΎΠ²ΠΈ ΠΈΠ·Π΄Π°Π½ΠΈΡΠ°. Π‘Π΅Π³Π° Π΅ ΡΠ°Π·Π²ΠΈΠ΅Π½Π° Π½ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π²ΠΎ Π΅Π΄Π½Π° ΠΏΠΎΡΡΠΎΡΠ°Π½ΠΎ Π°ΠΆΡΡΠΈΡΠ°Π½Π° Π³Π»Π°Π²Π½Π° Π³ΡΠ°Π½ΠΊΠ°, ΠΊΠΎΡΠ° Π²ΠΊΠ»ΡΡΡΠ²Π° Π³ΠΎΡΠΎΠ²ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΈ ΠΎΠ΄ ΠΊΠΎΡΠ° ΡΠΈΠ»ΠΈΡΠ°Π»ΠΈΡΠ΅ ΡΠ΅ ΡΠ°Π·Π³ΡΠ°Π½ΡΠ²Π°Π°Ρ Π½Π° ΡΠ΅ΠΊΠΎΠΈ ΡΠ΅ΡΡ ΠΌΠ΅ΡΠ΅ΡΠΈ Π·Π° Π΄Π° ΡΠ΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π°Ρ Π½ΠΎΠ²ΠΈΡΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΡΠ°.
ΠΠΎΠ²ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΎ Java 22 Π²ΠΊΠ»ΡΡΡΠ²Π°Π°Ρ:
- Π‘ΠΎΠ±ΠΈΡΠ°ΡΠΎΡ Π½Π° ΡΡΠ±ΡΠ΅ G1 Π²ΠΊΠ»ΡΡΡΠ²Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΠΏΡΠΈΠΊΠ°ΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ΅Π³ΠΈΠΎΠ½ΠΎΡ, ΡΡΠΎ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° ΠΏΡΠΈΠ²ΡΠ΅ΠΌΠ΅Π½ΠΎ Π΄Π° ΡΠ° ΠΏΠΎΠΏΡΠ°Π²ΠΈΡΠ΅ Π»ΠΎΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΈΡΠ΅ Π½Π° Java Π²ΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π·Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΡΠ΅ Π½ΠΈΠ²Π½ΠΎ ΠΏΡΠ΅ΠΌΠ΅ΡΡΡΠ²Π°ΡΠ΅ ΠΎΠ΄ ΡΠΎΠ±ΠΈΡΠ°ΡΠΎΡ Π½Π° ΡΡΠ±ΡΠ΅ ΠΈ Π΄Π° Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡΠ΅ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΡΠ΅ Π½Π° ΠΎΠ²ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π½Π΅ΡΡΠ²Π°Π°Ρ ΠΏΠΎΠΌΠ΅ΡΡ Java ΠΈ ΠΌΠ°ΡΡΠΈΠ½ ΠΊΠΎΠ΄. ΠΠ°ΠΊΠ°ΡΡΠ²Π°ΡΠ΅ΡΠΎ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΡΠ° Π½Π°ΠΌΠ°Π»ΠΈΡΠ΅ Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡΠ° ΠΈ Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΡΠ΅ ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅ ΡΡΠ±ΡΠ΅ ΠΏΡΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΡΠΈΡΠΈΡΠ½ΠΈΡΠ΅ ΡΠ΅Π³ΠΈΠΎΠ½ΠΈ Π½Π° JNI (Java Native Interface) ΡΠΎ ΠΌΠ°ΡΡΠΈΠ½ ΠΊΠΎΠ΄ (Π΄ΠΎΠ΄Π΅ΠΊΠ° Π³ΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΎΠ²ΠΈΠ΅ Π΄Π΅Π»ΠΎΠ²ΠΈ, JVM Π½Π΅ ΡΡΠ΅Π±Π° Π΄Π° ΠΏΠΎΠΌΠ΅ΡΡΡΠ²Π° ΠΊΡΠΈΡΠΈΡΠ½ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ ΠΏΠΎΠ²ΡΠ·Π°Π½ΠΈ ΡΠΎ Π½ΠΈΠ² Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π°Ρ ΡΡΠ»ΠΎΠ²ΠΈ Π·Π° ΡΡΠΊΠ°). ΠΠ°ΠΊΠ°ΡΡΠ²Π°ΡΠ΅ΡΠΎ Π³ΠΈ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π° ΠΊΡΠΈΡΠΈΡΠ½ΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠΈ ΠΎΠ΄ ΠΏΠΎΠ³Π»Π΅Π΄ΠΎΡ Π½Π° ΡΠΎΠ±ΠΈΡΠ°ΡΠΎΡ Π½Π° ΡΡΠ±ΡΠ΅, ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈ Π΄Π° Π³ΠΈ ΡΠΈΡΡΠΈ Π½Π΅Π·Π°ΠΊΠ°ΡΠ΅Π½ΠΈΡΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ.
- ΠΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΠΏΡΠ΅Π»ΠΈΠΌΠΈΠ½Π°ΡΠ½Π° ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° Π·Π° Π΄Π° Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈΡΠ΅ Π΄Π° ΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΠ°Π°Ρ Π²ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΈΡΠ΅ ΠΏΡΠ΅Π΄ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΠΈΠΊΠ° super(...), ΡΡΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π½Π° ΠΌΠ°ΡΠΈΡΠ½Π° ΠΊΠ»Π°ΡΠ° ΠΎΠ΄ Π½Π°ΡΠ»Π΅Π΄Π΅Π½ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π½Π° ΠΊΠ»Π°ΡΠ°, Π΄ΠΎΠΊΠΎΠ»ΠΊΡ ΡΠΈΠ΅ ΠΈΠ·ΡΠ°Π·ΠΈ Π½Π΅ ΡΠ΅ ΠΎΠ΄Π½Π΅ΡΡΠ²Π°Π°Ρ Π½Π° ΠΈΠ½ΡΡΠ°Π½ΡΠ° ΡΠΎΠ·Π΄Π°Π΄Π΅Π½Π° ΠΎΠ΄ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΡ. class Outer { void hello() { System.out.println("ΠΠ΄ΡΠ°Π²ΠΎ"); } class Inner { Inner() { hello(); ΡΡΠΏΠ΅Ρ(); } }
- FFM (Foreign Function & Memory) API Π΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½, ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°ΡΡΠΈ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΠ° Π½Π° Java ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΡΠΎ Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ΅Π½ ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΏΡΠ΅ΠΊΡ ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π°ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ΄ Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ° Π½Π°Π΄Π²ΠΎΡ ΠΎΠ΄ JVM, Π±Π΅Π· ΠΏΡΠΈΠ±Π΅Π³Π½ΡΠ²Π°ΡΠ΅ ΠΊΠΎΠ½ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° JNI (Java Native Interface).
- ΠΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Π½Π΅ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΈ ΡΠΎΠ²ΠΏΠ°ΡΠ°ΡΠ΅ Π½Π° ΡΠ°Π±Π»ΠΎΠ½ΠΈ - Π½Π°ΠΌΠ΅ΡΡΠΎ Π½Π΅ΠΈΡΠΊΠΎΡΠΈΡΡΠ΅Π½ΠΈ, Π½ΠΎ Π½Π΅ΠΎΠΏΡ ΠΎΠ΄Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΈ ΠΎΠ±ΡΠ°ΡΡΠΈ ΠΏΡΠΈ ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π°ΡΠ΅, ΡΠ΅Π³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ Π½Π°Π²Π΅Π΄Π΅ΡΠ΅ Π·Π½Π°ΠΊΠΎΡ β_β. // was String pageName = switch (ΡΡΡΠ°Π½ΠΈΡΠ°) { case GitHubIssuePage(var url, var content, var links, int issueNumber) -> βISSUE #β + issueNumber; ... }; // ΡΠ΅Π³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° String pageName = switch (ΡΡΡΠ°Π½ΠΈΡΠ°) { case GitHubIssuePage(_, _, _, int issueNumber) -> βISSUE #β + issueNumber; };
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π΅ ΠΏΡΠ΅Π»ΠΈΠΌΠΈΠ½Π°ΡΠ½Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° Class-File API Π·Π° ΠΏΠ°ΡΡΠΈΡΠ°ΡΠ΅, Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ ΠΈ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΠΎΠ΄ ΠΊΠ»Π°ΡΠ° Java. ClassFile cf = ClassFile.of(); ClassModel classModel = cf.parse(bytes); Π±Π°ΡΡ[] newBytes = cf.build(classModel.thisClass().asSymbol(), classBuilder -> { for (ClassElement ce : classModel) { if (!(ce ΠΏΡΠΈΠΌΠ΅Ρ Π½Π° MethodModel mm && mm.methodName().stringValue(). startsWith("debug"))) { classBuilder.with(ce);
- ΠΠ°Π²Π° Π°Π»Π°ΡΠΊΠ°ΡΠ° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° Java ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ, ΠΎΠ±Π΅Π·Π±Π΅Π΄Π΅Π½ΠΈ Π²ΠΎ ΡΠΎΡΠΌΠ° Π½Π° Π½Π΅ΠΊΠΎΠ»ΠΊΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΡΠΎ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΏΡΠ΅ΡΡ
ΠΎΠ΄Π½ΠΎ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π° ΠΊΠ»Π°ΡΠΈ, Π±Π΅Π· ΠΎΠ΄Π΄Π΅Π»Π½ΠΎ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΎΠ²ΠΈΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΠΈ Π±Π΅Π· ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π·Π° Π³ΡΠ°Π΄Π΅ΡΠ΅. ΠΠΎΠ²Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡΠ° Π³ΠΎ ΠΎΠ»Π΅ΡΠ½ΡΠ²Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ Π²ΠΎ ΠΊΠΎΠΈ ΠΊΠΎΠ΄ΠΎΡ ΠΎΠ΄ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠ»Π°ΡΠΈ Π΅ ΠΏΠΎΠ΄Π΅Π»Π΅Π½ Π²ΠΎ ΠΏΠΎΡΠ΅Π±Π½ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ. Prog.java: class Prog { public static void main(String[] args) { Helper.run(); } } Helper.java: class Helper { static void run() { System.out.println("ΠΠ΄ΡΠ°Π²ΠΎ!"); } }
ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° ΡΠΎΡΡΠ°Π²Π΅Π½Π° ΠΎΠ΄ Π΄Π²Π΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ βProg.javaβ ΠΈ βHelper.javaβ, ΡΠ΅Π³Π° Π΅ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΠΈ βjava Prog.javaβ, ΠΊΠΎΡΠ° ΡΠ΅ ΡΠ° ΡΠΎΡΡΠ°Π²ΠΈ ΠΊΠ»Π°ΡΠ°ΡΠ° Prog, ΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ° ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ° Π·Π° ΠΊΠ»Π°ΡΠ°ΡΠ° Helper. Π½Π°ΡΠ΄Π΅ΡΠ΅ ΠΈ ΡΠΎΡΡΠ°Π²Π΅ΡΠ΅ ΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° Helper java ΠΈ ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π°ΡΠ΅ Π½Π° Π³Π»Π°Π²Π½ΠΈΠΎΡ ΠΌΠ΅ΡΠΎΠ΄.
- ΠΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ Π²ΡΠΎΡΠ° ΠΏΡΠ΅Π»ΠΈΠΌΠΈΠ½Π°ΡΠ½Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° ΡΠ°Π±Π»ΠΎΠ½ΠΈ Π·Π° ΡΡΡΠΈΠ½Π³ΠΎΠ²ΠΈ, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½ΠΈ ΠΏΠΎΠΊΡΠ°Ρ Π±ΡΠΊΠ²Π°Π»Π½ΠΈΡΠ΅ ΠΆΠΈΡΠΈ ΠΈ ΡΠ΅ΠΊΡΡΡΠ°Π»Π½ΠΈΡΠ΅ Π±Π»ΠΎΠΊΠΎΠ²ΠΈ. Π¨Π°Π±Π»ΠΎΠ½ΠΈΡΠ΅ Π·Π° Π½ΠΈΠ·Π° Π²ΠΈ Π΄ΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Π°Ρ Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΡΠ΅ ΡΠ΅ΠΊΡΡ ΡΠΎ ΠΏΡΠ΅ΡΠΌΠ΅ΡΠ°Π½ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈ ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π±Π΅Π· ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΡ +. ΠΠ°ΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΠΈΠ·ΡΠ°Π·ΠΈΡΠ΅ ΡΠ΅ Π²ΡΡΠΈ ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° Π·Π°ΠΌΠ΅Π½ΠΈ \{..} ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π°Ρ ΡΠΏΠ΅ΡΠΈΡΠ°Π»Π½ΠΈ ΡΠ°ΠΊΡΠ²Π°ΡΠΈ Π·Π° Π΄Π° ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈ ΠΈΡΠΏΡΠ°Π²Π½ΠΎΡΡΠ° Π½Π° Π·Π°ΠΌΠ΅Π½Π΅ΡΠΈΡΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, SQL ΠΌΠΎΡΠΎΡΠΎΡ Π³ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈΡΠ΅ ΡΡΠΎ ΡΠ΅ Π·Π°ΠΌΠ΅Π½ΡΠ²Π°Π°Ρ Π²ΠΎ SQL ΠΊΠΎΠ΄ΠΎΡ ΠΈ Π²ΡΠ°ΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡ java.sql.Statement ΠΊΠ°ΠΊΠΎ ΠΈΠ·Π»Π΅Π·, Π΄ΠΎΠ΄Π΅ΠΊΠ° JSON ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡ ΡΠ° ΡΠ»Π΅Π΄ΠΈ ΠΈΡΠΏΡΠ°Π²Π½ΠΎΡΡΠ° Π½Π° Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ JSON ΠΈ Π²ΡΠ°ΡΠ° JsonNode. String query = "SELECT * FROM Person p WHERE p." + ΡΠ²ΠΎΡΡΡΠ²ΠΎ + " = '" + Π²ΡΠ΅Π΄Π½ΠΎΡΡ + "'"; // was Statement query = SQL."""SELECT * FROM Person p WHERE p.\{property} = '\{value}'"""; // ΡΡΠ°Π½Π°
- ΠΠΎΠ΄Π°Π΄Π΅Π½ Π΅ ΡΠ΅Π΄ΠΌΠΈ ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° Vector API, ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° Π²Π΅ΠΊΡΠΎΡΡΠΊΠΈ ΠΏΡΠ΅ΡΠΌΠ΅ΡΠΊΠΈ ΠΊΠΎΠΈ ΡΠ΅ Π²ΡΡΠ°Ρ ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° Π²Π΅ΠΊΡΠΎΡΡΠΊΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈΡΠ΅ x86_64 ΠΈ AArch64 ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ²Π°Π°Ρ ΠΈΡΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΎ Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ (SIMD). ΠΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π΄Π°Π΄Π΅Π½ΠΈ Π²ΠΎ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ HotSpot JIT Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠ° Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° ΡΠΊΠ°Π»Π°ΡΠ½ΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Π½ΠΎΠ²ΠΈΠΎΡ API ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π° Π½Π° Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΡΠ°ΡΠ° Π·Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ.
- ΠΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΠΏΡΠ΅Π»ΠΈΠΌΠΈΠ½Π°ΡΠ½Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° ΠΏΡΠΎΡΠΈΡΠ΅Π½ΠΈΠΎΡ Stream API ΡΡΠΎ ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ΅ Π½Π° Π²Π°ΡΠΈΡΠ΅ ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΈ ΡΡΠ΅Π΄Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ ΠΊΠΎΡΠΈΡΠ½ΠΎ Π²ΠΎ ΡΠ»ΡΡΠ°ΠΈ ΠΊΠΎΠ³Π° ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈΡΠ΅ Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΠΈΠ½ΡΠ΅ΡΠΌΠ΅Π΄ΠΈΡΠ°ΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π΅ ΡΠ΅ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΈ Π·Π° ΡΠ°ΠΊΠ°Π½Π°ΡΠ° ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅. ΠΠ°ΡΠΈΡΠ½ΠΈΡΠ΅ ΡΠ°ΠΊΡΠ²Π°ΡΠΈ ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π°Π½ΠΈ ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° Π½ΠΎΠ²Π°ΡΠ° ΠΏΠΎΡΡΠ΅Π΄Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ° Stream::gather(Gatherer), ΠΊΠΎΡΠ° Π³ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠ²Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ Π½Π° ΠΏΡΠ΅Π½ΠΎΡΠΎΡ ΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π° Π½Π° ΡΠΏΡΠ°Π²ΡΠ²Π°Ρ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ ΠΎΠ΄ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ Π½Π° Π½ΠΈΠ². jshell> Stream.of(1,2,3,4,5,6,7,8,9).gather(new WindowFixed(3)).toList() $1 ==> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
- ΠΠ° ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π²ΡΠΎΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½ΠΈΠΎΡ API Π·Π° ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½Π° ΠΈΡΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΎΡΡ, ΡΡΠΎ Π³ΠΎ ΠΏΠΎΠ΅Π΄Π½ΠΎΡΡΠ°Π²ΡΠ²Π° ΡΠ°Π·Π²ΠΎΡΠΎΡ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ Π½ΠΈΡΠΊΠΈ ΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΈΠ·Π²ΡΡΠ΅Π½ΠΈ Π²ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½ΠΈΡΠΊΠΈ ΠΊΠ°ΠΊΠΎ Π΅Π΄Π΅Π½ Π±Π»ΠΎΠΊ.
- ΠΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ Π²ΡΠΎΡΠ° ΠΏΡΠ΅Π»ΠΈΠΌΠΈΠ½Π°ΡΠ½Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° ΠΈΠΌΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ°Π½ΠΈ ΠΊΠ»Π°ΡΠΈ ΠΈ Π½Π΅ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ βΠ³Π»Π°Π²Π΅Π½β, ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ ΠΎΡΡΡΠ»ΠΈ ΡΠ°Π²Π½ΠΈΡΠ΅/ΡΡΠ°ΡΠΈΡΠΊΠΈΡΠ΅ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠΈ, ΠΏΡΠ΅Π½Π΅ΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½ΠΈΠ·Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ ΠΈ Π΄ΡΡΠ³ΠΈ Π΅Π½ΡΠΈΡΠ΅ΡΠΈ ΠΏΠΎΠ²ΡΠ·Π°Π½ΠΈ ΡΠΎ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΡΠ° Π½Π° ΠΊΠ»Π°ΡΠ°. // was public class HelloWorld { public static void main(String[] args) { System.out.println("ΠΠ΄ΡΠ°Π²ΠΎ ΡΠ²Π΅Ρ!"); } } // ΡΠ΅Π³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΏΠΎΠ½ΠΈΡΡΠΈΡΠ΅ main() { System.out.println("ΠΠ΄ΡΠ°Π²ΠΎ, Π‘Π²Π΅Ρ!"); }
- ΠΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° Π²ΡΠΎΡ ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° Scoped Values, Π΄ΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΡΠΈ ΠΈΠΌ Π½Π° Π½Π΅ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π΄Π° ΡΠ΅ ΡΠΏΠΎΠ΄Π΅Π»ΡΠ²Π°Π°Ρ Π½ΠΈΠ· Π½ΠΈΡΠΊΠΈ ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ Π΄Π° ΡΠ΅ ΡΠ°Π·ΠΌΠ΅Π½ΡΠ²Π°Π°Ρ Π΅ΡΠΈΠΊΠ°ΡΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ Π΄Π΅ΡΡΠΊΠΈΡΠ΅ Π½ΠΈΡΠΊΠΈ (Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈΡΠ΅ ΡΠ΅ Π½Π°ΡΠ»Π΅Π΄ΡΠ²Π°Π°Ρ). ΠΠΏΡΠ΅ΠΆΠ½ΠΈΡΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π°Π°Ρ Π·Π° Π΄Π° Π³ΠΎ Π·Π°ΠΌΠ΅Π½Π°Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΡ Π½Π° Π½ΠΈΡΠΊΠΈΡΠ΅ Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΈ ΡΠ΅ ΠΏΠΎΠ΅ΡΠΈΠΊΠ°ΡΠ½ΠΈ ΠΊΠΎΠ³Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΠΌΠ½ΠΎΠ³Ρ Π³ΠΎΠ»Π΅ΠΌ Π±ΡΠΎΡ Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈ Π½ΠΈΡΠΊΠΈ (ΠΈΠ»ΡΠ°Π΄Π½ΠΈΡΠΈ ΠΈΠ»ΠΈ ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ Π½ΠΈΡΠΊΠΈ). ΠΠ»Π°Π²Π½Π°ΡΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΏΠΎΠΌΠ΅ΡΡ Scoped Values ββΠΈ thread-local ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π΅ ΡΠΎΠ° ΡΡΠΎ ΠΏΡΠ²ΠΈΡΠ΅ ΡΠ΅ ΠΏΠΈΡΡΠ²Π°Π°Ρ Π΅Π΄Π½Π°Ρ, Π½Π΅ ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π°Ρ Π²ΠΎ ΠΈΠ΄Π½ΠΈΠ½Π° ΠΈ ΠΎΡΡΠ°Π½ΡΠ²Π°Π°Ρ Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΈ ΡΠ°ΠΌΠΎ Π·Π° Π²ΡΠ΅ΠΌΠ΅ΡΡΠ°Π΅ΡΠ΅ΡΠΎ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° Π½ΠΈΡΠΊΠ°ΡΠ°.
- ΠΠ°ΡΠ°Π»Π΅Π»Π½ΠΈΠΎΡ ΡΠΎΠ±ΠΈΡΠ°Ρ Π½Π° ΡΡΠ±ΡΠ΅ Π³ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° ΡΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ Π½ΠΈΠ·ΠΈ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠΈ. ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠ°ΡΠ° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π²ΠΎ Π½Π΅ΠΊΠΎΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΈ ΡΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ Π½ΠΈΠ·ΠΈ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΈ Π΄Π° ΡΠ΅ Π½Π°ΠΌΠ°Π»ΠΈ Π΄ΠΎΡΠ½Π΅ΡΠ΅ΡΠΎ ΠΏΡΠ΅Π΄ Π΄Π° ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π΅ ΡΠΎ ΠΏΡΠ΅Π±Π°ΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ Π·Π° 20%.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡΠ΅ ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π½Π° Π°ΠΆΡΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΎ Π³ΡΠ°ΡΠΈΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ JavaFX 22.
ΠΠ·Π²ΠΎΡ: opennet.ru