GraalJS — это движок JavaScript, реализованный на Java поверх GraalVM. Это совместимая с ECMAScript среда выполнения для выполнения приложений JavaScript и Node.js, которая включает в себя все преимущества стека GraalVM, включая совместимость с Java. GraalJS — проект с открытым исходным кодом.
Цели GraalJS:
Начиная с версии 23.1.0 GraalJS доступен как артефакты Maven. Мы также предоставляем автономные дистрибутивы сред выполнения JavaScript и Node.js.
Благодаря GraalJS вы можете легко встроить JavaScript в приложение Java. Все необходимые артефакты можно скачать прямо с Maven Central.
Все артефакты, относящиеся к средствам внедрения, можно найти в группе зависимостей Maven org.graalvm.polyglot.
Ниже приведена минимальная настройка зависимостей Maven, которую вы можете скопировать в свой pom.xml :
< dependency >
< groupId >org.graalvm.polyglot groupId >
< artifactId >polyglot artifactId >
< version >${graaljs.version} version >
dependency >
< dependency >
< groupId >org.graalvm.polyglot groupId >
< artifactId >js artifactId >
< version >${graaljs.version} version >
< type >pom type >
dependency >
Это позволяет использовать GraalJS, построенный на базе Oracle GraalVM и лицензируемый в соответствии с Условиями использования GraalVM Free (GFTC). Используйте js-community
, если вы хотите использовать GraalJS, созданный на базе GraalVM Community Edition.
Чтобы получить доступ к артефактам полиглотной изоляции (только GFTC), вместо этого используйте суффикс -isolate
(например, js-isolate
).
Полный работоспособный пример см. в демонстрации внедрения полиглотов на GitHub.
Вы можете использовать GraalJS с GraalVM JDK, Oracle JDK или OpenJDK. Если вы предпочитаете использовать стандартную JVM, ознакомьтесь с разделом «Запуск GraalJS на стандартном JDK». Обратите внимание, что в этом режиме многие функции и оптимизации GraalVM недоступны. Из-за этих ограничений работа на стандартной JVM не поддерживается — вместо этого используйте GraalVM.
Автономные дистрибутивы публикуются на GitHub. На выбор доступны два варианта языка выполнения:
Чтобы различать их, автономная версия, поставляемая с JVM, имеет в имени инфикс -jvm
. Кроме того, версия GraalVM Community Edition имеет в названии -community
, например, graaljs-community-
.
Для каждой комбинации компонентов и платформы доступны четыре различные конфигурации:
Время выполнения | Лицензия | Архивный инфикс |
---|---|---|
Родной | ГФТК | никто |
JVM | ГФТК | -jvm |
Родной | УПЛ | -community |
JVM | УПЛ | -community-jvm |
Чтобы установить GraalJS из автономной версии, загрузите и распакуйте архив со страницы выпусков GitHub. После установки исполняемый файл js
или node
в подкаталоге bin
можно использовать для запуска файлов JavaScript или модулей Node соответственно. Если в командной строке не указан файл, будет запущена интерактивная оболочка (REPL).
Примечание. Если вы используете macOS, сначала удалите атрибут карантина из архива:
shell sudo xattr -r -d com.apple.quarantine
.tar.gz
GraalJS может запускать немодифицированные приложения Node.js. Среда выполнения GraalVM Node.js основана на последней версии Node.js и использует движок GraalJS вместо Google V8. Он обеспечивает высокую совместимость с существующими пакетами NPM. Сюда входят пакеты NPM с собственными реализациями. Обратите внимание, что некоторые модули NPM могут потребовать перекомпиляции из исходного кода с помощью GraalJS (если они поставляются с двоичными файлами, скомпилированными для Node.js на основе V8).
Node.js доступен как отдельный автономный дистрибутив. Узнайте, как начать работу с Node.js.
На сайте доступна обширная пользовательская документация. Кроме того, в этом репозитории в разделе «Документация» есть документация для пользователей и участников. Если вы хотите внести свой вклад, см. также руководство по сборке GraalJS из исходного кода.
GraalJS совместим со спецификацией ECMAScript 2024. Новые функции, новые предложения ECMAScript, которые появятся в будущих выпусках, добавляются часто и доступны через опцию. См. CHANGELOG.md, чтобы ознакомиться с уже принятыми предложениями.
Кроме того, поддерживаются некоторые популярные расширения других движков. См. Совместимость с GraalJS.
Базовый движок JavaScript представляет собой приложение Java и, следовательно, совместим с любой операционной системой, предоставляющей совместимую JVM. См. Запуск GraalJS на стандартном JDK. В настоящее время мы предоставляем двоичные дистрибутивы и полностью поддерживаем GraalJS в Linux (x64, AArch64), macOS (x64, AArch64) и Windows (x64).
Посетите сайт graalvm.org/community, чтобы узнать, как оставаться на связи с сообществом разработчиков. Канал graaljs на graalvm.slack.com — хороший способ связаться с командой GraalJS. Сообщайте о любых проблемах, связанных с GraalJS, в репозитории oracle/graaljs GitHub.
Исходный код GraalJS и дистрибутивы сообщества доступны по лицензии Universal Permissive License (UPL) версии 1.0.
Артефакты, не принадлежащие сообществу, предоставляются в соответствии с Условиями и положениями бесплатного использования GraalVM (GFTC), включая лицензию на ранние версии.