Un artefacto WebImage con backend = "wasm-gc" compila Java o Kotlin a WasmGC: un módulo
WebAssembly cuyos objetos viven en el heap con recolección de basura del navegador, más un cargador JavaScript que lo
descarga y lo inicia. Para ejecutar un archivo .wasm existente con Elide, consulte WebAssembly.
Requisitos previos
- Binaryen 119 o posterior, con
wasm-asen elPATHdurante la compilación. - Código que cumpla los requisitos de Native Image: metadatos de alcanzabilidad para reflexión, recursos y proxies; sin dependencias nativas.
Compilar
hello-wasm/
elide.pkl
src/main/java/Hello.javapublic class Hello {
public static void main(String[] args) {
System.out.println("Hello from WasmGC");
}
}amends "elide:project.pkl"
import "elide:Jvm.pkl" as jvm
import "elide:NativeImage.pkl" as nativeImage
name = "hello-wasm"
artifacts {
["app-jar"] = new jvm.Jar {
sources { "main" }
}
["web"] = new nativeImage.WebImage {
from { "app-jar" }
name = "hello"
entrypoint = "Hello"
backend = "wasm-gc"
runtime = "browser"
}
}elide buildLa salida va a .dev/artifacts/native-image/:
| Archivo | Desplegar | Tamaño de un hola mundo |
|---|---|---|
hello.js | Sí: el cargador. | 110 KB |
hello.js.wasm | Sí: el módulo. | 1,3 MB (480 KB con gzip) |
hello.js.wat | No: forma de texto, para inspección. | 32 MB |
hello.js.map | Opcional: se genera con sourceMap = true. |
| Propiedad | Valor para el navegador |
|---|---|
backend | "wasm-gc" (el predeterminado). |
runtime | "browser", o "generic" para mantener la compatibilidad con Node en el mismo cargador. |
autoRun | true (por defecto) ejecuta main cuando se carga hello.js. |
Otras propiedades y opciones del compilador: WebImage.
Cargarlo en una página
Coloque index.html junto al paquete:
<!doctype html>
<html lang="en">
<meta charset="utf-8" />
<title>Hello WasmGC</title>
<body>
<script src="./hello.js"></script>
</body>
</html>elide dev --no-tui --port 8000 .dev/artifacts/native-imageAbra http://localhost:8000/; Hello from WasmGC aparece en la consola del navegador.
- El cargador solicita el módulo en su propia URL más
.wasm, así que mantengahello.jsyhello.js.wasmen el mismo directorio. - Cárguelo con un
<script>clásico. Contype="module"el cargador solicita en su lugar la URL de la página más.wasm. - Sírvalo por HTTP o HTTPS; las URL
file://no funcionan. System.outescribe en la consola del navegador.
Para desplegar, copie hello.js, hello.js.wasm y la página a cualquier alojamiento estático.
Compatibilidad de navegadores
Los paquetes WasmGC necesitan la recolección de basura de WebAssembly y el manejo de excepciones con exnref:
| Navegador | Versión mínima |
|---|---|
| Chrome, Edge | 137 |
| Firefox | 131 |
| Safari | 18.4 |
Un navegador más antiguo rechaza el módulo con un CompileError al cargar la página. Para hosts sin WasmGC,
consulte Edge WASM.