Напишите свой первый скрипт JavaScript для GraalVM (2026)

Напишите свой первый JavaScript-скрипт для GraalVM: зарегистрируйте точку входа, перехватите событие и выполняйте горячую перезагрузку без перекомпиляции Java. С рабочим примером.

Guidesby trqUpdated June 4, 2026
Key takeaways
  • Первый скрипт состоит из трех шагов: регистрация, перехват события и сохранение его в папку скриптов.
  • Хост предоставляет GraalVM, поэтому вы пишете настоящий JavaScript и никогда не устанавливаете его самостоятельно.
  • Скрипты мгновенно обновляются без перекомпиляции Java.
  • Скрипт может вызывать только объекты, которые хост предоставляет через белый список доступа к хосту.

Написание первого скрипта GraalVM на JavaScript включает в себя три небольших шага: регистрацию скрипта в точке входа хоста, привязку его к событию или модулю и сохранение в папку скриптов, чтобы движок мог его загрузить. Движок работает на Polyglot API GraalVM, поэтому скрипт является настоящим JavaScript и перезагружается без перекомпиляции какого-либо Java.

Где используется Opal

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

Что вам понадобится в первую очередь

Программа-хост, которая встраивает движок. Хост поставляется с GraalVM JavaScript, предоставляет набор объектов для вызова скриптами и отслеживает папку со скриптами. GraalVM вам устанавливать не нужно; он включен в хост. Вы пишете обычный JavaScript, используя объекты, которые предоставляет хост.

Понимание того, что эти объекты представляют, полезно, но для начала вам не потребуется писать ни строчки на Java.

Три шага

1

Найдите папку со скриптами

Хост загружает скрипты из известной директории при запуске. Точный путь можно найти в документации хоста
2

Создайте файл скрипта

Создайте новый файл .js (или .mjs) в этой папке. Хост обнаружит его при следующей загрузке скриптов.

3

Зарегистрировать и подключить

Внутри файла зарегистрируйте скрипт с точкой входа хоста, затем подключите поведение к событию или определите модуль.

Минимальный пример

Большинство хостов предоставляют сценарию одну точку входа для регистрации и несколько прокси-объектов, которые связывают JavaScript с программой. Точные имена зависят от хоста, но структура одинакова. Первый сценарий обычно просто объявляет о себе и реагирует на одно событие:

// Register the script with the host (names vary by host).
script.register({
  name: "hello-world",
  version: "1.0.0",
});
 
// React to an event the host exposes.
script.on("enable", () => {
  client.print("Hello from my first script.");
});

Обратитесь к собственной документации API хоста, чтобы узнать реальные имена объектов и методов. Суть в следующем: зарегистрируйтесь, затем перехватите событие или определите модуль

Горячая перезагрузка во время работы

Сохраните файл и перезагрузите скрипты (или перезапустите хост, если он не поддерживает живую перезагрузку). Изменения вступают в силу без перекомпиляции. Этот быстрый цикл — основная причина использования скриптов вместо компиляции мода: скрипт перезагружается за секунды, а скомпилированный мод необходимо пересобрать и перезапустить.

ПодходЦикл итерацииЯзыкКогда подходит
Скрипт JavaScript GraalVMРедактировать, сохранить, перезагрузитьJavaScriptБыстрые изменения, пользовательское поведение
Скомпилированный модПересобрать, перезапуститьJava или KotlinБолее крупные функции, глубокая интеграция

Что могут и чего не могут сценарии

Скрипт может обращаться к объектам, предоставляемым хостом, и ни к каким другим. Хост определяет, к каким классам и методам скрипт может получить доступ, используя белый список доступа хоста GraalVM Polyglot, а по умолчанию доступ запрещен. Это обеспечивает безопасность и предсказуемость скриптов. Если нужный объект не предоставлен, хост должен добавить его; получить доступ к объектам за пределами белого списка со стороны скрипта невозможно.

Часто задаваемые вопросы