سؤال

أين تختلف تطبيقات JVM (باستثناء الترخيص)؟ هل كل JVM تنفذ نوع محو من أجل التعامل الحقيقي؟

أين الاختلافات بين:

  • jrockit.
  • IBM JVM.
  • الشمس JVM
  • افتح JDK.
  • أسفل الأسود
  • كافي

..... صفقات واحد منهم مع تحسين المكالمات؟

هل كانت مفيدة؟

المحلول

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

كما أشرت، فإن الفرق الرئيسي يميل إلى أن يكون في الترخيص. تميل الاختلافات غير الفنية الأخرى إلى أن تكون في خيارات دعم مجانية / مدفوعة الأجر، والتكامل مع التقنيات الأخرى (عادة خوادم J2EE)، والوصول إلى شفرة المصدر.

ملاحظة: في حين أن خادم J2EE يعمل على JVM، إلا أن بعض الخوادم تحتوي على أدوات متكاملة لرصد الأداء وتحليله وتغيير أداء JVM.

فيما يتعلق بالاختلافات الفنية، نمت تلك أقل أهمية على مر السنين. ذات مرة، كان لدى IBM و JROCKIT JVM أداء فائقا كبيرا إلى تنفيذ أشعة الشمس المرجعية. كان هذا بسبب اختلافات كبيرة في أنواع تحسين وقت التشغيل، والاختلافات في جمع القمامة، والاختلافات في التعليمات البرمجية الأصلية (ومقدار الكود الأصلي الذي يستخدمه الفئات الأصلية). هذه الاختلافات في الأداء ليست كبيرة بعد الآن.

تشمل بعض JVM أيضا أو دمج مع أدوات التشخيص والمراقبة. يشمل JRockit مجموعة من الأدوات لمراقبة أداء JVM الخاص بك. توفر Sun العديد من الأدوات المستندة إلى JMX مع ميزات متداخلة للقيام بنفس الشيء. تضمنت IBM WebSphere ذات مرة مجموعة مماثلة من الأدوات لخادم تطبيق J2EE الخاص بهم بالكامل (غير متأكد من أنهم ما زالوا يفعلون ذلك، لكنني أفترض أن هذا لا يزال صحيحا) ...

تميل بعض المصدر المفتوح JVM إلى الحصول على أداء أبطأ قليلا لأنها تم إعادة تطويرها من الألف إلى الياء. على هذا النحو، لديهم المزيد من اللحاق بالركب. آخر راجعت منذ حوالي عامين، كان Blackdown أبطأ بشكل كبير (1.5x-2x؟) من الشمس JVM. كان أيضا وراء الإصدارات المدعومة من جافا المدعومة.

نصائح أخرى

نوع المحو هي وظيفة التحويل البرمجي وعلى هذا النحو jvm مستقلة.

يتم إجراء أشياء مثل نوع المحور من قبل المترجم لتكون متوافق مع JVMS القديم. يجب أن تدعم معظم JVMS جميع الميزات التي تحتاجها، ولكن قد يكون البعض أكثر الأمثل من غيرها. أنا أظن أن الشمس JVM هو الأسرع.

جيت تجميع هو شيء واحد أن بعض jvm: S لا تملك.

إذا ادعي JVM أن تكون جافا يجب أن تمر TCK، وتوفير الكثير من الأسهم funcitonaltiy.

الاختلافات موجودة في الأماكن غير الأساسية، مثل مجموعة القمامة، و JConsole / VisualVM في Sun JVM، Precompilation إلخ.


التوضيح: TCK هو مجموعة الاختبار التي يجب أن تمر بها الجهاز الظاهري من أجل أن تكون متوافقة مع Java رسميا.

هناك اختلاف آخر بين JVMS هو السلوك على واجهة برمجة تطبيقات غير موثقة. (على سبيل المثال COM.Sun.XXXX) على سبيل المثال، تتمتع JVM JVM و IBM في JVM بسلوك مختلف قليلا على معالجة الإشارات. (لا يسمح JVM في IBM بتطبيق مصيدة "Int" في حالات معينة.)

يشبه JVM آلة ظاهرية تعمل على تحميل VICE and Bytcode Versifi، قم بتنفيذ التعليمات البرمجية. في حين أن واجهة البرمجة AppleOcaion هي مجموعة من الحزم. والحزم هي مجموعة من الصف. تنفيذ برنامج Java حيث تثبيت JVM ويعمل.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top