يصرّف مُخرَج WebImage ذو backend = "wasm-gc" شيفرة Java أو Kotlin إلى WasmGC: وحدة
WebAssembly تعيش كائناتها في كومة المتصفح المُدارة بجامع المهملات، ومعها محمّل JavaScript يجلبها ويشغّلها. لتشغيل ملف
.wasm موجود باستخدام Elide، راجع WebAssembly.
المتطلبات المسبقة
- Binaryen الإصدار 119 أو أحدث، مع وجود
wasm-asفيPATHوقت البناء. - شيفرة تستوفي متطلبات Native Image: بيانات وصفية لقابلية الوصول من أجل الانعكاس والموارد والكائنات الوكيلة (proxies)؛ ودون تبعيات أصلية.
البناء
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 buildتذهب المخرجات إلى .dev/artifacts/native-image/:
| الملف | يُنشر | الحجم لبرنامج hello world |
|---|---|---|
hello.js | نعم: المحمّل. | 110 KB |
hello.js.wasm | نعم: الوحدة. | 1.3 MB (480 KB بعد ضغط gzip) |
hello.js.wat | لا: الصيغة النصية، للفحص. | 32 MB |
hello.js.map | اختياري: يُنتج مع sourceMap = true. |
| الخاصية | القيمة للمتصفح |
|---|---|
backend | "wasm-gc" (الافتراضي). |
runtime | "browser"، أو "generic" للإبقاء على دعم Node في المحمّل نفسه. |
autoRun | تشغّل القيمة true (الافتراضية) الدالة main عند تحميل hello.js. |
خصائص أخرى وخيارات المُصرّف: WebImage.
التحميل في صفحة
ضع index.html بجانب الحزمة:
<!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-imageافتح http://localhost:8000/؛ فتظهر Hello from WasmGC في وحدة تحكم المتصفح.
- يطلب المحمّل الوحدة من عنوان URL الخاص به مضافًا إليه
.wasm، لذا أبقِhello.jsوhello.js.wasmفي المجلد نفسه. - حمّله بوسم
<script>تقليدي. فمعtype="module"يطلب المحمّل بدلًا من ذلك عنوان URL الصفحة مضافًا إليه.wasm. - قدّم الملفات عبر HTTP أو HTTPS؛ فعناوين
file://لا تعمل. - تكتب
System.outإلى وحدة تحكم المتصفح.
للنشر، انسخ hello.js و hello.js.wasm والصفحة إلى أي استضافة ثابتة.
دعم المتصفحات
تحتاج حزم WasmGC إلى جمع المهملات في WebAssembly ومعالجة الاستثناءات مع exnref:
| المتصفح | أدنى إصدار |
|---|---|
| Chrome، Edge | 137 |
| Firefox | 131 |
| Safari | 18.4 |
يرفض المتصفح الأقدم الوحدة بخطأ CompileError عند تحميل الصفحة. لخدمة بيئات لا تدعم WasmGC، راجع
Edge WASM.