انتقل إلى المحتوى

Native Image

صرّف تطبيق JVM إلى ملف تنفيذي أصلي أو مكتبة مشتركة باستخدام elide native-image أو مُخرَج مشروع Elide، أو صرّفه إلى WebAssembly.

في هذه الصفحة

تُصرّف أداة 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.packagesالحزم التي تُربط وقت البناء عندما تكون قيمة 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. يمكن أن تكون الصورة الأصلية مُدخلًا إلى صورة حاوية.

هل كانت هذه الصفحة مفيدة؟