إنشاء صورة أصلية
الترجمة قبل التشغيل
إنشاء صورة أصلية درس مجاني في Java Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Java Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Java Academy 4 دروس في المجموع.
بناء صورة أصلية
تحوّل أداة native-image الشيفرة البايتية المترجمة لـ Java إلى ملف تنفيذي أصلي واحد ومستقل بذاته. يشرح هذا الدرس عملية البناء، وما يحدث خلف الكواليس، وكيفية تشغيل النتيجة.
ابدأ بـ Java عادية
تبدأ الصورة الأصلية من أصناف مترجمة عادية. إليك برنامجًا بسيطًا سنتخيّل أننا نترجمه إلى شيفرة أصلية.
public class Hello {
public static void main(String[] args) {
System.out.println("Hello from a native binary!");
}
}ترجم أولًا، ثم ابنِ
تتكون العملية من خطوتين: تنتج javac Hello.java أولًا الملف Hello.class؛ ثم تنتج native-image Hello ملفًا تنفيذيًا اسمه hello. ويستغرق البناء وقتًا أطول بكثير من الترجمة، لأنه يحلل البرنامج بأكمله.
تحليل العالم المغلق
يجري native-image تحليل العالم المغلق؛ إذ يجب أن يرى كل الشيفرة التي يمكن أن تعمل على الإطلاق. وبدءًا من main، يتتبع كل دالة يمكن الوصول إليها ولا يضمّن في الملف الثنائي إلا تلك الدوال. أما كل ما يتعذر الوصول إليه فيُحذف (إزالة الشيفرة الميتة في وقت الربط).
الترجمة مسبقًا
تُترجم الدوال التي يمكن الوصول إليها إلى شيفرة آلة أصلية مسبقًا. وبما أنه لا توجد شيفرة بايتية لتفسيرها ولا JIT، فلا توجد أيضًا فترة إحماء؛ إذ يعمل البرنامج بأقصى سرعة منذ تعليمة التشغيل الأولى.
التهيئة في وقت البناء
لتحقيق بدء تشغيل سريع، يمكن لـ native-image تشغيل المُهيئات الساكنة في وقت البناء ودمج الكومة الناتجة في الصورة (أي كومة الصورة). وهذا يعني أن بعض الكائنات تكون موجودة مسبقًا في اللحظة التي يبدأ فيها البرنامج.
تشغيل الملف التنفيذي
الناتج ملف تنفيذي عادي لنظام التشغيل. يمكنك تشغيله مباشرةً، فلا حاجة إلى java -jar أو إلى تثبيت JVM على الجهاز المستهدف. كما يكون ثابتًا بالكامل أو إلى حد كبير، بحسب الخيارات.
خيارات البناء الشائعة
تتضمن الخيارات المفيدة ما يلي:
-o name— اسم ملف الناتج.--no-fallback— يفشل بدلًا من إصدار صورة احتياطية تعتمد على JVM.-O2/-O3— مستوى التحسين.--static— ملف ثنائي مرتبط ارتباطًا ثابتًا بالكامل (Linux).
الذاكرة والقرص
يستهلك البناء نفسه قدرًا كبيرًا من الذاكرة؛ فقد تحتاج التطبيقات الكبيرة إلى عدة غيغابايتات من ذاكرة RAM ودقائق من وقت المعالج. تُدفع هذه الكلفة مرة واحدة في وقت البناء، مقابل بدء تشغيل سريع ومنخفض الكلفة أثناء التشغيل.
البناء عبر Maven/Gradle
في المشاريع الحقيقية، نادرًا ما تستدعي native-image يدويًا. تدمج إضافتا GraalVM المسماة native-build-tools الأداة في Maven (native:compile) وGradle (nativeCompile)، بحيث يصبح الملف الثنائي جزءًا من مسار البناء المعتاد.
التحقق من سرعة بدء التشغيل
بعد البناء، قارن سرعة بدء التشغيل: قد يستغرق تشغيل java -jar مئات المللي ثانية، بينما يعيد الملف الثنائي الأصلي النتيجة خلال بضع مللي ثوانٍ. وقياس هذا الفرق هو الغرض الأساسي من التحول إلى التشغيل الأصلي.
تحقّق سريعًا
اختبر مدى فهمك لبناء الصور الأصلية.
مراجعة
تعلّمت كيفية بناء native-image:
- ابدأ من الشيفرة البايتية المترجمة؛ إذ ينتج
native-imageملفًا تنفيذيًا مستقلًا بذاته. - يحدد تحليل العالم المغلق كل الشيفرة التي يمكن الوصول إليها انطلاقًا من
main. - تُترجم الشيفرة التي يمكن الوصول إليها مسبقًا، بينما تُحذف الشيفرة التي يتعذر الوصول إليها.
- تدمج التهيئة في وقت البناء كومة صورة لتحقيق بدء تشغيل سريع.
- يستغرق البناء وقتًا طويلًا ويستهلك قدرًا كبيرًا من الذاكرة؛ لذا ادمجه عبر إضافات Maven/Gradle.
الأسئلة الشائعة
هل درس «إنشاء صورة أصلية» مجاني؟
نعم — نص درس «إنشاء صورة أصلية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Java Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Java Academy 4 دروس في المجموع.
ماذا ستتعلم في «إنشاء صورة أصلية»؟
الترجمة قبل التشغيل تتمرن على Java Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Java Academy؟
لا تُشترط خبرة سابقة. Java Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «إنشاء صورة أصلية»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Java Academy هذا؟
نعم. كل درس في Java Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- ما GraalVM
- إنشاء صورة أصلية
- الانعكاس والتهيئة
- مقايضات الصورة الأصلية