ما هو الفرق بين مترجم JVM و JIT (فقط في مترجم الوقت) في جافا؟


الاجابه 1:

JVM ("Java Virtual Machine") له معنيان:

  1. إنها مجموعة تعليمات مجردة مصممة لتشغيل برامج Java. تعرّف مجموعة التعليمات هذه آلة مكدس دفع مباشر لأسفل يتم تجميع برامج مصدر Java عليها ؛ يتم تخزين هذه التعليمات في ملفات ".class". إنه برنامج يعمل على جهاز كمبيوتر حقيقي ، مما يمكن تنفيذ تعليمات JVM المجردة. يشتمل JVM على "مترجم" لتعليمات JVM الفردية ، ولكنه يشمل أيضًا جميع الآلات الداعمة اللازمة لدعم تنفيذ تعليمات Java البرمجية ، بما في ذلك العمليات الحسابية ومكالمات الوظائف وتخصيص التخزين وجمع القمامة وجدولة سلاسل الرسائل وملفات تحميل الملفات من الدرجة والملف I / O والوصول الأخرى إلى نظام التشغيل المحلي حسب الحاجة لتشغيل تطبيقات Java المعقدة.

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

"JIT compiler" ("JITter") هي ميزة لمعظم JVMs الحديثة التي تقوم بتجميع أجزاء من تعليمات JVM إلى رمز الجهاز الأصلي مثل قطع جديدة ، أو تمت مصادفة أجزاء من رمز JVM تمت مصادفتها أثناء التنفيذ. يمكن للمرء استخدام برنامج التحويل البرمجي من جافا إلى أصلي (غير موجود فعليًا) للقيام بذلك لتوفير أغراض تجميع الدُفعات التقليدية ، لكن هذه ليست الطريقة التي ذهب بها عالم جافا.

تتميز JITters بميزة واحدة على برامج التحويل البرمجي الدفعي: يمكنها تجميع التعليمات البرمجية التي تتطابق مع ما يحدث في وقت التشغيل ، وبالتالي يمكنها المساعدة في تحسين الخصائص الديناميكية لرمز Java مثل الإرسال الديناميكي الذي يحدث في مكالمات أسلوب Java المحملة بشكل زائد. لديهم عيوب: فهم لا يرون البرنامج على نطاق واسع ، وعمومًا لا يمكنهم فعل ما يقوم به المترجمون الدفعيون الجيدون: التحسينات العالمية. المفاضلة ، في الممارسة العملية ، تعني أن برامج Java التي يتم تجميعها من JIT تعمل بشكل جيد ، ولكن ليس بالسرعة التي يتم بها تجميع برامج C أو C ++ بالطرق التقليدية.


الاجابه 2:

في الوقت المناسب ، يعد برنامج التحويل البرمجي أو JIT مكونًا لا يتجزأ من Java Virtual Machine جنبًا إلى جنب مع أداة تجميع مجمعي البيانات المهملة ، كما يوحي الاسم ، يعمل التجميع في الوقت المناسب. إنه قادر على تجميع تعليمات برمجية Java مباشرة إلى لغة الآلة ، مما يمكن أن يحسن أداء تطبيق Java بشكل كبير.

بالمناسبة ، ليست مضمونة التي سيتم تجميعها رمز ومتى. عادةً ما تقوم JIT بتجميع كود ساخن في Hotspot JVM بمجرد أن يتجاوز تنفيذه حدًا معينًا ، على سبيل المثال ، سيتم تحويل طريقة إلى لغة الآلة إذا تم استدعاؤها أكثر من 10 آلاف مرة إلخ.

فيما يلي بعض الاختلافات بين JVM و JIT في نظام برمجة Java:

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

2) الفرق الآخر بين JIT و JVM هو أن JIT جزء من JVM. أحد أمثلة JIT هو Hotspot JIT من Oracle والذي يأتي مع Hotspot JVM. يطلق عليه hotpost لأن المترجم الخاص به Just in time يقوم فقط بتجميع الكود الساخن إلى اللغة الأم ، وهو الكود الذي ينفذ 90٪ من الوقت.

هناك إعداد عتبة ، إذا تم تنفيذ بعض التعليمات البرمجية أكثر من تلك العتبة ، فسوف تصبح مؤهلة للتجميع في الوقت المناسب فقط. بالمناسبة ، Hotspot ليس هو JVM الوحيد الذي يحتوي على مترجمين فقط في الوقت المناسب ، وهناك آخرون JVM وكذلك مثل JRockit الأصلي من Oracle.

3) أخيرًا ، JVM مفهوم أقدم من JIT. اخترع JIT بالفعل لتحسين أداء JVM بعد سنوات من الإصدار الأولي من Java ، في حين أن جهاز Java الظاهري كان جزءًا من إصدار Java الأولي.

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


الاجابه 3:

الفرق الرئيسي هو:

  • JVM عبارة عن Java Virtual Machine بينما JIT is Just In Time compilation.JIT هي مجموعة فرعية من JVM والتي تستخدم لتحسين أداء JVM.JVM يستخدم لتنفيذ تعليمات برمجية لبرامج Java مما يجعل نظام Java مستقلًا بينما تقوم JIT برمجية تنفيذ البايت حاليًا رمز في لغة الجهاز. للحصول على أداء أفضل من JVM ، JIT أيضا بتخزين هذا الرمز المترجمة.

شكرا مع اطيب التحيات

شوجات خان

تفاصيل الاتصال: [email protected]