ما اشتغلت برمجة عمليًا لكني طالب برمجة في المرحلة الأخيرة من الدراسة بمشيئة الله، الجافا كانت الخطة الأساسية في برنامجي الدراسي و أخذناها بتعمق، و كذلك أخذت مساق أندرويد بنيت من خلاله أكم برنامج بسيط و مساق نظم تشغيل مبني على الLinux يشرح إدارة العمليات (processes) و إدارة الذاكرة و الذاكرة الافتراضية (virtual ram و الpaging)، و مساق لمعمارية x86 من خلال لغة التجميع يتناول أيضًا كيف يقوم المعالج المركزي بالوصول إلى مواقع الذاكرة الافتراضية من خلال العناوين (addresses) باستعمال المُسجلات (registers) التي تخدم المعالج المركزي و من أشهرها الFlags Register.
عندما قرأت عن طريقة تشغيل ألعاب مايكروسوفت على الإكس بوكس، الجافا خطرت ببالي مباشرة، هي نفس فلسفة تصميم لغة الجافا بالضبط، أنا أعتقد أن مايكروسوفت إجمالًا تأثرت كثيرًا بالجافا، حتى لغة C# من مايكروسوفت تكاد تكون جافا رقم 2 من ناحية الsyntax.
هذه الرسمات التوضيحية من كتاب Daniel Liang، أنا قرأت هذا الكتاب، لو ترجع إليه سترى أنه يوضح من خلال هذه الرسمات ما هو الفرق بين الCompiler و الInterpreter
الcompiler يقوم بتحويل الكود كاملًا إلى ملف low level، لكن الInterpreter يقوم بترجمة تعليمة و تنفيذها ثم الانتقال إلى التعليمة التالية.
نفس الكتاب يضم رسمة أخرى لتوضيح دورة برنامج الجافا من high level language (برنامج مكتوب بلغة يفهمها البشر) إلى التنفيذ، سأقتطع لك الرسمة من الكتاب:
--------------------------------------------------------
ما يحصل في الإكس بوكس هو:
كود اللعبة
كود اللعبة يُترجم عن طريق الكومبايلر إلى كود آخر (virtual machine) ليس مبنيا لجهاز مُحدد
هذا الكود الآخر يُترجم حسب الجهاز الذي يعمل عليه عن طريق الفيرتشوال ماشين، مايكروسوفت تُضيف الجهاز الجديد إلى الفيرتشوال ماشين و السلام، ليست بحاجة للتعديل على كود الألعاب
في البلايستيشن5 مثلا:
كود اللعبة
كود اللعبة يُترجم إلى machine code مباشرة
في حال الرغبة بدعم التوافق المسبق
إما أن يتم عمل port للعبة
إما أن تتم محاكاة اللعبة عن طريق مُحاكي داخلي
أو أن يكون هناك mode "يوهم" اللعبة أنها تعمل على جهازها الأصلي، هذا الmode يقوم بقراءة كود اللعبة من جهازها الأصلي و تحويله إلى كود يفهمه البلايستيشن5
الطريقة الثالثة هي المُستخدمة في البلايستيشن5.