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.
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
| Aspecto | GraalVM JavaScript | Node.js |
|---|---|---|
| Runtime | Executa na JVM | Runtime V8 independente |
| Caso de uso | Incorporado em aplicativos Java | JavaScript do lado do servidor ou ferramentas de linha de comando |
| Inicialização | Parte do processo host | Processo separado |
| Acesso | Host expõe objetos específicos | Acesso total ao SO |
| Desempenho | Compilado JIT, muito rápido | També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
Não. Ambos executam JavaScript, mas o motor do GraalVM é destinado a ser incorporado dentro de uma aplicação JVM, enquanto o Node.js é um ambiente de execução autônomo construído sobre o V8.
Não costuma ser assim. Você escreve JavaScript contra os objetos que o aplicativo host expõe. Saber a que esses objetos correspondem ajuda para uso avançado, mas scripts básicos só precisam de JavaScript.
Velocidade de iteração. Um script recarrega instantaneamente, enquanto um mod compilado precisa ser reconstruído e reiniciado. Para testes rápidos de funcionalidades ou automação pessoal, a criação de scripts é muito mais rápida.
Sim, a aplicação hospedeira decide exatamente quais objetos e classes um script pode acessar. Um cliente pode expor o estado do jogo, dados do jogador e outros internos através desses objetos proxy.