ما هو دالفك؟ نسمع هذه الكلمة التي يتم طرحها حول الإنترنت عند الحديث عن Android وأعماله الداخلية. على الرغم من عدم وجود تفسير سهل يمكننا تقديمه في فقرات قليلة فقط ، إلا أننا نستطيع تغطية الأساسيات وتوجيهك في الاتجاه الصحيح إذا كنت بحاجة إلى تغذية جانبك المهذب. في أبسط مصطلحاته ، Dalvik هو جهاز افتراضي يعمل على تشغيل التطبيقات والرمز المكتوب بلغة Java. يقوم مترجم Java القياسي بتحويل التعليمات البرمجية المصدر (مكتوبة كملفات نصية) إلى Bytecode ، ثم يتم تجميعها في ملف.dex يمكن لـ Dalvik VM قراءته واستخدامه. في جوهرها ، يتم تحويل ملفات الفئة إلى ملفات.dex (تشبه إلى حد كبير ملف jar إذا كان أحدهم يستخدم Java VM القياسي) ثم يقرأها وينفذها Dalvik Virtual Machine. يتم تضمين البيانات المكررة المستخدمة في ملفات الفئة مرة واحدة فقط في إخراج.dex ، مما يوفر مساحة ويستخدم مقدار حمل أقل. يمكن تعديل الملفات القابلة للتنفيذ مرة أخرى عند تثبيت تطبيق لجعل الأمور أكثر تحسينًا للجوال. أشياء مثل تبديل ترتيب البايت وربط بنية البيانات والمكتبات الوظيفية تجعل الملفات أصغر وتعمل بشكل أفضل على أجهزتنا. تمت كتابة Dalvik VM من المربع الأول مع وضع Android في الاعتبار.
حائرة بعد؟ لا تشعري بالسوء ، عادة ما يكون لمحادثات البرمجة العبقري غريب الأطوار هذا التأثير. فكر في الأمر بهذه الطريقة - عند إنشاء تطبيق Java لجهاز الكمبيوتر الخاص بك ، يقوم Java Virtual Machine بتشغيل الإخراج المترجم من التعليمات البرمجية المصدر. هذا هو السبب وراء تشغيل Java على أي نظام تشغيل. Dalvik هي نسخة محسنة للجوال من Java Virtual Machine ، تم إنشاؤها برمز من مشروع Apache Harmony ، وهو مفتوح المصدر ويعمل بشكل أفضل من Java VM القياسي على أجهزتنا المحدودة ، المصممة بحيث يمكنك تشغيل أكثر من واحد مثيل VM في وقت واحد - أي تعدد المهام. نظرًا لأن Dalvik مفتوح المصدر ، فقد تم نقله أيضًا إلى أنظمة تشغيل أخرى ، مثل تلك الموجودة على BlackBerry PlayBook. إنه أمر معقد للغاية ، رائع إلى حد ما ، وأوراكل (الشركة التي اشترت Java من Sun) تكرهها.
يستخدم Android Dalvik لأنه على الرغم من أن ترخيص Java Virtual Machine القياسي هو GPL2 (مجاني ومفتوح المصدر) ، فإنه عند وضعه في جهاز محمول واستخدام Java Micro Edition ، فهو ليس كذلك. يستند الخلاف الكبير بين Google و Oracle حول Dalvik. تدعي Google أنه تمت كتابته في بيئة "تنظيف" دون استخدام أي من تعليمات Oracle البرمجية ولا يوافق Oracle. نحن ندعي أنه ليس لدينا أي فكرة ، فنحن سعداء أنها تعمل جيدًا.