Π‘Π»Π΅Π΄ ΡΠ΅ΡΡ ΠΌΠ΅ΡΠ΅ΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° 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). Π Π΅ΡΠ΅ΡΠ΅Π½ΡΠ½Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Java SE 26, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½Π° Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° OpenJDK, Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΎΡΠ²ΠΎΡΠ΅Π½Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π· 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) Ρ Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ ΡΠ±ΠΎΡΠ½ΠΈΡΠΈ Π½Π° Π±ΠΎΠΊΠ»ΡΠΊ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ZGC (Z Garbage Collector). ΠΡΠΎΠΌΡΠ½Π°ΡΠ° ΠΎΠ·Π½Π°ΡΠ°Π²Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΊΠ΅ΡΠΈΡΠ°Π½ΠΈ Java-ΠΎΠ±Π΅ΠΊΡΠΈ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π΅Π½ ΡΠΎΡΠΌΠ°Ρ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌ ΠΎΡ ΡΠ±ΠΎΡΠ½ΠΈΡΠΈΡΠ΅ Π½Π° Π±ΠΎΠΊΠ»ΡΠΊ, Π²ΠΌΠ΅ΡΡΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ°Π½Π΅ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½ΠΈΡ Π½Π° ΠΊΠ΅ΡΠ°. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° AOT ΠΊΠ΅Ρ Π½Π°ΠΌΠ°Π»ΡΠ²Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ ΠΈ ΡΡΠΊΠΎΡΡΠ²Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° (warmup) Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π° HotSpot.
- Π API HTTP Client Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ» HTTP/3, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π°Ρ ΡΡΡ ΡΡΡΠ²ΡΡΠΈ ΠΏΠΎ HTTP/3 ΡΠ»Π΅Π΄ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π°.
- ΠΠΎΠ²ΠΈΡΠ΅Π½Π° Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΡΠ±ΠΎΡΠ½ΠΈΠΊΠ° Π½Π° Π±ΠΎΠΊΠ»ΡΠΊ G1, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈΡΠ΅ Π·Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΡΠΎΠΊΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²Π΅ΡΠ΅ Π½Π° ΡΠ±ΠΎΡΠ½ΠΈΠΊΠ° Π½Π° Π±ΠΎΠΊΠ»ΡΠΊ.
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ Π΅ Π²ΡΠΎΡΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π΅Π½ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π° API Π·Π° ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ Ρ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΡΠΊΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅, ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ ΠΈ ΡΠΏΠΈΡΡΡΠΈ Ρ ΠΎΡΠ·ΠΎΠ²Π°Π½ΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΠΎΡΠΌΠ°Ρ PEM (Privacy-Enhanced Mail).
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ Π΅ Π·Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅ ΡΠ΅ΡΡΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π΅Π½ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π° API Π·Π° ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½Π° ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎΡΡ (Structured Concurrency), ΠΊΠΎΠΉΡΠΎ ΠΎΠΏΡΠΎΡΡΡΠ²Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅Π· ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π·Π°Π΄Π°ΡΠΈ, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½ΠΈ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠΎΡΠΎΡΠΈ, ΠΊΠ°ΡΠΎ Π΅Π΄ΠΈΠ½Π΅Π½ Π±Π»ΠΎΠΊ.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡΠΎΡΠ° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½Π° Π²Π΅ΡΡΠΈΡ Π½Π° API Lazy Constants Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΎΠ±Π΅ΠΊΡΠΈ, ΡΡΠ΄ΡΡΠΆΠ°ΡΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΈ Π΄Π°Π½Π½ΠΈ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Π½ΠΈ Π² JVM ΠΊΠ°ΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ. ΠΡΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΈ Π½Π° ΠΏΠΎΠ»Π΅ΡΠ°ΡΠ° Ρ ΠΊΠ»ΡΡΠΎΠ²Π° Π΄ΡΠΌΠ° βfinalβ. ΠΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΡ βfinalβ, Π½ΠΎΠ²ΠΈΡΡ API ΡΠ°Π·Π΄Π΅Π»Ρ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΠΈ ΡΡΡ Π½Π°ΡΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, Π³Π°ΡΠ°Π½ΡΠΈΡΠ°, ΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΡΠ°ΠΌΠΎ Π²Π΅Π΄Π½ΡΠΆ, Π½Π°ΠΌΠ°Π»ΡΠ²Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π² ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈΡ ΠΊΠΎΠ΄ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΡΠ²ΠΈΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ (constant-folding), ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄ΠΈ ΡΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ ΡΠ°ΠΌΠΎ Π²ΡΠ² Π²ΡΡΡΠ΅ΡΠ½ΠΈΡ ΠΊΠΎΠ΄ Π½Π° JDK. class Application { // ΠΠ΅ΡΠ΅: // static final UserService USERS = new UserService(); // Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅: static final StableValue 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
