ΠŸΠ΅Ρ€Π΅Ρ‚ΡΠΆΠΊΠ°, ΠŸΡ€Π΅ΠΌΠΈΡ Π’ΠŸΡ€ΠΎΠ³Π΅Ρ€, 13.11
ΠŸΠ΅Ρ€Π΅Ρ‚ΡΠΆΠΊΠ°, ΠŸΡ€Π΅ΠΌΠΈΡ Π’ΠŸΡ€ΠΎΠ³Π΅Ρ€, 13.11
ΠŸΠ΅Ρ€Π΅Ρ‚ΡΠΆΠΊΠ°, ΠŸΡ€Π΅ΠΌΠΈΡ Π’ΠŸΡ€ΠΎΠ³Π΅Ρ€, 13.11

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, которая компилируСтся в исполняСмый ΠΊΠΎΠ΄. Π‘Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ в сСбя ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ прилоТСния, Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ к быстрому Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ.

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ