تُصرّف أداة Native Image تطبيق JVM مسبقًا إلى ملف تنفيذي مستقل أو مكتبة مشتركة.
التصريف من سطر الأوامر
elide native-image -- -cp app.jar com.example.Mainتأتي وسائط المُصرّف بعد --؛ ويسردها الأمر elide native-image -- --help. يحتاج الانعكاس والموارد و JNI والوكلاء
إلى بيانات وصفية لقابلية الوصول. ويحتاج الربط النهائي إلى سلسلة أدوات C على المضيف.
مُخرَج المشروع
amends "elide:project.pkl"
import "elide:Jvm.pkl" as Jvm
import "elide:NativeImage.pkl" as Native
artifacts {
["app-jar"] = new Jvm.Jar {
sources { "main" }
}
["app"] = new Native.NativeImage {
from { "app-jar" }
entrypoint = "com.example.Main"
type = "binary"
options {
optimization = "2"
flags { "-H:+ReportExceptionStackTraces" }
}
}
}| الخاصية | المعنى | القيمة الافتراضية |
|---|---|---|
from | مفاتيح مُخرَجات JAR (لا مسارات)؛ القيمة الفارغة تعني كل ملفات JAR المُعلنة، أو ملف JAR بأصناف المشروع. | لا شيء |
name | اسم ملف المُخرَج. | اسم المشروع |
entrypoint | الصنف الرئيسي. | jvm.main |
moduleName | وحدة الإطلاق لملفات JAR المعيارية؛ راجع أدناه. | الوحدة التي تحتوي على نقطة الدخول |
type | "binary" (ملف تنفيذي) أو "library" (مكتبة مشتركة). | "binary" |
options | خيارات المُصرّف؛ راجع أدناه. | — |
dependsOn | مُخرَجات تُبنى أولًا. | لا شيء |
يُكتب الناتج في .dev/artifacts/native-image/، والوسائط النهائية في native-image.args.
خيارات المُصرّف
خاصية options | المعنى | القيمة الافتراضية |
|---|---|---|
optimization | "auto"، "b" (بناء سريع)، "s"، "0" … "4". | "auto" |
driverMode | "embedded" (مُصرّف Elide) أو "external" (native-image من GRAALVM_HOME/JAVA_HOME). | "embedded" |
verbose | إخراج مفصّل من المُصرّف. | false |
linkAtBuildTime.enabled | ربط كل شيء وقت البناء. | true |
linkAtBuildTime. | الحزم التي تُربط وقت البناء عندما تكون قيمة enabled هي false. | لا شيء |
classInit.default | التهيئة الافتراضية للأصناف: "buildtime" أو "runtime". | "buildtime" |
classInit.buildtime، classInit.runtime | أصناف أو حزم تُهيّأ وقت البناء أو وقت التشغيل. | لا شيء |
exclusions.all | إحداثيات تُستبعد من المسارين كليهما. | ملفات JAR الخاصة بالمُصرّف نفسه |
exclusions.classpath، exclusions.modulepath | إحداثيات تُستبعد من مسار واحد. | لا شيء |
pgo.enabled | تطبيق ملفات التعريف عند وجودها. | true |
pgo.profiles | ملفات التعريف. | لا شيء |
pgo.instrument | بناء صورة مُجهّزة بأدوات قياس تسجّل ملفات التعريف. | false |
pgo.sampling | استخدام ملفات تعريف بأخذ العيّنات. | false |
pgo.autoprofile | ميزات التنميط التلقائي. | false |
features | أصناف ميزات المُصرّف المراد تفعيلها. | لا شيء |
flags | خيارات native-image إضافية؛ تغيير ملف مذكور في أحد الخيارات يؤدي إلى إعادة البناء. | لا شيء |
cflags، ldflags | خيارات إضافية لمُصرّف C والرابط. | لا شيء |
defs | خصائص النظام لبناء الصورة. | لا شيء |
تقبل الكتلة العليا nativeImage { } الخيارات نفسها لكنها لا تطبّقها؛ اضبط options لكل مُخرَج.
التطبيقات المعيارية
إذا احتوى ملف JAR في from على module-info.class:
- توضع ملفات JAR المعيارية والفئة
dependencies.maven.modulesعلى--module-pathمع--add-modules=ALL-MODULE-PATH؛ ويبقى كل ما عداها على classpath. - يُطلَق الملف الثنائي باستخدام
--module <module>/<entrypoint>، معmoduleNameأو الوحدة التي تحتوي على نقطة الدخول. - نقطة الدخول التي لا تنتمي إلى أي وحدة تُبنى من classpath.
لا أثر لـ moduleName من دون ملفات JAR معيارية.
التصريف إلى WebAssembly
أعلن مُخرَجًا من نوع WebImage أو مرّر --tool:wasm-gc / --tool:wasm-lm؛ راجع WebImage.
لتشغيل WASM موجود، راجع WebAssembly. يمكن أن تكون الصورة الأصلية مُدخلًا إلى
صورة حاوية.