Oracle Π°Π½ΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π»Π° ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½Ρ GraalVM
Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ Π½Π° JavaScript (Node.js), Python, Ruby, R, Π½Π° ΡΠ·ΡΠΊΠ°Ρ Π΄Π»Ρ JVM ΠΈ Π½Π° ΡΠ·ΡΠΊΠ°Ρ , Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ Π±ΠΈΡΠΊΠΎΠ΄ LLVM. ΠΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠ° GraalVM ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ GPLv2.
ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Oracle ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ»Π° ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ΅Π»ΠΈΠ· GraalVM, ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΄Π»Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ ΡΒ ΡΠ°Π·Π½ΡΠΌΠΈ Π―Π. Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ Π½Π°Β JavaScript (Node.js), Python, Ruby, R, Π½Π°Β ΡΠ·ΡΠΊΠ°Ρ Π΄Π»Ρ JVM (Java, Scala, Clojure, Kotlin) ΠΈΒ Π½Π°Β ΡΠ·ΡΠΊΠ°Ρ , Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ Π±ΠΈΡΠΊΠΎΠ΄ LLVM (C, C++, Rust). ΠΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ GPLv2. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π°Β Π°Π½ΠΎΠ½Ρ ΠΎΡΒ Oracle, ΠΎΠ½Β ΠΏΠΎΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ ΡΡΠ°ΡΡΡ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠ° Π²Β ΡΠ΅Π»ΠΈΠ·Ρ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ
GraalVM ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊΒ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΠΈΒ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌ ΠΈΠ·Β Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΈΒ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΡΡ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·Β JavaScript-ΠΊΠΎΠ΄Π° Π΄Π»Ρ Node.js Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊΒ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ² Java.
GraalVM ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΠΎΡΠΎΠ±Π»Π΅Π½Π½ΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²Β ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°ΡΡΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ OpenJDK ΠΈΒ Node.js. Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΌΠ°ΡΠΈΠ½Ρ ΠΊΠ°ΠΊ Π΄Π²ΠΈΠΆΠΎΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π²Β Π‘Π£ΠΠ.
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ GraalVM
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ Π½Π°Β Π±Π°Π·Π΅ HotSpot JVM. GraalVM ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΡΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²Β JVM ΠΊΠΎΠ΄ Π»ΡΠ±ΡΡ ΡΠΊΡΠΈΠΏΡΠΎΠ²ΡΡ ΡΠ·ΡΠΊΠΎΠ², Π²ΠΊΠ»ΡΡΠ°Ρ JavaScript, Ruby, Python ΠΈΒ R.Β Π’Π°ΠΊΠΆΠ΅ ΠΌΠ°ΡΠΈΠ½Π° Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π½Π°ΡΠΈΠ²Π½ΡΠΉ ΠΊΠΎΠ΄ Π²Β JVM, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΡΠΉ Π²Β Π±ΠΈΡΠΊΠΎΠ΄ LLVM. ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π²Β ΡΠ΅Π±Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ ΠΎΡΒ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ, ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΒ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΠ°ΡΠΈΠ²Π½ΡΠ΅ ΠΎΠ±ΡΠ°Π·Ρ
ΠΠ»Ρ ΡΠ·ΡΠΊΠΎΠ² Π½Π°Β Π±Π°Π·Π΅ JVM ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π°ΡΠΈΠ²Π½ΡΠ΅ ΠΎΠ±ΡΠ°Π·Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ ΡΒ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ. Π‘Π½Π°ΡΠ°Π»Π° ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· Π²ΡΡΠ²Π»ΡΠ΅Ρ Π²Π΅ΡΡ ΠΊΠΎΠ΄ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ Java-ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΠ°Π»Π΅Π΅ ΠΊΒ Π½Π΅ΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½Π°Ρ ΡΠΏΡΠ΅ΠΆΠ΄Π°ΡΡΠ°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ (AOT).
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Substrate VM
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΡΡ ΠΈΒ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ SubstrateΒ VM, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π²Β ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄. Π‘ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π²Β ΡΠ΅Π±Ρ ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΊΒ Π±ΡΡΡΡΠΎΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.