Learn · concepts

O que é Scripting JavaScript GraalVM?

GraalVM JavaScript é um motor JS rápido que roda na JVM. Ele permite que aplicativos Java incorporem JavaScript para que os usuários possam criar scripts de funcionalidades e recarregá-los instantaneamente.

TRtrolPublished 4 min read

O que é GraalVM JavaScript?

GraalVM JavaScript é um motor JavaScript rápido e compatível com os padrões que roda na JVM, parte do projeto GraalVM. Aplicações Java o incorporam para que os usuários possam escrever JavaScript que chama para o programa host e recarrega em tempo real. Em uma aplicação Java, isso significa adicionar ou alterar o comportamento em JavaScript sem recompilar o código Java.

Pense nisso como um ambiente de testes para adicionar funcionalidades. A aplicação expõe certos objetos e métodos para um script, e o script chama esses métodos para realizar tarefas dentro do aplicativo. Quando você altera o script e o salva, o motor o recarrega imediatamente, sem necessidade de reinicialização

Por que os aplicativos incorporam engines de script

Aplicações como clientes do Minecraft incorporam motores JavaScript por algumas razões práticas:

  • Recarregamento a quente: altere um script e veja o efeito sem reiniciar ou reconstruir.
  • Uma superfície segura: o host decide exatamente quais objetos e classes Java um script pode tocar.
  • Iteração rápida: teste novos comportamentos em segundos em vez de minutos de tempo de compilação.
  • Personalização pelo utilizador: permita que os jogadores escrevam as suas próprias funcionalidades numa linguagem familiar

Como se manifesta em um cliente

Um cliente que integra o GraalVM JavaScript geralmente fornece aos scripts um ponto de entrada para se registrarem, seguido de um pequeno conjunto de objetos proxy que conectam o JavaScript aos internos do programa. Os usuários escrevem um script, o colocam em uma pasta de scripts e o motor o carrega. É assim que um cliente pode permitir que os usuários adicionem funcionalidades em JavaScript em vez de compilar um mod.

GraalVM JavaScript vs Node.js

AspectoGraalVM JavaScriptNode.js
RuntimeExecuta na JVMRuntime V8 independente
Caso de usoIncorporado em aplicativos JavaJavaScript do lado do servidor ou ferramentas de linha de comando
InicializaçãoParte do processo hostProcesso separado
AcessoHost expõe objetos específicosAcesso total ao SO
DesempenhoCompilado JIT, muito rápidoTambém muito rápido, diferentes compensações

Ambos são excelentes para executar JavaScript; eles são apenas construídos para contextos diferentes. GraalVM é a escolha certa quando você quer que um aplicativo Java permita que os usuários façam scripts em JavaScript.

FAQ