GraalJS é um mecanismo JavaScript implementado em Java sobre GraalVM. É um tempo de execução compatível com ECMAScript para executar aplicativos JavaScript e Node.js e inclui todos os benefícios da pilha GraalVM, incluindo interoperabilidade com Java. GraalJS é um projeto de código aberto.
Os objetivos do GraalJS são:
A partir da versão 23.1.0, GraalJS está disponível como artefatos Maven. Também fornecemos distribuições independentes dos tempos de execução JavaScript e Node.js.
Graças ao GraalJS, você pode incorporar facilmente JavaScript em um aplicativo Java. Todos os artefatos necessários podem ser baixados diretamente do Maven Central.
Todos os artefatos relevantes para incorporadores podem ser encontrados no grupo de dependência Maven org.graalvm.polyglot.
Abaixo está uma configuração mínima de dependência do Maven que você pode copiar para o seu 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 >
Isso permite o GraalJS, que é desenvolvido com base no Oracle GraalVM e licenciado sob os Termos e Condições Gratuitos do GraalVM (GFTC). Use js-community
se quiser usar GraalJS desenvolvido no GraalVM Community Edition.
Para acessar artefatos isolados poliglotas (somente GFTC), use o sufixo -isolate
(por exemplo, js-isolate
).
Veja a demonstração de incorporação poliglota no GitHub para obter um exemplo executável completo.
Você pode usar GraalJS com GraalVM JDK, Oracle JDK ou OpenJDK. Se você preferir rodar em uma JVM padrão, dê uma olhada em Executar GraalJS em um JDK padrão. Observe que neste modo muitos recursos e otimizações do GraalVM não estão disponíveis. Devido a essas limitações, a execução em uma JVM padrão não é um recurso suportado - use um GraalVM.
Distribuições independentes são publicadas no GitHub. Existem duas opções de tempo de execução de idioma para escolher:
Para distingui-los, um autônomo que vem com uma JVM possui um infixo -jvm
no nome. Além disso, a versão GraalVM Community Edition tem -community
no nome, por exemplo, graaljs-community-
.
Quatro configurações diferentes estão disponíveis para cada combinação de componente e plataforma:
Tempo de execução | Licença | Arquivo Infixo |
---|---|---|
Nativo | GFTC | nenhum |
JVM | GFTC | -jvm |
Nativo | UPL | -community |
JVM | UPL | -community-jvm |
Para instalar o GraalJS de forma independente, baixe e extraia o arquivo da página GitHub Releases. Após a instalação, o executável js
ou node
no subdiretório bin
pode ser usado para executar arquivos JavaScript ou módulos Node, respectivamente. Se nenhum arquivo for fornecido na linha de comando, um shell interativo (REPL) será gerado.
Nota: Se você estiver usando macOS, primeiro remova o atributo quarentena do arquivo:
shell sudo xattr -r -d com.apple.quarantine
.tar.gz
GraalJS pode executar aplicativos Node.js não modificados. O tempo de execução Node.js do GraalVM é baseado em uma versão recente do Node.js e executa o mecanismo GraalJS em vez do Google V8. Ele fornece alta compatibilidade com os pacotes NPM existentes. Isso inclui pacotes NPM com implementações nativas. Observe que alguns módulos NPM podem precisar ser recompilados a partir do código-fonte com GraalJS (se forem fornecidos com binários que foram compilados para Node.js baseados em V8).
Node.js está disponível como uma distribuição independente separada. Veja como começar a usar o Node.js.
Uma extensa documentação do usuário está disponível no site. Além disso, há documentação neste repositório em docs, para usuários e colaboradores. Para contribuir, veja também um guia sobre como construir GraalJS a partir do código-fonte.
GraalJS é compatível com a especificação ECMAScript 2024. Novos recursos, novas propostas de ECMAScript, programadas para chegar em edições futuras, são adicionadas com frequência e estão acessíveis por meio de uma opção. Veja o CHANGELOG.md para as propostas já adotadas.
Além disso, algumas extensões populares de outros mecanismos são suportadas. Consulte Compatibilidade com GraalJS.
O mecanismo JavaScript principal é um aplicativo Java e, portanto, é compatível com todos os sistemas operacionais que fornecem uma JVM compatível. Consulte Executar GraalJS em um Stock JDK. Fornecemos distribuições binárias e oferecemos suporte total ao GraalJS no Linux (x64, AArch64), macOS (x64, AArch64) e Windows (x64), atualmente.
Consulte graalvm.org/community para saber como permanecer conectado com a comunidade de desenvolvimento. O canal graaljs em graalvm.slack.com é uma boa maneira de entrar em contato com a equipe por trás do GraalJS. Relate quaisquer problemas específicos do GraalJS no repositório oracle/graaljs GitHub.
O código-fonte GraalJS e as distribuições da comunidade estão disponíveis sob a Licença Permissiva Universal (UPL), Versão 1.0.
Artefatos não comunitários são fornecidos sob os Termos e Condições Gratuitos do GraalVM (GFTC), incluindo Licença para Versões de Adotadores Iniciais.