شرح معمارية جافا ومكوناتها [2022]

نشرت: 2021-01-04

قبل أن تصبح مبرمج جافا ، يجب أن تفهم كل جانب من جوانب هذه اللغة. تعد بنية Java من أهم جوانب Java. موضوع تقني آخر في هذا الصدد هو معرفة مكونات JVM. لذلك ، سنغطي هذين الموضوعين المهمين في هذه المقالة المكتوبة.

تفترض هذه المقالة أن لديك فهمًا عامًا لأساسيات Java. حتى إذا لم تكن على دراية بأساسيات Java ، يمكنك طرح أي أسئلة قد تكون لديك في قسم التعليقات أدناه. هيا بنا نبدأ:

جدول المحتويات

شرح معمارية جافا

تحتوي Java على عمليتين ، التجميع والتفسير. يحول مترجم Java الشفرة الموجودة في Java إلى أكواد بايت. يحول Java Virtual Machine (JVM) أكواد البايت إلى كود الآلة الذي ينفذه الجهاز مباشرة.

يمكننا وصف هذه العملية بالخطوات التالية:

  • يذهب كود المصدر إلى Java Compiler
  • يحولها مترجم جافا إلى أكواد بايت
  • تذهب أكواد البايت إلى Java Virtual Machine
  • أخيرًا ، ينتقل إلى نظام التشغيل (نظام التشغيل)

الآن بعد أن أصبحنا على دراية بكيفية عمل بنية Java ، يمكننا إلقاء نظرة على مكوناتها المختلفة:

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

أراد منشئو Java أن يكون WORA (اكتب مرة واحدة تشغيل في أي مكان). هذا يعني أنه يمكنك تشغيل تطبيقاته على أي نظام أساسي ، ولكن الشيء الذي يمنح Java هذه الجودة هو JVM. يوفر JVM البيئة لتنفيذ كود Java. يفسر الرمز الثانوي ويحوله إلى رمز الجهاز حتى يتمكن الجهاز من تشغيل برنامج Java.

تحميل JVM تحقق من التعليمات البرمجية وتنفيذها. كما أنه يوفر بيئة وقت التشغيل للشفرة بحيث يمكن تشغيلها في الجهاز.

JRE (بيئة جافا وقت التشغيل)

يقوم JRE ببناء بيئة وقت تشغيل حيث يمكنك تنفيذ برامج Java. يأخذ كود Java ويجمع نفسه مع المكتبات المطلوبة. يبدأ JRE أيضًا JVM لتنفيذه. تحتوي Java Runtime Environment على البرامج والمكتبات المطلوبة حتى تتمكن من تشغيل البرامج.

JDK (مجموعة تطوير جافا)

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

مكونات JVM

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

النظام الفرعي ClassLoader

ClassLoader هو نظام فرعي من Java Virtual Machine الذي يقوم بتحميل ملفات الفئات. إنه المكون الأول للهندسة المعمارية حيث يقوم بتحميل البرنامج بحيث يمكن تنفيذ المهام الأخرى. كما أنه يربط ويهيئ ملفات الفصل الدراسي. يمكننا تقسيم عملها إلى الأقسام الثلاثة التالية:

جار التحميل

هذا المكون يقوم بتحميل الفئات. يحتوي على BootStrap ClassLoader لتحميل الفئات التي تنتمي إلى classpath bootstrap classpath. يقوم ملحق ClassLoader بتحميل الفئات الموجودة داخل المجلد ext ، ويقوم التطبيق ClassLoader بتحميل المسار المذكور متغير البيئة والملفات المماثلة.

ربط

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

التهيئة

في هذا القسم من ClassLoading ، يخصص النظام المتغيرات الثابتة للقيم الأصلية وينفذ الكتلة الثابتة.

منطقة بيانات وقت التشغيل

يحتوي هذا القسم من JVM على المكونات التالية:

منطقة الطريقة

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

منطقة الكومة

تخزن منطقة الكومة جميع الكائنات ومصفوفات ومتغيرات مثيلها. مثل منطقة الطريقة ، يحتوي JVM على منطقة كومة واحدة فقط.

منطقة المكدس

ينشئ هذا القسم مجموعات وقت تشغيل فريدة لكل تهديد ويقوم بإجراء إدخال لكل استدعاء طريقة في ذاكرة المكدس (المعروفة أيضًا باسم Stack Frame). يحتوي على مصفوفة متغيرة محلية مرتبطة بالطريقة ، ومكدس المعاملات ، الذي يعمل كمساحة عمل للعمليات الوسيطة ، وبيانات الإطار ، حيث تظل جميع الرموز المتعلقة بالطريقة مخزنة. تحتفظ بيانات الإطار بمعلومات كتلة الالتقاط ما لم يكن هناك استثناء.

تسجيلات الكمبيوتر

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

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

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

يجب أن تلاحظ أن أول مكونين من منطقة بيانات وقت التشغيل (منطقة الطريقة ومنطقة الكومة) هما موارد مشتركة بينما منطقة المكدس ليست كذلك.

محرك التنفيذ

محرك التنفيذ ينفذ الرمز الثانوي. يقرأها وينفذها قطعة قطعة. كما أن لها مكونات مختلفة:

مترجم

يفسر هذا المكون الرمز الثانوي بسرعة ولكنه بطيء بعض الشيء في التنفيذ. له عيب كبير كما هو الحال عندما يستدعي النظام طريقة واحدة عدة مرات ، ويتطلب تفسيرًا جديدًا في كل مرة. هذا العيب في المترجم يضر بكفاءة العملية إلى حد كبير.

مترجم JIT

لا يحتوي مترجم JIT على عيب المترجم. لذلك ، عندما يجد محرك التنفيذ رمزًا متكررًا ، فإنه يستخدم مترجم JIT بدلاً من المترجم الفوري. يقوم مترجم JIT بتحويل الرمز الثانوي إلى كود أصلي بعد تجميعه. يستخدم النظام الكود الأصلي مباشرة.

يحتوي مترجم JIT على مولد كود وسيط لإنتاج كود وسيط ومحسن الشفرة لتحسينه. كما أن لديها منشئ الكود المستهدف الذي ينتج الظبية الأصلية وملف تعريف يبحث عن النقاط الفعالة.

جامع القمامة

المكون الأخير لمحرك التنفيذ هو جامع القمامة الذي يجمع ويتخلص من الأشياء غير المشار إليها. يمكنك تشغيله عن طريق استدعاء system.gc () ولكن هذا لا يضمن تنفيذه.

بصرف النظر عن هذه المكونات ، يحتوي JVM أيضًا على JNI (واجهة Java الأصلية) ومكتبات الطريقة الأصلية. يتفاعل الأول مع الأخير ويوفر المكتبات الأصلية اللازمة للتنفيذ.

احصل على دورة تطوير البرمجيات من أفضل الجامعات في العالم. اربح برامج PG التنفيذية أو برامج الشهادات المتقدمة أو برامج الماجستير لتتبع حياتك المهنية بشكل سريع.

افكار اخيرة

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

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

إذا كنت مهتمًا بمعرفة المزيد حول Java و OOPs وتطوير البرامج الكاملة ، تحقق من upGrad & IIIT-B's Executive PG Program in Full-stack Software Development المصمم للمهنيين العاملين ويقدم أكثر من 500 ساعة من التدريب الصارم ، أكثر من 9 مشاريع ، ومهام ، وحالة خريجي IIIT-B ، ومشاريع التخرج العملية العملية والمساعدة في العمل مع الشركات الكبرى.

استعد لمهنة المستقبل

تقدم الآن للحصول على درجة الماجستير في هندسة البرمجيات