Learn · concepts
Что такое JavaScript-скриптинг в GraalVM?
GraalVM JavaScript — это быстрый JS-движок, работающий на JVM. Он позволяет Java-приложениям встраивать JavaScript, чтобы пользователи могли создавать сценарии и мгновенно их перезагружать.
Что такое GraalVM JavaScript?
GraalVM JavaScript — это быстрый, соответствующий стандартам движок JavaScript, работающий на JVM, являющийся частью проекта GraalVM. Java-приложения внедряют его, чтобы пользователи могли писать JavaScript, который вызывает функции хост-программы и перезагружается на лету. В Java-приложении это означает добавление или изменение поведения в JavaScript без перекомпиляции Java-кода.
Представьте себе это как песочницу для добавления функций. Приложение предоставляет скрипту определенные объекты и методы, и скрипт вызывает эти методы для выполнения работы внутри приложения. Когда вы изменяете скрипт и сохраняете его, движок немедленно перезагружает его, перезапуск не требуется
Почему приложения встраивают движки скриптов
Приложения, такие как клиенты Minecraft, встраивают движки JavaScript по нескольким практическим причинам:
- Горячая перезагрузка: измените скрипт и увидите результат без перезапуска или пересборки.
- Безопасная среда: хост определяет, какие объекты и классы Java скрипт может затрагивать.
- Быстрая итерация: тестируйте новое поведение за секунды вместо минут времени компиляции.
- Пользовательская настройка: позволяйте игрокам писать собственные функции на знакомом языке
Как это проявляется у клиента
Клиент, использующий GraalVM JavaScript, обычно предоставляет скриптам точку входа для регистрации, а затем небольшой набор прокси-объектов, которые связывают JavaScript с внутренними компонентами программы. Пользователи пишут скрипт, помещают его в папку со скриптами, и движок загружает его. Таким образом, клиент может позволить пользователям добавлять функции на JavaScript вместо компиляции мода.
GraalVM JavaScript против Node.js
| Аспект | GraalVM JavaScript | Node.js |
|---|---|---|
| Среда выполнения | Работает на JVM | Автономная среда выполнения на основе V8 |
| Область применения | Встраивается в Java-приложения | JavaScript для серверной части или CLI-инструменты |
| Запуск | Часть процесса хоста | Отдельный процесс |
| Доступ | Хост предоставляет определенные объекты | Полный доступ к ОС |
| Производительность | JIT-компиляция, очень быстро | Также очень быстро, разные компромиссы |
Оба отлично подходят для запуска JavaScript; они просто созданы для разных контекстов. GraalVM — правильный выбор, когда вам нужно, чтобы Java-приложение позволяло пользователям писать сценарии на JavaScript.
FAQ
Нет. Оба выполняют JavaScript, но движок GraalVM предназначен для встраивания внутрь приложения JVM, в то время как Node.js — это автономная среда выполнения, построенная на базе V8.
Обычно нет. Вы пишете JavaScript для объектов, которые предоставляет основное приложение. Знание того, что эти объекты представляют, помогает при продвинутом использовании, но для базовых скриптов достаточно JavaScript.
Скорость итераций. Скрипт перезагружается мгновенно, в то время как скомпилированный мод необходимо пересобрать и перезапустить. Для быстрой проверки новых функций или личной автоматизации, скриптинг значительно быстрее.
Да, хостовое приложение решает, какие именно объекты и классы может затрагивать скрипт. Клиент может предоставить состояние игры, данные игрока и другие внутренние данные через эти прокси-объекты.