ΠžΠ±Ρ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° Java SE 22 ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΈ OpenJDK 22 ΠΎΡ‚Π²ΠΎΡ€Π΅Π½Π° Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°

По ΡˆΠ΅ΡΡ‚ мСсСци Ρ€Π°Π·Π²ΠΎΡ˜, 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

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€