ΠΠΎΡΠ»Π΅ ΡΠ΅ΡΡΠΈ ΠΌΠ΅ΡΡΡΠ΅Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Oracle ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Java SE 26 (Java Platform, Standard Edition 26), Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠ°Π»ΠΎΠ½Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΡΠΊΡΡΡΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ OpenJDK. ΠΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π² Java SE 26 ΡΠΎΡ ΡΠ°Π½Π΅Π½Π° ΠΎΠ±ΡΠ°ΡΠ½Π°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ ΠΏΡΠΎΡΠ»ΡΠΌΠΈ Π²ΡΠΏΡΡΠΊΠ°ΠΌΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Java β Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ°Π½Π΅Π΅ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ Java-ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½Ρ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ. ΠΠΎΡΠΎΠ²ΡΠ΅ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ±ΠΎΡΠΊΠΈ Java SE 26 (JDK, JRE ΠΈ Server JRE) ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Ρ Π΄Π»Ρ Linux (x86_64, AArch64), Windows (x86_64) ΠΈ macOS (x86_64, AArch64). Π Π°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½Π°Ρ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° OpenJDK ΡΡΠ°Π»ΠΎΠ½Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Java SE 26 ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠΊΡΡΡΠ° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ GPLv2 Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠΌΠΈ GNU ClassPath, ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΠΈΠΌΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ Ρ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°ΠΌΠΈ.
Java SE 26 ΠΎΡΠ½Π΅ΡΡΠ½ ΠΊ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Π²ΡΠΏΡΡΠΊΠΎΠ² Ρ ΠΎΠ±ΡΡΠ½ΡΠΌ ΡΡΠΎΠΊΠΎΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΡΠ΄ΡΡ Π²ΡΠΏΡΡΠΊΠ°ΡΡΡΡ Π΄ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠ΅Π»ΠΈΠ·Π°. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Π΅ΡΠΊΠΈ Ρ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΡΡΠΎΠΊΠΎΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ (LTS) ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Java SE 25, Java SE 21 ΠΈΠ»ΠΈ Java SE 17, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄ΡΡ Π²ΡΠΏΡΡΠΊΠ°ΡΡΡΡ Π΄ΠΎ 2033, 2031 ΠΈ 2029 Π³ΠΎΠ΄ΠΎΠ² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ (ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ β Π΄ΠΎ ΡΠ΅Π½ΡΡΠ±ΡΡ 2030, 2028 ΠΈ 2026 Π³ΠΎΠ΄ΠΎΠ²). Π Π°ΡΡΠΈΡΠ΅Π½Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° LTS-Π²Π΅ΡΠΊΠΈ Java SE 8 ΠΏΡΠΎΠ΄Π»ΠΈΡΡΡ Π΄ΠΎ 2030 Π³ΠΎΠ΄Π°, Π° Java SE 11 β Π΄ΠΎ 2032 Π³ΠΎΠ΄Π°.
Π‘ΡΠ΅Π΄ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Java SE 26 (1, 2, 3, 4):
- Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π²ΡΠ²ΠΎΠ΄ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π³Π»ΡΠ±ΠΎΠΊΠΎΠΉ ΡΠ΅ΡΠ»Π΅ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ, ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ Β«finalΒ». Π Π±ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ·ΡΠΊΠ° ΠΈ, ΡΡΠ΅Π΄ΠΈ ΠΏΡΠΎΡΠ΅Π³ΠΎ, ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠΎΠ»Ρ, ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΡΠ΅ ΠΊΠ°ΠΊ final, ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅, ΡΠ±ΡΠ°Π² ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ Π΄Π»Ρ ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· Π³Π»ΡΠ±ΠΎΠΊΡΡ ΡΠ΅ΡΠ»Π΅ΠΊΡΠΈΡ (API Reflection).
- Π£Π΄Π°Π»ΡΠ½ API Applet (java.applet.Applet*, javax.swing.JApplet), ΠΏΡΠΈΠΌΠ΅Π½ΡΠ²ΡΠΈΠΉΡΡ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅. ΠΠ°Π½Π½ΡΠΉ API ΠΏΠΎΡΠ΅ΡΡΠ» Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Java-ΠΏΠ»Π°Π³ΠΈΠ½Π° Π΄Π»Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ² ΠΈ Π±ΡΠ» ΠΎΠ±ΡΡΠ²Π»Π΅Π½ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌ Π² 2021 Π³ΠΎΠ΄Ρ.
- Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΡΡΠ° (AOT β ahead-of-time) c Π»ΡΠ±ΡΠΌΠΈ ΡΠ±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ ΠΌΡΡΠΎΡΠ°, Π²ΠΊΠ»ΡΡΠ°Ρ ZGC (Z Garbage Collector). ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Java-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² ΠΏΠ°ΠΌΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΈ Π½Π΅ Π·Π°Π²ΠΈΡΡΡΠΈΠΉ ΠΎΡ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΌΡΡΠΎΡΠ° ΡΠΎΡΠΌΠ°Ρ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΡΠΌΠΎΠ³ΠΎ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³Π° Π² ΠΏΠ°ΠΌΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ ΠΊΡΡΠ°. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ AOT-ΠΊΡΡΠ° ΡΠΎΠΊΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ° ΠΈ ΡΡΠΊΠΎΡΡΠ΅Ρ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ (warmup) Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ HotSpot.
- Π API HTTP Client Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° HTTP/3, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌ ΠΏΠΎ HTTP/3 ΠΏΠΎΡΠ»Π΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊΠΎΠ΄Π°.
- ΠΠΎΠ²ΡΡΠ΅Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ±ΠΎΡΡΠΈΠΊΠ° ΠΌΡΡΠΎΡΠ° G1, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ Π΄Π»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ ΡΠ±ΠΎΡΡΠΈΠΊΠ° ΠΌΡΡΠΎΡΠ°.
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ Π²ΡΠΎΡΠΎΠΉ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ API Π΄Π»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Ρ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΊΠ»ΡΡΠ°ΠΌΠΈ, ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°ΠΌΠΈ ΠΈ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ ΠΎΡΠΎΠ·Π²Π°Π½Π½ΡΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΡΠΌΠ°Ρ PEM (Pivacy-Enhanced Mail).
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΡΠΎΠΉ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ API Π΄Π»Ρ cΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° (Structured Concurrency), ΡΠΏΡΠΎΡΠ°ΡΡΠ΅Π³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π·Π° ΡΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π·Π°Π΄Π°Ρ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ Π² ΡΠ°Π·Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠ°Ρ , ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ Π²ΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡ API Lazy Constants Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΌΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΠΌΠΈ Π² JVM ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ. Π ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΠΏΠΎΠ»ΡΠΌ Ρ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ Β«finalΒ». Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Β«finalΒ» Π½ΠΎΠ²ΡΠΉ API ΡΠ°Π·Π΄Π΅Π»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈ ΠΈΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·, ΡΠΎΠΊΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠ²ΠΎΡΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ (constant-folding), ΡΠ°Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΠ΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌ ΠΊΠΎΠ΄Π΅ JDK. class Application { // ΠΡΠ»ΠΎ: // static final UserService USERS = new UserService(); // Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ: static final StableValue<UserService> USERS = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); } }
- Π ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ΅ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ ΠΎΠ±ΡΠ°Π·ΡΠΎΠΌ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ ΡΠ΅ΡΠ²ΡΡΡΡΠΉ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΡ ΡΠΈΠΏΠΎΠ² (int, byte, char ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΠΈΠΏΡ, Π½Π΅ ΡΠ²Π»ΡΡΡΠΈΠ΅ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ) Π²ΠΎ Π²ΡΠ΅Ρ Π²ΠΈΠ΄Π°Ρ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ², Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ Β«instanceofΒ» ΠΈ Π² Π±Π»ΠΎΠΊΠ°Ρ Β«switchΒ». switch (x.getStatus()) { case 0 -> Β«okayΒ»; case 1 -> Β«warningΒ»; case 2 -> Β«errorΒ»; case int i -> Β«unknown status: Β» + i; } if (i instanceof byte b) { β¦ b β¦ }
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° ΠΎΠ΄ΠΈΠ½Π½Π°Π΄ΡΠ°ΡΠ°Ρ ΡΠ΅ΡΡΠΎΠ²Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ API Vector, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠ΅Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ Π²Π΅ΠΊΡΠΎΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²Π΅ΠΊΡΠΎΡΠ½ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² x86_64 ΠΈ AArch64 ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ°Π·Ρ ΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ (SIMD). Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ Π² JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ΅ HotSpot Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΏΠΎ Π°Π²ΡΠΎΠ²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠΊΠ°Π»ΡΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, Π½ΠΎΠ²ΡΠΉ API Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ²Π½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π΄Π»Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ .
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Oracle Π°Π½ΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π»Π° ΠΏΡΠΎΠ΅ΠΊΡ Detroit, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ Π² ΡΠΎΡΡΠ°Π²Π΅ OpenJDK ΠΈ Π½Π°ΡΠ΅Π»Π΅Π½ Π½Π° ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Java, JavaScript ΠΈ Python. Π ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π°ΠΌΠ΅ΡΠ΅Π½Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΡ Π² ΠΏΡΠΎΡΠ΅ΡΡ JVM runtime Ρ JavaScript-Π΄Π²ΠΈΠΆΠΊΠΎΠΌ V8 ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ CPython. Π Π°Π½Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Oracle ΡΠΆΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π°Π»Π° JavaScript-Π΄Π²ΠΈΠΆΠΎΠΊ Nashorn, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ ΠΏΠΎΠ²Π΅ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ JVM, Π½ΠΎ ΡΠ²Π΅ΡΠ½ΡΠ»Π° ΠΏΡΠΎΠ΅ΠΊΡ ΠΈΠ·-Π·Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΡΠΈΡΠ½ΠΎΡΡΠΈ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ JavaScript Π² ΡΡΠ»ΠΎΠ²ΠΈΡΡ , ΠΊΠΎΠ³Π΄Π° ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ° Π·Π°Π²ΡΠ·Π°Π½Π° Π½Π° Π΄Π²ΠΈΠΆΠΊΠ΅ V8.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ JavaFX 26. Π Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠ΅ ΡΠ°ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ Π²ΡΠΏΡΡΠΊ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠΉ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ GraalVM 26, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° JavaScript (Node.js), Python, Ruby, R, Π»ΡΠ±ΡΡ
ΡΠ·ΡΠΊΠ°Ρ
Π΄Π»Ρ JVM (Java, Scala, Clojure, Kotlin) ΠΈ ΡΠ·ΡΠΊΠ°Ρ
, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ
ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡΡΡ Π±ΠΈΡΠΊΠΎΠ΄ LLVM (C, C++, Rust).
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
