Java Virtual Machine (JVM) ومبادئ المنصات المتقاطعة <BR /> أعتقد أن الجميع تعلموا أن Java لديها ميزات منصة ، يمكن "تجميعها مرة واحدة وتشغيلها في كل مكان". التعديلات.
لذا ، كيف يتم تنفيذ المنصات المتقاطعة؟ وهذا ينطوي على الحديث عن الجهاز الافتراضي Java (JVM).
JVM هو أيضًا برنامج ، ومنصات مختلفة لها إصدارات مختلفة. سيقوم رمز مصدر Java الذي نكتبه بإنشاء ملف .class يسمى ملف Bytecode بعد التجميع. جهاز Java Virtual مسؤول عن ترجمة ملف Bytecode إلى رمز الجهاز ضمن منصة معينة ثم تشغيله. بمعنى آخر ، طالما تم تثبيت JVM المقابل على منصات مختلفة ، يمكنك تشغيل ملف Bytecode وتشغيل برنامج Java الذي كتبناه.
خلال هذه العملية ، لم يقم برنامج Java بإجراء أي تغييرات.
JVM هو "جسر" و "برامج الوسيطة" التي هي مفتاح تنفيذ المنصات المتقاطعة. غاية.
ملاحظة: لا تتمثل نتيجة التجميع في إنشاء رمز الجهاز ، ولكن لإنشاء رمز Bytecode. رمز Bytecode الذي تم إنشاؤه بواسطة التجميع والتوليد ضمن منصات مختلفة هو نفسه ، لكن رمز الجهاز المترجم بواسطة JVM مختلف.
لذلك ، يجب أن يكون تشغيل برامج Java دعم JVM ، لأن نتيجة التجميع ليست رمز الجهاز ، ويجب ترجمتها مرة أخرى بواسطة JVM قبل التنفيذ. حتى إذا قمت بتعبئة برامج Java إلى التنفيذيين (مثل .exe) ، فلا تزال بحاجة إلى دعم JVM.
ملاحظة: برامج Java عبر المنصات ، وليس JVMs. تم تطوير JVM في C/C ++ ، ويتم تجميع كود الجهاز.
حول كفاءة تنفيذ JVM
في السنوات القليلة الماضية من إطلاق Java ، كان لدى الناس آراء مختلفة.
ومع ذلك ، فإن JVM لديه خيار لترجمة وحفظ الباقين بشكل متكرر في رمز الجهاز ، وهي عملية تُعرف باسم التجميع الفوري. هذه الطريقة فعالة للغاية ، مما أدى إلى استخدام الأجهزة الظاهرية على منصة Microsoft .NET.
أصبح المترجمون في الوقت المناسب متميزًا تمامًا ، وحتى أصبحوا منافسين للمترجمين التقليديين ، وفي بعض الحالات يتجاوز المترجمون التقليديين لأن JVM يمكنه مراقبة معلومات وقت التشغيل. على سبيل المثال ، يمكن للمترجم الفوري مراقبة وتحسين التعليمات البرمجية التي يتم استخدامها بشكل متكرر ، مما يلغي مكالمات الوظائف (أي "مضمنة").
ومع ذلك ، لدى Java بعض النفقات العامة الإضافية التي لا تحتوي عليها C/C ++ ، والتطبيقات الرئيسية أبطأ. على سبيل المثال ، تعتمد Java طريقة رسم مستقلة عن النظام الأساسي ، وتنفيذ برامج واجهة المستخدم الرسومية (برامج العميل) بطيئة ؛
فشل سوق العميل
مكتبة واجهة المستخدم الرسومية في Java ليست ممتازة ، والواجهة ليست ودية ، ومعظم المستخدمين لا يتم استخدامها ؛
ما هو غير مقبول أكثر من ذلك هو أنه بعد أن تقسم Microsoft اهتماماتها الخاصة ، لم يعد Windows مثبتًا على برنامج JVM. .
على الرغم من أنه يمكنك دمج JVM في البرنامج الخاص بك ، إلا أن تثبيته وإعداده تلقائيًا ، وعدم السماح بتدخل المستخدم ، هل تريد أن تأتي مع JVM أكبر بكثير من برنامجك؟ قد يكون من المقبول القيام بذلك. كم يضيع مساحة القرص؟
لذلك ، يتم تطوير عدد قليل من برامج العميل للمستخدمين العاديين الذين تم إطلاقهم مباشرة في السوق. إذا كنت ترغب في الانخراط في تطوير العميل ، فمن المستحسن تعلم C/C ++ و .NET ، والتي لها مزايا رائعة في تطوير عميل النافذة.
من المقرر أن تكون الأسباب المختلفة غير مواتية لتقديمها إلى السوق ويتم قبولها من قبل المستخدمين العاديين. ولكن مرة أخرى ، لم يكن تطوير العميل هو النية الأصلية لـ Java.
مفاهيم فصول جافا ومفاهيم الأشياء
Java هي لغة برمجة موجهة نحو الكائن.
يمكن اعتبار الفصول الدراسية في Java نسخة ترقية من الهياكل بلغة C. الهيكل هو نوع بيانات تم إنشاؤه يمكن أن يحتوي على أعضاء مختلفون (المتغيرات) ، ويمكن تعريف أنواع البيانات لكل عضو ؛ على سبيل المثال:
#stdio.h> int main () / أعضاء تشغيل STU1.NAME = "Xiao Ming" ؛ الاسم ، stu1.age ، stu1.score) ؛
نتائج التشغيل:
عمر شياو مينغ هو 15 عامًا ، وصفته 92.500000
الفئات في Java هي أيضًا نوع من أنواع البيانات ، ولكن تم تمديدها. على سبيل المثال:
Demo Class Public {public static void (string [] args) الوظيفة المتضمنة says () {system.out.println (الاسم + "العمر هو" + age + "، النتيجة هي" + درجة) ؛ الطالب stu1 = طالب جديد ؛ ) ؛ نتائج التشغيل:
عمر شياو مينغ هو 15 عامًا وصفته 92.5
في لغة C ، يمكن إكمال تعريف متغيرات الهيكل بمساحة البنية ومساحة الذاكرة ؛ الفضاء.
يمكن مقارنة القياس بالرسومات ، ويمكن مقارنة الكائنات بالأجزاء ، وتوضيح الرسومات معلمات الأجزاء والمهام التي تتولىها ؛
في Java ، باستخدام الكلمة الرئيسية الجديدة ، يمكنك إنشاء كائنات من خلال الفئات ، أي إنتاج الرسومات في أجزاء.
ملاحظة: الفصل هو مجرد رسم يلعب تفسيرًا ولا يشغل مساحة الذاكرة ؛
تسمى المتغيرات والوظائف الواردة في فئة أسماء محددة.
البرمجة الموجهة نحو الكائن (OOP)
الفصول هي مفهوم عام. يمكن اعتبار الفصول الدراسية نسخة ترقية من الهياكل. مشاريع الحجم.
نظرًا لأن Java و C ++ واللغات الأخرى تدعم فئات وكائنات ، فإن كتابة البرامج بهذه اللغات تسمى أيضًا البرمجة الموجهة للكائنات ، وتسمى هذه اللغات أيضًا لغات البرمجة الموجهة للكائنات. نظرًا لأن لغة C لا تدعم مفاهيم الفئات والكائنات ، فهي تسمى لغة البرمجة الموجهة نحو العملية.
في الواقع ، فإن الكائن الموجهة نحو الكائن هو مجرد ترقية موجهة نحو العملية.
بلغة C ، يمكن تعريف كتل التعليمات البرمجية التي تكمل وظيفة معينة على أنها وظائف ، ويتم الإعلان عن وظائف مع فئة من الوظائف في ملف رأس ، ويتم الإعلان عن وظائف من أنواع مختلفة في ملفات رأس مختلفة لتنفيذ وظائف إدارة أفضل ، من السهل الكتابة والاتصال.
في Java ، يمكن تعريف كتلة التعليمات البرمجية التي تكمل وظيفة معينة كطريقة ، ويمكن تعريف الطرق ذات الوظائف المماثلة في فئة ، أي في ملف مصدر (لأن ملف المصدر يمكن أن يحتوي فقط على فئة عامة واحدة) ، يمكن تحديد موقع ملفات مصدر متعددة في مجلد ، يحتوي على اسم محدد يسمى الحزمة.
ما سبق هو C ++ ، بينما Java هو:
لا تتمتع البرمجة الموجهة نحو الكائنات على الإطلاق في كفاءة تنفيذ البرامج.