logo

بنية JVM (آلة جافا الافتراضية).

  1. آلة جافا الافتراضية
  2. البنية الداخلية لـ JVM

JVM (Java Virtual Machine) هي آلة مجردة. إنها مواصفات توفر بيئة وقت تشغيل يمكن من خلالها تنفيذ كود جافا الثانوي.

تتوفر JVMs للعديد من منصات الأجهزة والبرامج (أي أن JVM يعتمد على النظام الأساسي).

ما هو JVM

إنها:

شبكات الحاسب
  1. مواصفات حيث يتم تحديد عمل Java Virtual Machine. لكن مزود التنفيذ مستقل في اختيار الخوارزمية. وقد تم تنفيذه من قبل شركة أوراكل وشركات أخرى.
  2. تنفيذ يُعرف تنفيذه باسم JRE (Java Runtime Environment).
  3. مثيل وقت التشغيل عندما تكتب أمر Java في موجه الأوامر لتشغيل فئة Java، يتم إنشاء مثيل JVM.

ماذا يفعل

يقوم JVM بتنفيذ العملية التالية:

  • رمز الأحمال
  • التحقق من الرمز
  • ينفذ التعليمات البرمجية
  • يوفر بيئة وقت التشغيل

يوفر JVM تعريفات لما يلي:

  • منطقة الذاكرة
  • تنسيق ملف الدرجة
  • سجل مجموعة
  • كومة القمامة التي تم جمعها
  • الإبلاغ عن الأخطاء الفادحة وما إلى ذلك.

الهندسة المعمارية JVM

دعونا نفهم البنية الداخلية لـ JVM. يحتوي على أداة تحميل الفصل ومنطقة الذاكرة ومحرك التنفيذ وما إلى ذلك.

الهندسة المعمارية JVM

1) محمل الفصل

Classloader هو نظام فرعي لـ JVM يستخدم لتحميل ملفات الفئة. عندما نقوم بتشغيل برنامج جافا، يتم تحميله أولاً بواسطة أداة تحميل الفصل. هناك ثلاثة أدوات تحميل فئة مدمجة في Java.

الذي جعل المدرسة
    Bootstrap ClassLoader: هذا هو محمل الفئة الأول وهو الفئة الفائقة لمحمل فئة الامتداد. يقوم بتحميل rt.jar الملف الذي يحتوي على جميع ملفات فئات Java Standard Edition مثل فئات حزم java.lang، وفئات حزم java.net، وفئات حزم java.util، وفئات حزم java.io، وفئات حزم java.sql وما إلى ذلك.ملحق ClassLoader: هذا هو محمل الفصل الفرعي لـ Bootstrap ومحمل الفصل الأصلي لمحمل فئة النظام. يقوم بتحميل ملفات الجرة الموجودة بالداخل $JAVA_HOME/jre/lib/ext الدليل.محمل فئة النظام/التطبيق: هذا هو محمل الفصل الفرعي لمحمل الفصل الملحق. يقوم بتحميل ملفات الفصل من مسار الفصل. بشكل افتراضي، يتم تعيين classpath إلى الدليل الحالي. يمكنك تغيير مسار الفصل باستخدام مفتاح التبديل '-cp' أو '-classpath'. ومن المعروف أيضًا باسم محمل فئة التطبيق.
 //Let's see an example to print the classloader name public class ClassLoaderExample { public static void main(String[] args) { // Let's print the classloader name of current class. //Application/System classloader will load this class Class c=ClassLoaderExample.class; System.out.println(c.getClassLoader()); //If we print the classloader name of String, it will print null because it is an //in-built class which is found in rt.jar, so it is loaded by Bootstrap classloader System.out.println(String.class.getClassLoader()); } } 
اختبره الآن

انتاج:

 sun.misc.Launcher$AppClassLoader@4e0e2f2a null 

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

2) منطقة الطبقة (الطريقة).

تقوم منطقة الفئة (الطريقة) بتخزين الهياكل لكل فئة مثل التجمع الثابت لوقت التشغيل وبيانات الحقل والطريقة ورمز الأساليب.

3) كومة

إنها منطقة بيانات وقت التشغيل التي يتم تخصيص الكائنات فيها.

4) كومة

يقوم Java Stack بتخزين الإطارات. إنه يحمل المتغيرات المحلية والنتائج الجزئية، ويلعب دورًا في استدعاء الطريقة وإرجاعها.

يحتوي كل خيط على مكدس JVM خاص، يتم إنشاؤه في نفس وقت إنشاء الخيط.

يتم إنشاء إطار جديد في كل مرة يتم فيها استدعاء الطريقة. يتم تدمير الإطار عند اكتمال استدعاء الطريقة الخاصة به.

صيغة ميسون

5) سجل عداد البرنامج

يحتوي سجل الكمبيوتر (عداد البرامج) على عنوان تعليمات جهاز Java الظاهري الذي يتم تنفيذه حاليًا.

6) مكدس الطريقة الأصلية

أنه يحتوي على كافة الأساليب الأصلية المستخدمة في التطبيق.

7) محرك التنفيذ

أنه يحتوي على:

    المعالج الظاهري مترجم:اقرأ دفق الرمز الثانوي ثم نفذ التعليمات.مترجم Just-In-Time (JIT):يتم استخدامه لتحسين الأداء. يقوم JIT بتجميع أجزاء من كود البايت التي لها وظائف مماثلة في نفس الوقت، وبالتالي يقلل مقدار الوقت اللازم للتجميع. هنا، يشير مصطلح 'المترجم' إلى مترجم من مجموعة التعليمات الخاصة بجهاز Java الظاهري (JVM) إلى مجموعة التعليمات الخاصة بوحدة المعالجة المركزية المحددة.

8) واجهة جافا الأصلية

Java Native Interface (JNI) عبارة عن إطار عمل يوفر واجهة للتواصل مع تطبيق آخر مكتوب بلغة أخرى مثل C وC++ وAssembly وما إلى ذلك. تستخدم Java إطار عمل JNI لإرسال المخرجات إلى وحدة التحكم أو التفاعل مع مكتبات نظام التشغيل.