استمع إلى المقال

تحدثنا في الدرس السابق من سلسلة تعلّم البرمجة بلغة كوتلن، عن المترجم Compiler والمفسر Interpreter. وأوضحنا طريقة عمل كل منهما وبعض أهم الفروقات بينهما. في هذه المقالة سنتحدث عن كوتلن كلغة برمجة تستهدف برنامج حاسوب جافا الافتراضي Java Virtual Machine.

لغات حاسوب جافا الافتراضي JVM Languages:

ماذا نقصد بـ “لغات حاسوب جافا الافتراضي JVM” بالضبط؟ أليس المقصود من الـ JVM تشغيل لغة جافا فقط بما أن اسمه حاسوب جافا الافتراضي؟.

بالرغم من أن برنامج الـ JVM تم تصميمه في البداية لتعمل عليه البرامج المكتوبة بلغة البرمجة جافا فقط، ولكن لاحقًا تم تصميم لغات عديدة لتعمل على منصة جافا البرمجية. من أهم هذه اللغات البرمجية، لغة كوتلن التي نحن بصدد دراستها في هذه السلسلة.

كل هذه اللغات يتم ترجمة شفراتها إلى لغة آلة تعمل على برنامج JVM. لغة الآلة هذه تسمى جافا بايت كود Java Bytecode. مع العلم، أن برنامج الحاسوب الافتراضي JVM نفسه لا يعرف اللغة المصدرية التي تمت منها ترجمة شفرة الجافا بايت كود هذه، إذا كانت جافا أو كوتلن أو غيرهما. فمهمة الـ JVM هي، قراءة لغة جافا بايت كود وتنفيذها. وسيعمل برنامج المفسر المدمج بالـ JVM، على تفسير وترجمة شفرة جافا بايت كود على الحاسوب الحقيقي الذي يعمل عليه.

برنامج JVM يفهم لغة آلة وحيدة، وهي جافا بايت كود. غض النظر عن لغة البرمجة التي كتب بها المبرمج برنامجه قبل ترجمته إلى جافا بايت كود.

برنامج حاسوب جافا الافتراضي Java Virtual Machine:

فهمنا في الدرس الثاني من هذه الدورة، أن الحاسب لا يفهم لغات البرمجة عالية المستوى. ولأن لغة كوتلن تعتبر من اللغات عالية المستوى، توجب إيجاد طريقة لجعل الحاسب يفهم الشفرات التي يكتبها مبرمجي لغة كوتلن. والتي هي عبارة عن مفردات باللغة الإنجليزية يجب تحويلها إلى لغة الآلة حتى يتم تنفيذها كبرنامج أو تطبيق أو لعبة … الخ.

لذا، عمل مطورو لغة كوتلن على توفير برنامج مترجم Compiler، يجمع ويترجم التعليمات التي يكتبها المبرمج لينتج ملف جديد يحوي شفرة لغة آلة تسمى جافا بايت كود Java bytecode.

بالرغم من أن هذا الملف الذي ينتجه المترجم يحوي شفرة لغة آلة، ولكن لن تنفذ هذه اللغة جميع أنظمة التشغيل. والسبب كما أوضحنا في الدرس الخامس، أن المترجم يعمل على ترجمة الشفرة إلى نوع معين من لغات الآلة والتي لن تفهمها كل أنواع الحواسيب، لأن كل نوع حاسب لديه لغة آلة خاصة به.

جافا بايت كود Java Bytrcode:

إذًا، الحل هو جعل برنامج المترجم ينتج لنا لغة آلة Java bytecode تعمل على برنامج يعمل كحاسوب افتراضي، ومن أهم هذه الحواسيب الافتراضية، الـ Java Virtual Machine، والمعروفة اختصارا بـ JVM. أي بمعنى، أن مبرمج كوتلن سيكتب الشفرة عبر لغة كوتلن، ومن ثم يعمل المترجم Compiler على تجميع وترجمة هذه الشفرة إلى لغة آلة Java Bytecode. لغة الآلة هذه، تعمل على برنامج الحاسوب الافتراضي JVM فقط بعيدًا عن نظام التشغيل.

ولكن كيف سيعمل برنامجنا على كل أنظمة التشغيل؟

حسنًا، كل نظام تشغيل لديه JVM خاص به يحول لغة الجافا بايت كود، إلى لغة آلة يستطيع نظام التشغيل تنفيذها. تتم عملية الترجمة هذه، لأن برنامج الـ JVM يحتوي على مفسر Interpreter وهو خلاف المترجم Compiler كما قلنا في نفس الدرس الخامس، يعمل على تفسير الشفرة البرمجية في ملف الجافا بايت كود سطرًا بسطر أثناء عمل البرنامج. بالتالي، البرامج التي تعتمد على المفسر في ترجمة تعليماتها، ستعمل في أي نظام تشغيل. 

إذًا، يمكننا القول بأن برنامجنا المكتوب بلغة كوتلن والذي ترجمناه عبر المترجم Compiler الخاص بلغة كوتلن، يمكنه العمل على أي نظام تشغيل يتوفر له برنامج JVM خاص به.

ونحن هنا نختار دراسة كوتلن بدلًا عن جافا، لأن كوتلن بها العديد من الميزات غير المتوفرة في جافا. مثل الوظائف الإضافية Extension Functions وأصناف البيانات Data Classes وغيرها. سنتحدث بتفصيل أكبر عن ميزات كوتلن في درس لاحق في هذه السلسلة.

هذا الدرس هو جزء من سلسلة تعليم مبادئ البرمجة بلغة كوتلن. لمُتابعة الدروس منذ البداية ومُشاهدة فهرس المحتويات يمكنك الانتقال إلى الدرس الأول من هنا.

هل أعجبك المحتوى وتريد المزيد منه يصل إلى صندوق بريدك الإلكتروني بشكلٍ دوري؟
انضم إلى قائمة من يقدّرون محتوى إكسڤار واشترك بنشرتنا البريدية.