ما هو الحد الأدنى لملف فئة Java الذي يعمل على كل JVM؟

StackOverflow https://stackoverflow.com//questions/25031528

  •  21-12-2019
  •  | 
  •  

سؤال

أريد نوعًا من "اختبار الدخان" البسيط لسلسلة من JVMs، تتراوح من JDK 1 إلى 8، وOpenJDK، وIBM JDK، وحتى Microsoft JDKs إن أمكن.هل هناك طريقة لإنشاء الحد الأدنى من ملف فئة Java الذي يجب أن يكون قادرًا على اختبار ذلك؟

تحديث

يجب أن يكون من الممكن تشغيل:

جافا -cp اسم الفئة

ولديك مخرجات تؤكد أن JVM يعمل بشكل صحيح.

أيضًا، بالنسبة لأولئك الذين يعتقدون أن JVMs تعمل دائمًا، يجب أن يعلموا أنني أستخدم أنظمة تحتوي على ما يصل إلى 20 JVMs على جهاز واحد، ويمكن أن تكون بعض JVMs تالفة.لاحظ أيضًا أنه لا يمكن لجميع أجهزة JVM تشغيل جميع ملفات .class

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

المحلول

krakatau لديه مثال على ملف Aseembler للحصول على الحد الأدنى من كلاسفيل.

giveacodicetagpre.

هذا سوف يمنحك أبسط كلاسفيل ممكن سيتم تحميله في JVM. لا تملك كل البيانات الوصفية الاختيارية التي ستحصل عليها عادة من الأدوات الأخرى (يضيف ياسمين على سبيل المثال سمة SourceFile دائما). هذا ليس أقصر ملف ممكن لأنك يمكنك حلق بضعة بايت من خلال تقصير اسم الفصل، لكنه في الأساس أبسط فئة ممكنة.

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

giveacodicetagpre.

هذا سوف يمنحك فئة غير قابلة للعادة، والتي تعود على الفور. لذلك فهي أبسط فئة ممكنة مع وظيفة رئيسية.

نصائح أخرى

ال مجموعة توافق جافا (JCK) تم تطويره لهذا الغرض بالضبط.لن يكون الحد الأدنى من الجرة كافيًا للتحقق من صحة تنفيذ JVM نظرًا لوجود العديد من الحالات الزاوية التي يجب تغطيتها وأي مجموعة من تعليمات رمز البايت تحتاج إلى الدعم.

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

أي فئة تحتوي على طريقة رئيسية يمكن تنفيذها على أي jvm، يمكن أن يكون هذا الحد الأدنى لاختبار، E.G.:

giveacodicetagpre.

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