αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžœαŸαž‘αž·αž€αžΆ Java SE 22 αž“αž·αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžŸαŸαž…αž€αŸ’αžαžΈαž™αŸ„αž„αž”αžΎαž€αž…αŸ†αž  OpenJDK 22

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαžšαž™αŸˆαž–αŸαž›αž”αŸ’αžšαžΆαŸ†αž˜αž½αž™αžαŸ‚ Oracle αž”αžΆαž“αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžœαŸαž‘αž·αž€αžΆ Java SE 22 (Java Platform, Standard Edition 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 Exception αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αžαžΆαž˜αžœαž“αŸ’αžαž‡αžΆαž˜αž½αž™αž•αž›αž·αžαž•αž›αž–αžΆαžŽαž·αž‡αŸ’αž‡αž€αž˜αŸ’αž˜αŸ”

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 αž˜αž·αž“αž‚αž½αžšαž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈαžœαžαŸ’αžαž»αžŸαŸ†αžαžΆαž“αŸ‹αžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž–αž½αž€αž‚αŸ αžŠαžΎαž˜αŸ’αž”αžΈαž‡αŸ€αžŸαžœαžΆαž„αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž”αŸ’αžšαžŽαžΆαŸ†αž„)αŸ” αž€αžΆαžšαžαŸ’αž‘αžΆαžŸαŸ‹αž™αž€αžœαžαŸ’αžαž»αžŸαŸ†αžαžΆαž“αŸ‹αŸ—αž…αŸαž‰αž–αžΈαž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž’αŸ’αž“αž€αž”αŸ’αžšαž˜αžΌαž›αžŸαŸ†αžšαžΆαž˜ αžŠαŸ‚αž›αž’αžΆαž…αž”αž“αŸ’αžαžŸαž˜αŸ’αž’αžΆαžαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž˜αž·αž“αž”αžΆαž“αžαŸ’αž‘αžΆαžŸαŸ‹αŸ”
  • αž˜αž»αžαž„αžΆαžšαž”αž‹αž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜ αžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž€αž“αŸ’αžŸαŸ„αž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ constructors αž˜αž»αž“αž–αŸαž›αž αŸ… super(...) αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž αŸ… constructor class αž˜αŸαž–αžΈαž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαž class αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž›αž˜αžšαžαž€ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αž“αŸ’αžŸαŸ„αž˜αž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αž˜αž·αž“αžŸαŸ†αžŠαŸ…αž‘αŸ…αž›αžΎ instance αžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™ constructorαŸ” αžαŸ’αž“αžΆαž€αŸ‹αžαžΆαž„αž€αŸ’αžšαŸ… { void hello() { System.out.println("αž‡αŸ†αžšαžΆαž”αžŸαž½αžš"); } class Inner { Inner() { hello(); super(); } } }
  • FFM (Foreign Function & Memory) API αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž±αŸ’αž™αž˜αžΆαž“αžŸαŸ’αžαŸαžšαž—αžΆαž– αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž˜αžΆαž“αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Java αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΌαžŠαžαžΆαž„αž€αŸ’αžšαŸ… αž“αž·αž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ„αž™αž€αžΆαžšαž αŸ…αž˜αž»αžαž„αžΆαžšαž–αžΈαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžαžΆαž„αž€αŸ’αžšαŸ… αž“αž·αž„αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αžαžΆαž„αž€αŸ’αžšαŸ… JVM αžŠαŸ„αž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž”αŸ’αžšαžΎ JNI (Java Native Interface)αŸ”
  • αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αžαŸαžšαžŠαŸ‚αž›αž‚αŸ’αž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡ αž“αž·αž„αž€αžΆαžšαž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž›αŸ†αž“αžΆαŸ†αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΎαž€ - αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αž’αžαŸαžš αž“αž·αž„αž›αŸ†αž“αžΆαŸ†αžŠαŸ‚αž›αž˜αž·αž“αž”αŸ’αžšαžΎ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž“αŸ…αž–αŸαž›αž αŸ…αž‘αžΌαžšαžŸαž–αŸ’αž‘ αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αžαž½αž’αž€αŸ’αžŸαžš β€œ_” αž”αžΆαž“αŸ” // 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(αž”αŸƒ); byte[] newBytes = cf.build(classModel.thisClass().asSymbol(), classBuilder -> { for (ClassElement ce : classModel) { if (!(ce instanceof MethodModel mm && mm.methodName().stringValue(). startsWith("αž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸ"))) { classBuilder.with(ce);
  • αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ java αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ 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" αž₯αž‘αžΌαžœαž“αŸαŸ‡αžœαžΆαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αž αžΎαž™αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš "java Prog.java" αžŠαŸ‚αž›αž“αžΉαž„αž…αž„αž€αŸ’αžšαž„αžαŸ’αž“αžΆαž€αŸ‹ Prog αž€αŸ†αžŽαžαŸ‹αžŸαŸαž…αž€αŸ’αžαžΈαž™αŸ„αž„αž‘αŸ…αžαŸ’αž“αžΆαž€αŸ‹αž‡αŸ†αž“αž½αž™αŸ” αžŸαŸ’αžœαŸ‚αž„αžšαž€ αž“αž·αž„αž…αž„αž€αŸ’αžšαž„αž―αž€αžŸαžΆαžš 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 αž αžΎαž™αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž€αŸ’αž“αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΆαž›αž‚αŸ’αž“αžΆαž…αŸ†αž–αŸ„αŸ‡αžαž˜αŸ’αž›αŸƒαž…αŸ’αžšαžΎαž“ (ស៊ីមឌី)αŸ” αž˜αž·αž“αžŠαžΌαž…αžŸαž˜αžαŸ’αžαž—αžΆαž–αžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αž„αž€αŸ’αžšαž„ HotSpot JIT αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αŸ’αžœαžΎαžœαž·αž€αž‘αŸαžšαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž“αŸƒαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“ API αžαŸ’αž˜αžΈαž’αŸ’αžœαžΎαž±αŸ’αž™αžœαžΆαž’αžΆαž…αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžœαŸ‰αž·αž…αž‘αŸαžšαž™αŸ‰αžΆαž„αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆαŸ”
  • αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž”αž‹αž˜αž“αŸƒ 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], [ៀ, αŸ₯, ៦], [៧, ៨, ៩]]
  • αž€αŸ†αžŽαŸ‚αž‘αžΈαž–αžΈαžšαž“αŸƒ API αž–αž·αžŸαŸ„αž’αž“αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Structured Concurrency αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαŸ’αž“αžΎαž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αž αžŠαŸ‚αž›αž‡αž½αž™αžŸαž˜αŸ’αžšαž½αž›αžŠαž›αŸ‹αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž–αž αž»αžαŸ’αžŸαŸ‚ αžŠαŸ„αž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž·αž…αŸ’αž…αž€αžΆαžšαž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αŸ’αž“αž»αž„αžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™αž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαž‡αžΆαž”αŸ’αž›αž»αž€αžαŸ‚αž˜αž½αž™αŸ”
  • αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž”αž‹αž˜αž‘αžΈαž–αžΈαžšαž“αŸƒαžαŸ’αž“αžΆαž€αŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ’αžšαž€αžΆαžŸαžŠαŸ„αž™αž”αŸ’αžšαž™αŸ„αž› αž“αž·αž„αž€αžšαžŽαžΈαžŠαŸ‚αž›αž˜αž·αž“αž”αž‰αŸ’αž…αŸαž‰αžˆαŸ’αž˜αŸ„αŸ‡αž“αŸƒαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžš "មេ" αžŠαŸ‚αž›αž’αžΆαž…αž…αŸ‚αž€αž…αžΆαž™αž‡αžΆαž˜αž½αž™αž€αžΆαžšαž”αŸ’αžšαž€αžΆαžŸαž‡αžΆαžŸαžΆαž’αžΆαžšαžŽαŸˆ/αž‹αž·αžαž·αžœαž“αŸ’αž αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž’αžΆαžšαŸαž“αŸƒαž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹ αž“αž·αž„αž’αž„αŸ’αž‚αž—αžΆαž–αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž€αžΆαžšαž”αŸ’αžšαž€αžΆαžŸαžαŸ’αž“αžΆαž€αŸ‹αŸ” // αž‡αžΆαžαŸ’αž“αžΆαž€αŸ‹αžŸαžΆαž’αžΆαžšαžŽαŸˆ HelloWorld { public static void main(String[] args) { System.out.println("Hello world!"); } } // αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αž…αžΆαžαŸ‹αž‘αž»αž€αž‡αžΆαž˜αŸ„αžƒαŸˆ main() { System.out.println("αžŸαž½αžŸαŸ’αžαžΈαž–αž·αž—αž–αž›αŸ„αž€!"); }
  • αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž˜αžΎαž›αž‡αžΆαž˜αž»αž“αž‡αžΆαž›αžΎαž€αž‘αžΈαž–αžΈαžšαž“αŸƒαžαž˜αŸ’αž›αŸƒαžœαž·αžŸαžΆαž›αž—αžΆαž– αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž˜αž·αž“αž’αžΆαž…αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž”αžΆαž“αžŠαžΎαž˜αŸ’αž”αžΈαž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αž“αŸ…αž‘αžΌαž‘αžΆαŸ†αž„αžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™ αž“αž·αž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž”αŸ’αžšαž€αž”αžŠαŸ„αž™αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αžšαžœαžΆαž„αžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™αž€αžΌαž“ (αžαž˜αŸ’αž›αŸƒαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž›αž˜αžšαžαž€)αŸ” αžαž˜αŸ’αž›αŸƒαžŠαŸ‚αž›αž˜αžΆαž“αžœαž·αžŸαžΆαž›αž—αžΆαž–αž€αŸ†αž–αž»αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαžΎαž˜αŸ’αž”αžΈαž‡αŸ†αž“αž½αžŸαž™αž“αŸ’αžαž€αžΆαžšαž’αžαŸαžšαž“αŸƒαžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™-αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αž αžΎαž™αž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž‡αžΆαž„αž“αŸ…αž–αŸαž›αž”αŸ’αžšαžΎαž…αŸ†αž“αž½αž“αžŠαŸαž’αŸ†αž“αŸƒαžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™αž“αž·αž˜αŸ’αž˜αž·αž (αžšαžΆαž”αŸ‹αž–αžΆαž“αŸ‹ αž¬αžšαžΆαž”αŸ‹αž›αžΆαž“αž“αŸƒαžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™)αŸ” αž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆαžŸαŸ†αžαžΆαž“αŸ‹αžšαžœαžΆαž„ Scoped Values β€‹β€‹αž“αž·αž„αž’αžαŸαžš thread-local αž‚αžΊαžαžΆαž’αžαžΈαžαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž˜αŸ’αžαž„ αž˜αž·αž“αž’αžΆαž…αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž”αžΆαž“αž“αŸ…αž–αŸαž›αž’αž“αžΆαž‚αž αž αžΎαž™αž“αŸ…αžαŸ‚αž˜αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ‚αžšαž™αŸˆαž–αŸαž›αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αžšαž”αžŸαŸ‹ thread αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ”
  • αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαž˜αžΌαž›αžŸαŸ†αžšαžΆαž˜αž”αŸ‰αžΆαžšαŸ‰αžΆαž‘αŸ‚αž›αž”αžΆαž“αž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž“αžΌαžœαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž–αŸαž›αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž’αžΆαžšαŸαžŠαŸαž’αŸ†αž“αŸƒαžœαžαŸ’αžαž»αŸ” αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž”αžΆαž“αž’αŸ’αžœαžΎαž±αŸ’αž™αžœαžΆαž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž˜αž½αž™αž…αŸ†αž“αž½αž“αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž’αžΆαžšαŸαžŠαŸαž’αŸ†αž“αŸƒαžœαžαŸ’αžαž»αžŠαžΎαž˜αŸ’αž”αžΈαž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž€αžΆαžšαž–αž“αŸ’αž™αžΆαžšαž–αŸαž›αž˜αž»αž“αž–αŸαž›αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŸαŸ’αžœαŸ‚αž„αžšαž€αžœαžαŸ’αžαž»αž˜αž½αž™ 20% αŸ”

αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ€αž αž’αŸ’αž“αž€αž’αžΆαž…αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž€αžΆαžšαž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž—αž•αŸ’αžŸαžΆαž™αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž‘αŸ…αž€αžΆαž“αŸ‹αžœαŸαž‘αž·αž€αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž˜αžΆαž“αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž€αŸ’αžšαžΆαž αŸ’αžœαž·αž€ JavaFX 22 αŸ”

αž”αŸ’αžšαž—αž–: opennet.ru

αž‘αž·αž‰αž€αžΆαžšαž”αž„αŸ’αž αŸ„αŸ‡αžŠαŸ‚αž›αž’αžΆαž…αž‘αž»αž€αž…αž·αžαŸ’αžαž”αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αŸαž αž‘αŸ†αž–αŸαžšαžŠαŸ‚αž›αž˜αžΆαž“αž€αžΆαžšαž€αžΆαžšαž–αžΆαžš DDoS, αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ VPS VDS πŸ”₯ αž‘αž·αž‰αžŸαŸαžœαžΆαž”αž„αŸ’αž αŸ„αŸ‡αž‚αŸαž αž‘αŸ†αž–αŸαžšαžŠαŸ‚αž›αž’αžΆαž…αž‘αž»αž€αž…αž·αžαŸ’αžαž”αžΆαž“αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž€αžΆαžšαž–αžΆαžš DDoS αž“αž·αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ VPS VDS | ProHoster