Компания Oracle представила универсальную виртуальную машину GraalVM

20 апреля 2018 года

Компания Oracle анонсировала первый релиз проекта GraalVM, в рамках которого развивается универсальная виртуальная машина для запуска приложений, написанных на JavaScript (Node.js), Python, Ruby, R, любых языках для JVM (Java, Scala, Clojure, Kotlin) и языках, для которых может формироваться биткод LLVM (C, C++, Rust). Код проекта распространяется под лицензией GPLv2. Несмотря на анонс от Oracle, выпуск GraalVM 1.0 пока имеет статус кандидата в релизы.

GraalVM изначально развивалась как универсальная виртуальная машина, способная обеспечить высокопроизводительное выполнение кода на любых языках программирования и предоставляющая средства для организации взаимодействия между кодом на различных языках, дающая возможность создавать комбинированные приложения с компонентами на разных языках.

Вместо преобразования структур данных в подобных программах, GraalVM позволяет (Архивная копия от 23 октября 2020 на Wayback Machine) непосредственно обращаться к объектам и массивам из других языков, убирая изоляцию между языками и позволяя использовать общий runtime. Например, из JavaScript-кода для Node.js можно обращаться к библиотеке классов Java или из кода на Java вызывать функции обработки статистики на языке Python, или запускать код на языке R для создания сложных SVG-графиков. Используя GraalVM программист может сочетать в одном проекте разные языки, выбирая язык наиболее подходящий для каждого вида задач.

GraalVM может применяться как для создания обособленных исполняемых приложений, так и как часть платформ, подобных OpenJDK и Node.js, или даже встраиваясь (Архивная копия от 14 августа 2020 на Wayback Machine) как движок обработки данных в СУБД, таких как MySQL и Oracle. Для запуска приложений предлагается стандартизированное окружение для выполнения на базе HotSpot JVM. GraalVM предоставляет JIT-компилятор, который может на лету выполнять в JVM код любых скриптовых языков, включая JavaScript, Ruby, Python и R, а также даёт возможность запускать нативный код в JVM, преобразованный в биткод LLVM. Предоставляемый GraalVM инструментарий включает независимые от языков программирования отладчик, систему профилирования и анализатор распределения памяти.

Для языков на базе JVM имеется возможность (Архивная копия от 12 ноября 2020 на Wayback Machine) создания скомпилированных нативных образов, которые можно выполнять напрямую с минимальным потреблением памяти. Для создания таких исполняемых образов применяется предварительный статический анализ для выявления всего кода, который охватывает выполнение основного Java-метода, после чего к этому коду применяется полноценная упреждающая компиляция (AOT, ahead-of-time). Функциональность управления памятью и потоками реализована через подключение специальной Substrate VM, которая может компилироваться в исполняемый код. В результате формируется исполняемый файл, включающий машинный код приложения, готовый к незамедлительному выполнению без громоздких прослоек, таких как HotSpot VM.

Источники

править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Компания Oracle представила универсальную виртуальную машину GraalVM», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.