- الآلة الافتراضية لغة جافا (JVM) هي البرنامج الذي يشغل كود بايت جافا المترجم.
- نفس كود البايت يعمل على ويندوز وماك أو إس ولينكس، لذا لا تحتاج التعديلات إلى إعادة تجميع.
- يحتاج اللاعبون إلى بيئة تشغيل جافا (JRE)؛ يحتاج المطورون إلى حزمة تطوير جافا الكاملة (JDK) مع المترجم.
- إصدار Minecraft بلغة جافا وجميع تعديلات Fabric، بما في ذلك Opal، تعمل على الآلة الافتراضية لغة جافا.
تُشغِّل الآلة الافتراضية لـ Java، أو JVM، كود Java. أنت تكتب Java، ويحوّلها مُترجم إلى كود بايت، وتشغّل الآلة الافتراضية لـ Java هذا الكود البايت على أي نظام تشغيل. ولهذا السبب يتصرف إصدار Java من Minecraft والتعديلات المبنية عليه بنفس الطريقة على Windows و macOS و Linux دون الحاجة إلى إعادة الترجمة.
أين Opal يناسب
Opal هو تعديل Fabric، لذا فهو يعمل على نفس جهاز JVM الخاص باللعبة. إذا كنت تقوم بإعداده، فإن دليل الإعداد يمرّ بك خلاله
ما الذي تفعله JVM فعليًا
تُشغِّل JVM الـ bytecode، وليس الكود المصدري. عندما تقوم بتجميع برنامج Java، لا تحصل على ملف تنفيذي لنظام Windows أو Mac. بل تحصل على ملفات فئات مليئة بالـ bytecode، وهي مجموعة تعليمات مضغوطة تفهمها JVM. تقرأ JVM هذه التعليمات وتنفذها على جهازك.
هذه الطبقة الإضافية هي الهدف. نفس الـ bytecode يعمل في أي مكان توجد فيه JVM، لذا فإن عبارة "اكتب مرة واحدة، وشغّل في أي مكان" هي النسخة المختصرة من سبب انتشار Java على نطاق واسع. JVM هي الجزء الذي يجعل هذه الوعد حقيقة.
JVM و JRE و JDK
غالبًا ما تُمزج هذه المصطلحات الثلاثة، لذا إليك التوضيح.
| المصطلح | ما هو | متى تحتاجه |
|---|---|---|
| JVM | المحرك الذي يشغّل الـ bytecode | دائمًا، لتشغيل أي برنامج Java |
| JRE | JVM بالإضافة إلى المكتبات القياسية | لتشغيل برامج Java |
| JDK | JRE بالإضافة إلى المترجم وأدوات التطوير | لبناء برامج Java |
يحتاج اللاعب فقط إلى وقت التشغيل لتشغيل اللعبة. يحتاج المطور الذي يبني تعديلًا إلى JDK الكامل حتى يتمكن من تجميع Java إلى bytecode في المقام الأول.
كيف تشغّل JVM التعليمات البرمجية الخاصة بك بسرعة
تبدأ JVM عن طريق تفسير الـ bytecode تعليمات واحدة تلو الأخرى. أثناء التشغيل، تراقب الطرق التي يتم استدعاؤها بشكل متكرر. يتم تمرير هذه المسارات الساخنة إلى مُجمِّع JIT، الذي يحولها إلى كود آلة أصلي في الوقت الفعلي. بعد فترة الإحماء، تعمل أكثر التعليمات البرمجية ازدحامًا بسرعة تقارب السرعة الأصلية.
تُدير JVM الذاكرة نيابةً عنك أيضًا. يقوم جامع القمامة باستعادة الكائنات التي توقفت عن استخدامها، لذلك لا تحتاج إلى تحرير الذاكرة يدويًا كما تفعل في لغة C. هذا أحد الأسباب التي تجعل كتابة Java سهلة ومسامحة، وهي لغة أولى شائعة للمعدّلين.
لماذا يهم هذا في Minecraft
تعمل نسخة Java من Minecraft على JVM، وكذلك كل عميل مساعد وكل تعديل يستهدفها. يمكن أن يكون الكود الخاص بالعميل بلغة Java أو Kotlin أو أي لغة JVM أخرى، لأنها جميعًا تُترجم إلى نفس التعليمات البرمجية التي تُشغلها JVM. يتم شحن تعديل Fabric على شكل ملف jar يحتوي على التعليمات البرمجية، ويقوم المحمل بتوصيله باللعبة عند التشغيل، وتشغل JVM كل شيء كعملية واحدة.
هذا هو السبب أيضًا في أن المشغلات تسمح لك بضبط أشياء مثل حجم الكومة والإصدار الذي تريد استخدامه من Java. أنت تقوم بتكوين JVM التي تستضيف اللعبة، وليس اللعبة نفسها.
الأسئلة الشائعة
لا. جافا هي اللغة؛ و JVM هو وقت التشغيل الذي ينفذ المخرجات المترجمة. اللغات الأخرى مثل كوتلن تترجم أيضًا إلى بايت كود وتعمل على نفس JVM
أنت بحاجة إلى بيئة تشغيل Java، والتي تتضمن آلة Java الافتراضية (JVM). العديد من المشغلات تقوم بتضمين واحدة لك، لذا قد يكون لديك بالفعل واحدة دون الحاجة إلى تثبيت أي شيء بشكل منفصل
تُشغِّل الآلة الافتراضية لجافا (JVM) شيفرة البايت. أما حزمة تطوير البرمجيات (JDK) فهي المجموعة الكاملة للمطور، بما في ذلك المترجم والأدوات، التي تستخدمها لبناء برامج جافا في المقام الأول
يُفسّر التعليمات البرمجية البايت في البداية، ثم يقوم المترجم في الوقت المناسب (JIT) بتحويل التعليمات البرمجية الأكثر استخدامًا إلى تعليمات برمجية آلية خاصة بالجهاز أثناء تشغيل البرنامج. هذا الإحماء هو التكلفة الأولية؛ والزيادة في السرعة تأتي بعد ذلك