Компания Oracle анонсировала (https://blogs.oracle.com/developers/announcing-graalvm) первый релиз проекта GraalVM (http://www.graalvm.org/), в рамках которого развивается универсальная виртуальная машина для запуска приложений, написанных на JavaScript (Node.js)), Python, Ruby, R, любых языках для JVM (Java, Scala, Clojure, Kotlin) и языках для которых может формироваться биткод LLVM (C, C++, Rust). Код проекта https://github.com/oracle/graal распространяется под лицензией GPLv2. Выпуск 1.0 пока имеет статус (https://github.com/oracle/graal/releases) кандидата в релизы.
GraalVM изначально развивалась как универсальная виртуальная машина, способная обеспечить высокопроизводительное выполнение кода на любых языках программирования и предоставляющая средства для организации взаимодействия между кодом на различных языках программирования, давая возможность создавать комбинированные приложения с компонентами на разных языках.
Вместо преобразования структур данных в подобных программах, GraalVM позволяет (https://github.com/oracle/graal/blob/master/truffle/README.md) непосредственно обращаться к объектам и массивам из других языков, убирая изоляцию между языками и позволяя использовать общий runtime. Например, из JavaScript-кода для Node.js можно обращаться к библиотеке классов Java или из кода на Java вызывать функции обработки статистики на языке Python, или запускать код на языке R для создания сложных SVG-графиков. Используя GraalVM программист может сочетать разные языки, выбирая язык наиболее подходящий для каждого вида задач.
GraalVM может применяться как обособленно, так и как часть платформ, подобных OpenJDK и Node.js, или даже встраиваясь как движок обработки данных в СУБД, такие как MySQL и Oracle. Для запуска приложений предлагается стандартизированное окружение для выполнения.
GraalVM предоставляет JIT-компилятор, который может на лету выполнять в JVM код любых скриптовых языков, включая JavaScript, Ruby, Python и R, а также даёт возможность запускать нативный код в JVM, преобразованный в биткод LLVM. Предоставляемый GraalVM инструментарий включает независимые от языков программирования отладчик, систему профилирования и анализатор распределения памяти.
Для языков на базе JVM имеется возможность создания предкомпилированных нативных образов, которые можно выполнять напрямую с минимальным потреблением памяти. Для создания таких исполняемых образов применяется предварительный статический анализ для выявления всего кода, который охватывает выполнение основного Java-метода, после чего к этому коду применяется (https://github.com/oracle/graal/blob/master/substratevm/READ...) полноценная упреждающая компиляция (AOT, ahead-of-time). В результате формируется исполняемый файл, включающий машинный код приложения, готовый к незамедлительному выполнению без лишних прослоек, таких как JVM.
URL: https://blogs.oracle.com/developers/announcing-graalvm
Новость: https://www.opennet.ru/opennews/art.shtml?num=48472