Π£ Π½Π°Ρ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠ»Π΅Π³ Π¨Π΅Π»Π°Π΅Π² β ΠΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌ Java ahead of time Ρ GraalVM ΠΈΠ»ΠΈ ΡΠΊΠ°ΡΠ°ΡΡ Π² ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΌ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΌ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅, Π²ΠΈΠ΄Π΅ΠΎ ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ»ΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½ΠΎ Π½Π° ΡΡΡΠ±. ΠΠ»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΠ· ΡΠΎΡΠΌΡ Π½ΠΈΠΆΠ΅:
ΠΡΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ Π½Π΅
Π·Π°Π³ΡΡΠ·ΠΈΠ»ΠΈΡΡ
ΠΠΠΠΠΠ’Π ΠΠΠΠ‘Π¬ ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ
ΠΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΎ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ Π²ΠΈΠ΄Π΅ΠΎ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ° Π½Π°ΠΏΠΈΡΠΈΡΠ΅ Π² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ Π²Π½ΠΈΠ·Ρ
ΡΡΡΠ°Π½ΠΈΡΡ.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ° ClipSaver.ru
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ Java-ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡΡ : β Π²Π΅ΡΠ½ΠΎΠΉ β JPoint: https://jrg.su/gTrwHx β ΠΎΡΠ΅Π½ΡΡ β Joker: https://jrg.su/h7yvG4 β β . . . . ΠΠ½Π°ΡΠΎΠΊ ΡΠ°Π½ΡΠ°ΠΉΠΌΠΎΠ² VM ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΡ , ΠΊΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΠΈ ΠΏΡΠΎΡΡΠΎ Π½Π° ΡΡΡΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π²Π΅ΡΠΈ ΠΎ ΡΠ°Π½ΡΠ°ΠΉΠΌΠ°Ρ . Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΠ»Π΅Π³ ΠΈΠ· ΠΏΠ΅ΡΠ²ΡΡ ΡΡΠΊ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΎΠ± ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ GraalVM β ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎ Π½Π΅ΠΉ ΠΈ Π±ΡΠ΄Π΅Ρ ΡΡΠΎΡ Π΄ΠΎΠΊΠ»Π°Π΄, ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°ΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π° Java, Π½Π΅ ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π½Π° Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡΡ . GraalVM β Π²ΡΡΠΎΠΊΠΎΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π°Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π° Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ°Ρ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΡΠ·ΡΠΊΠΈ: Java, Kotlin, Scala, JavaScript, Python, Ruby, R ΠΈ Π΄Π°ΠΆΠ΅ Π‘ ΠΈ Π‘++ ΠΈ ΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅. ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ GraalVM ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ JVM bytecode Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ ahead-of-time, ΡΠΎΠ·Π΄Π°Π²Π°Ρ ΠΎΠ±ΡΠ°Π·Ρ ΠΎΠ±ΡΡΠ½ΡΡ Java-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ JVM, Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π½ΡΠ΅ ΡΡΠΎΠΊΠΈ ΠΈ ΡΡΠ΅Π±ΡΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½Π°Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π° β SubstrateVM, Π½Π°ΠΏΠΈΡΠ°Π½Π½Π°Ρ Π½Π° Java ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡΠ°Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΌΡΡΠΎΡΠ°, ΠΊΡΡΠ° ΠΊΠΎΠ΄Π°, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΡΠΎΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ JVM. ΠΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎΠ± ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ SubstrateVM, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΈ Π΅Π³ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΡ . ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· Java-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ°Π·Π° (ΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡ ΡΠΌΠ΅ΡΠ°Π½Π½ΡΠ΅ ΡΡΠ²ΡΡΠ²Π° ΠΊ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠ°ΠΌ Π² ΠΊΠΎΠ΄Π΅ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π΄ΠΊΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ). ΠΡΡΡΠ½ΠΈΠΌ, ΠΊΠ°ΠΊ ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ Π½ΡΠΆΠ½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Reflection API, Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ ΡΠ΅ΡΡΡΡΠΎΠ², JNI, Unsafe ΠΈ ΠΏΡΠΎΡΠΈΠ΅ ΠΆΠΈΡΠ΅ΠΉΡΠΊΠΈΠ΅ ΠΌΠ΅Π»ΠΎΡΠΈ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ profile-guided-optimizations Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±ΡΡΡΡΡΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ², Π½Π΅ ΡΠ΅ΡΡΡΡΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΠΈΠ»Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π°. ΠΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ahead-of-time, ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. P. S. Π Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ ΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ, Π½Ρ ΡΠ°Π·Π²Π΅ ΡΡΠΎ ΡΠΈΡΡΠΎ Π΄Π»Ρ Π³Π°Π»ΠΎΡΠΊΠΈ.