ما هو مُحمِّل الفئات في جافا؟ (شرح مُبسَّط لعام ٢٠٢٦)

يجد مُحمِّل الجافا (classloader) ملفات الأصناف ويحملها إلى آلة الجافا الافتراضية (JVM) أثناء التشغيل. إليكم ما يفعله، وكيف يعمل التسلسل الهرمي للمحمّلات، ولماذا تعتمد التعديلات (mods) عليه.

Conceptsby trqUpdated June 4, 2026
Key takeaways
  • يقوم مُحمِّل الفئات بالعثور على ملف فئة وتحميله إلى JVM حتى يتمكن البرنامج من استخدامه.
  • يتم تحميل الفئات عند الحاجة إليها لأول مرة، وليس عند بدء التشغيل، ويحدد المُحمِّل التعليمات البرمجية البايتية في كل مرة.
  • تشكل مُحمّلات الفئات المدمجة سلسلة أصل (bootstrap، ومنصة، وتطبيق) تقوم بالتفويض صعودًا.
  • تُعد مُحمّلات الفئات المخصصة سببًا في قدرة تعديلات Minecraft على تصحيح فئات اللعبة أثناء تحميلها.

يُعدّ مُحمّل الفئات (Classloader) جزءًا من وقت تشغيل جافا الذي يحدد موقع ملف الفئة ويحمّله إلى آلة جافا الافتراضية (JVM) لكي يتمكن البرنامج من استخدامه. ليست جميع الفئات محمّلة عند بدء التشغيل. تقوم آلة جافا الافتراضية بتحميل كل فئة في المرة الأولى التي تكون فيها مطلوبة، ومُحمّل الفئات هو المسؤول عن تحديد موقع رمز البايت (bytecode) وقراءته وتسليمه إلى آلة جافا الافتراضية. تعمل نسخة جافا من ماينكرافت (Minecraft Java Edition) على هذا الآلية تحديدًا.

أين Opal يناسب

Opal هو تعديل Fabric، ويقوم Fabric بتحميل اللعبة من خلال مُحمِّل الفئات الخاص به، بحيث يمكن للتعديلات تصحيح الفئات أثناء تحميلها. يوضح دليل الإعداد كيفية تثبيته

ما الذي يفعله مُحمِّل الفئات فعليًا

يقوم مُحمِّل الفئات بتحويل اسم فئة إلى فئة قابلة للاستخدام داخل جهاز JVM قيد التشغيل. تطلب نوعًا ما، فيقوم المُحمِّل بتحديد بايتات .class المطابقة، ويقوم جهاز JVM بتعريف هذا النوع في الذاكرة.

يحدث العمل في ثلاث خطوات. يجد المُحمِّل التعليمات البرمجية الثنائية لفئة مُسماة. يقوم جهاز JVM بالتحقق منها وربطها. ثم تصبح الفئة جاهزة للاستخدام. هذا هو السبب في أن برنامج Java يمكنه استيراد التعليمات البرمجية التي لم يذكرها في وقت الترجمة: الاسم يكفي المُحمِّل للعثور عليها.

تسلسل مُحمّلات الفئات

يتم ترتيب مُحمّلات الفئات في سلسلة رئيسية، ومعظمها يسأل الأصل أولاً. يحتوي التطبيق القياسي على ثلاثة مُحمّلات مُدمجة مكدسة فوق بعضها البعض.

المُحمِّليحمّل
Bootstrapفئات وقت التشغيل الأساسية لـ Java
Platformوحدات المكتبة القياسية خارج الأساس
Applicationفئات برنامجك الخاصة من مسار الفئة

عندما يُطلب من مُحمِّل التطبيق فئة، فإنه يفوض عادةً للأعلى أولاً. يحصل الأصل على فرصة لتحميلها، وفقط إذا لم يتمكن أي من الأصول يفعل ذلك، يحاول الطفل. يسمى هذا النموذج التفويض، ويحافظ على اتساق الأنواع الأساسية في جميع أنحاء البرنامج.

هوية الفئة ومُحمّلات الفئات المخصصة

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

يمكن للبرامج تحديد برامج تحميل خاصة بها. يمكن للمحمل المخصص قراءة التعليمات البرمجية الثنائية من أي مكان: ملف jar، الشبكة، مصفوفة بايت تم إنشاؤها، أو حتى التعليمات البرمجية الثنائية التي تم تحويلها أثناء العملية. هذا هو كيف تعمل أنظمة المكونات الإضافية، وخوادم التطبيقات، وأطر عمل التعديل على تحميل التعليمات البرمجية التي لم يعرفها البرنامج المضيف في وقت الإنشاء.

لماذا هذا مهم لتعديلات Minecraft

توجد التعديلات بفضل التحميل المخصص للفئات. يبدأ برنامج تحميل التعديلات الخاص بـ Minecraft اللعبة من خلال برنامج تحميل خاص به حتى يتمكن من رؤية وتعديل فئات اللعبة أثناء تحميلها. هذا نقطة الربط التي يحدث فيها تصحيح التعليمات البرمجية الثنائية.

عندما يجلس برنامج التحميل بين القرص وجهاز JVM، يمكنه تحويل فئة مباشرة قبل أن يعرفها جهاز JVM. يمكن للتعديل إعادة كتابة طريقة اللعبة، أو حقن سلوك جديد، أو إضافة حقول، كل ذلك بدون نسخة معدلة من اللعبة على القرص. الفئة التي ينتهي جهاز JVM بتشغيلها هي الفئة التي تم تصحيحها. لمزيد من المعلومات حول كيفية توافق ذلك مع الصورة الأكبر، راجع ما هو برنامج تحميل تعديلات Minecraft؟.

الأسئلة الشائعة