GraalJS es un motor JavaScript implementado en Java sobre GraalVM. Es un tiempo de ejecución compatible con ECMAScript para ejecutar aplicaciones JavaScript y Node.js e incluye todos los beneficios de la pila GraalVM, incluida la interoperabilidad con Java. GraalJS es un proyecto de código abierto.
Los objetivos de GraalJS son:
A partir de la versión 23.1.0, GraalJS está disponible como artefactos Maven. También proporcionamos distribuciones independientes de los tiempos de ejecución de JavaScript y Node.js.
Gracias a GraalJS, puedes integrar fácilmente JavaScript en una aplicación Java. Todos los artefactos necesarios se pueden descargar directamente desde Maven Central.
Todos los artefactos relevantes para los integradores se pueden encontrar en el grupo de dependencia de Maven org.graalvm.polyglot.
A continuación se muestra una configuración de dependencia mínima de Maven que puede copiar en su 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 >
Esto habilita GraalJS, que está construido sobre Oracle GraalVM y tiene licencia según los Términos y condiciones gratuitos de GraalVM (GFTC). Utilice js-community
si desea utilizar GraalJS creado en GraalVM Community Edition.
Para acceder a artefactos aislados políglotas (solo GFTC), utilice el sufijo -isolate
en su lugar (por ejemplo, js-isolate
).
Vea la demostración de incrustación políglota en GitHub para ver un ejemplo ejecutable completo.
Puede utilizar GraalJS con GraalVM JDK, Oracle JDK u OpenJDK. Si prefiere ejecutar en una JVM estándar, eche un vistazo a Ejecutar GraalJS en un JDK estándar. Tenga en cuenta que en este modo muchas funciones y optimizaciones de GraalVM no están disponibles. Debido a esas limitaciones, la ejecución en una JVM estándar no es una característica compatible; utilice GraalVM en su lugar.
Las distribuciones independientes se publican en GitHub. Hay dos opciones de tiempo de ejecución de idioma para elegir:
Para distinguirlos, un servidor independiente que viene con una JVM tiene el infijo -jvm
en el nombre. Además, la versión GraalVM Community Edition tiene -community
en el nombre, por ejemplo, graaljs-community-
.
Hay cuatro configuraciones diferentes disponibles para cada combinación de componente y plataforma:
Tiempo de ejecución | Licencia | Archivo infijo |
---|---|---|
Nativo | GFTC | ninguno |
JVM | GFTC | -jvm |
Nativo | UPL | -community |
JVM | UPL | -community-jvm |
Para instalar GraalJS de forma independiente, descargue y extraiga el archivo de la página de lanzamientos de GitHub. Después de la instalación, el ejecutable js
o node
en el subdirectorio bin
se puede usar para ejecutar archivos JavaScript o módulos Node, respectivamente. Si no se proporciona ningún archivo en la línea de comando, se generará un shell interactivo (REPL).
Nota: Si utiliza macOS, primero elimine el atributo de cuarentena del archivo:
shell sudo xattr -r -d com.apple.quarantine
.tar.gz
GraalJS puede ejecutar aplicaciones Node.js sin modificar. El tiempo de ejecución de Node.js de GraalVM se basa en una versión reciente de Node.js y ejecuta el motor GraalJS en lugar de Google V8. Proporciona alta compatibilidad con los paquetes NPM existentes. Esto incluye paquetes NPM con implementaciones nativas. Tenga en cuenta que es posible que sea necesario volver a compilar algunos módulos NPM desde el código fuente con GraalJS (si se envían con archivos binarios compilados para Node.js basado en V8).
Node.js está disponible como una distribución independiente. Vea cómo empezar con Node.js.
Amplia documentación de usuario disponible en el sitio web. Además, hay documentación en este repositorio en documentos, para usuarios y contribuyentes. Para contribuir, consulte también una guía sobre cómo crear GraalJS a partir del código fuente.
GraalJS es compatible con la especificación ECMAScript 2024. Nuevas características, nuevas propuestas de ECMAScript, programadas para futuras ediciones, se agregan con frecuencia y están accesibles detrás de una opción. Consulte CHANGELOG.md para conocer las propuestas ya adoptadas.
Además, se admiten algunas extensiones populares de otros motores. Consulte Compatibilidad de GraalJS.
El motor principal de JavaScript es una aplicación Java y, por tanto, es compatible con todos los sistemas operativos que proporcionen una JVM compatible. Consulte Ejecutar GraalJS en un JDK estándar. Proporcionamos distribuciones binarias y somos totalmente compatibles con GraalJS en Linux (x64, AArch64), macOS (x64, AArch64) y Windows (x64), actualmente.
Visite graalvm.org/community para saber cómo mantenerse conectado con la comunidad de desarrollo. El canal graaljs en graalvm.slack.com es una buena manera de ponerse en contacto con el equipo detrás de GraalJS. Informe cualquier problema específico de GraalJS en el repositorio de Oracle/graaljs GitHub.
El código fuente de GraalJS y las distribuciones comunitarias están disponibles bajo la Licencia Permisiva Universal (UPL), Versión 1.0.
Los artefactos no comunitarios se proporcionan según los Términos y condiciones gratuitos de GraalVM (GFTC), incluida la licencia para las versiones de adopción temprana.