دالفيك (برنامج)

دالفيك هي آلة افتراضية (VM) متوقفة عن العمل في نظام التشغيل أندرويد ، تُستخدم لتشغيل التطبيقات المصممة لنظام أندرويد. [ 1 ] [ أ ] كانت دالفيك جزءًا لا يتجزأ من حزمة برامج أندرويد في الإصدارات 4.4 "كيت كات" (التي لم تعد مدعومة) والإصدارات الأقدم، والتي كانت شائعة الاستخدام على الأجهزة المحمولة مثل الهواتف الذكية وأجهزة الكمبيوتر اللوحية ، بالإضافة إلى بعض الأجهزة الأخرى مثل أجهزة التلفزيون الذكية والأجهزة القابلة للارتداء . دالفيك برنامج مفتوح المصدر ، كتبه في الأصل دان بورنشتاين، الذي سمّاه تيمنًا بقرية الصيد دالفيك في إيافيوردور ، أيسلندا . [ 2 ] [ 3 ]

تُكتب برامج أندرويد عادةً بلغة جافا وكوتلن ، وتُجمّع إلى بايت كود لآلة جافا الافتراضية ، ثم تُترجم إلى بايت كود دالفيك وتُخزّن في ملفات .dex( Dalvik EXecutable ) و .odex( Optimized Dalvik EXecutable ). ويرتبط مصطلحا odex و de-odex بتحويلات البايت كود الخاصة بكل منهما. صُمّم تنسيق Dalvik Executable المضغوط للأنظمة ذات الموارد المحدودة من حيث الذاكرة وسرعة المعالج .

يُعدّ Android Runtime (ART) خليفة Dalvik ، حيث يستخدم نفس البايت كود وملفات .dex (ولكن ليس ملفات .odex)، ويهدف هذا التحديث إلى تحسين الأداء. أُدرجت بيئة التشغيل الجديدة لأول مرة في Android 4.4 "KitKat" كمعاينة تقنية ، [ 4 ] [ 5 ] وحلّت محل Dalvik بالكامل في الإصدارات اللاحقة؛ ويُعدّ Android 5.0 "Lollipop" أول إصدار تُضمّن فيه ART كبيئة التشغيل الوحيدة.

تاريخ

صُممت لغة Dalvik، التي سمّاها مبتكرها دان بورنشتاين تيمنًا بمدينة في أيسلندا ، [ 6 ] للأجهزة المدمجة ذات ذاكرة الوصول العشوائي (RAM) ووحدة المعالجة المركزية (CPU) المنخفضة جدًا [ 7 ] لتشغيل أكواد Java، ودعم لغة C++ لاحقًا للتطبيقات الثقيلة، ولغة JavaScript للتطبيقات الخفيفة الشبيهة بالويدجت، كلغات أساسية، بينما تُستخدم Java لبقية التطبيقات. وقد وُجدت حزمة تطوير Android الأصلية (Android Native Development Kit) ، التي مهدت الطريق لدعم C++، منذ الإصدار العام الأول لـ Dalvik. ووفقًا لبورنشتاين، فإن ربط الملفات التنفيذية والمكتبات بالذاكرة عبر عمليات متعددة، وبناء مترجم أسرع ذي دلالات قائمة على السجلات، كانا من العوامل الرئيسية في التصميم المبكر لمجموعة التعليمات المحاذية للبايت والآلة الافتراضية. ومن خلال تجربته في العمل مع J2ME على Sidekick at Danger ، وجد بورنشتاين أنها مُبسطة للغاية ومُقيدة بشكل كبير بالنسبة لنظام Android. وفي حين أن التحسينات، مثل Isolates التي خططت لها شركة Sun آنذاك، جعلت عزل العمليات غير ممكن عمليًا، لأنه يُخلّ بنموذج أمان Android داخل الجهاز. بالنسبة لـ Dalvik VM، استلهم بورنشتاين بشكل خاص من The Case for Register Machines [ 6 ] الذي ألفه برايان ديفيس وآخرون من كلية ترينيتي ، دبلن. [ 8 ]

تم نشر Dalvik كمصدر مفتوح بموجب رخصة Apache v2 مثل بقية مشروع Android مفتوح المصدر في عام 2008. [ 9 ]

بنيان

مقارنة بين معمارية دالفيك ومعمارية ART

على عكس آلات جافا الافتراضية ، التي تعتمد على بنية المكدس ، تستخدم آلة دالفيك الافتراضية بنية قائمة على المسجلات تتطلب عددًا أقل من تعليمات الآلة الافتراضية، ولكنها عادةً ما تكون أكثر تعقيدًا. تُكتب برامج دالفيك بلغة جافا باستخدام واجهة برمجة تطبيقات أندرويد (API)، ثم تُترجم إلى بايت كود جافا، وتُحوّل إلى تعليمات دالفيك عند الحاجة.

تُستخدم أداةٌ dxلتحويل ملفات Java من نوع .class إلى صيغة .dex. يحتوي ملف .dex واحد على عدة فئات . يتم تضمين السلاسل النصية المكررة والثوابت الأخرى المستخدمة في ملفات الفئات المتعددة مرة واحدة فقط في ملف .dex الناتج لتوفير المساحة. كما يتم تحويل بايت كود Java إلى مجموعة تعليمات بديلة تستخدمها آلة Dalvik الافتراضية. عادةً ما يكون حجم ملف .dex غير المضغوط أصغر بنسبة قليلة من حجم ملف Java المضغوط (JAR) المُشتق من نفس ملفات .class. [ 10 ]

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

نظرًا لكونه مُحسَّنًا لمتطلبات الذاكرة المنخفضة، فإن Dalvik لديه بعض الخصائص المحددة التي تميزه عن الآلات الافتراضية القياسية الأخرى: [ 11 ]

  • تم تقليص حجم الجهاز الظاهري لاستخدام مساحة أقل.
  • تم تعديل مجموعة الثوابت لاستخدام مؤشرات 32 بت فقط لتبسيط المفسر .
  • تُنفّذ لغة جافا القياسية تعليمات المكدس ذات 8 بت . يجب نسخ المتغيرات المحلية من وإلى مكدس المعاملات بتعليمات منفصلة. أما دالفيك، فتستخدم مجموعة تعليمات خاصة بها ذات 16 بت تعمل مباشرةً على المتغيرات المحلية. يُختار المتغير المحلي عادةً من حقل "سجل افتراضي" ذي 4 بت . هذا يُقلل عدد تعليمات دالفيك ويرفع سرعة مُفسّرها.

يسمح تصميم دالفيك للجهاز بتشغيل عدة نسخ من الآلة الافتراضية بكفاءة. [ 12 ] [ 13 ]

أدخل نظام Android 2.2 "Froyo" ميزة الترجمة الفورية القائمة على التتبع (JIT) إلى Dalvik، مما حسّن أداء التطبيقات من خلال تحليلها باستمرار في كل مرة تُشغّل فيها، وترجمة أجزاء قصيرة من رمزها البرمجي (bytecode) إلى رمز الآلة الأصلي . وبينما يفسر Dalvik باقي رمز التطبيق البرمجي، فإن التنفيذ الأصلي لتلك الأجزاء القصيرة، والتي تُسمى "التتبعات"، يُحسّن الأداء بشكل ملحوظ. [ ب ] تُحدد رؤوس التتبع المحتملة في واجهة المُترجم في مرحلة التحليل وبعد تحويل الرمز البرمجي. ويتم الاحتفاظ بذاكرة تخزين مؤقتة للترجمة أثناء وقت التشغيل. ويمكن ربط عدة تتبعات لتقليل التزامن بين المُترجم والمُفسّر. ويتم تحسين التتبع بتحويله إلى صيغة التعيين الثابت الفردي (Single Static Assignment )، مما يُتيح تحسينات مثل حذف عمليات التخزين غير المستخدمة، وطي المتغيرات، وتضمين دوال الوصول والتعيين. [ 12 ]

أداء

هاتف يعمل بتقنية دالفيك

تُعدّ المزايا النسبية لآلات المكدس مقابل الأساليب القائمة على السجلات موضوع نقاش مستمر. [ 17 ]

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

أظهرت اختبارات أجرتها شركة أوراكل (المالكة لتقنية جافا) على أجهزة ARMv7 عام 2010 باستخدام معايير جافا القياسية غير الرسومية، أن آلة HotSpot الافتراضية في Java SE المضمنة أسرع بمرتين إلى ثلاث مرات من آلة Dalvik الافتراضية القائمة على JIT في نظام Android 2.2 (الإصدار الأولي من Android الذي تضمن مُترجم JIT). [ 18 ] وفي عام 2012، أكدت معايير أكاديمية عامل 3 بين HotSpot وDalvik على نفس لوحة Android، مع ملاحظة أن حجم كود Dalvik لم يكن أصغر من حجم كود HotSpot. [ 19 ]

علاوة على ذلك، اعتبارًا من مارس 2014 لا تزال نتائج الاختبارات المعيارية التي أُجريت على جهاز أندرويد تُظهر فرقًا يصل إلى 100 ضعف بين التطبيقات الأصلية وتطبيق دالفيك على نفس الجهاز. [ 20 ] عند إجراء الاختبارات المعيارية باستخدام المفسر المبكر لعام 2009، أظهر كل من واجهة جافا الأصلية (JNI) والرمز الأصلي تسارعًا بمقدار عشرة أضعاف. [ 21 ]

الترخيص وبراءات الاختراع

يُنشر Dalvik بموجب شروط رخصة Apache 2.0. [ 22 ] يرى البعض أن Dalvik عبارة عن تطبيق مُنفصل تمامًا عن بيئة التشغيل القياسية Java، وليس تطويرًا مبنيًا عليها، مما يعني أنه لا يخضع لقيود الترخيص القائمة على حقوق النشر، سواءً من الإصدار القياسي أو الإصدار مفتوح المصدر من Java. [ 23 ] إلا أن شركة Oracle وبعض المراجعين يُخالفون هذا الرأي. [ 24 ]

في 12 أغسطس/آب 2010، رفعت شركة أوراكل ، التي استحوذت على شركة صن مايكروسيستمز في أبريل/نيسان 2009، وبالتالي تمتلك حقوق جافا، دعوى قضائية ضد جوجل بتهمة انتهاك حقوق النشر وبراءات الاختراع. زعمت أوراكل أن جوجل، أثناء تطويرها لنظام أندرويد، انتهكت عن علم وبشكل مباشر ومتكرر حقوق الملكية الفكرية لأوراكل المتعلقة بجافا. [ ج ] في مايو/أيار 2012، خلصت هيئة المحلفين في هذه القضية إلى أن جوجل لم تنتهك براءات اختراع أوراكل، وحكم قاضي المحكمة الابتدائية بأن بنية واجهات برمجة تطبيقات جافا التي استخدمتها جوجل غير قابلة للحماية بموجب حقوق النشر. [ 28 ] [ 29 ] واتفق الطرفان على عدم دفع أي تعويضات قانونية عن 9 أسطر من التعليمات البرمجية المنسوخة. [ 30 ] [ 31 ]

انظر أيضاً

ملحوظات

  1. لا يزال تنسيق بايت كود Dalvik يستخدم كتنسيق توزيع، ولكن لم يعد يستخدم في وقت التشغيل في إصدارات Android الأحدث.
  2. منسوب إلى مراجع متعددة: [ 14 ] [ 15 ] [ 16 ]
  3. منسوب إلى مراجع متعددة: [ 25 ] [ 26 ] [ 27 ]

مراجع

  1. "تصحيح أخطاء جمع البيانات المهملة في ART" . تم الاطلاع عليه في 6 أكتوبر 2015. لم يعد يتم صيانة وقت تشغيل Dalvik أو توفيره [في الإصدارات الحالية من Android] ويتم الآن استخدام تنسيق رمز البايت الخاص به بواسطة ART.
  2. مدخلة دفتر اليومية تشير إلى مصدر الاسم
  3. "مكالمات جوجل: نظرة على نظام أندرويد، حزمة تطوير البرامج gPhone" . onlamp.com . مؤرشف من الأصل بتاريخ 10 يناير 2017. تم الاطلاع عليه بتاريخ 5 فبراير 2008 .
  4. شون باكلي (6 نوفمبر 2013). "تجربة "ART" في نظام أندرويد كيت كات تُحسّن عمر البطارية وتُسرّع التطبيقات . موقع Engadget . تاريخ الاطلاع: 5 يوليو 2014 .
  5. دانيال ب. (7 نوفمبر 2013). "بيئة تشغيل جوجل ART التجريبية في نظام أندرويد كيت كات تُحسّن سرعة تنفيذ التطبيقات إلى الضعف" . phonearena.com . تاريخ الاطلاع: 5 يوليو 2014 .
  6. جلسة أسئلة وأجوبة مباشرة مع دان بورنشتاين، مبتكر آلة دالفيك الافتراضية . InfoQ . 29 سبتمبر 2015 عبر يوتيوب.
  7. مؤتمر جوجل I/O 2008 - تفاصيل آلة دالفيك الافتراضية . جوجل . 4 يونيو 2008 عبر يوتيوب.
  8. ديفيس، برايان؛ بيتي، أندرو؛ كيسي، كيفن؛ جريج، ديفيد؛ تي والدرون، جون (8 يونيو 2003). "حالة آلات التسجيل الافتراضية" (ملف PDF) . وقائع ورشة عمل 2003 حول المفسرات والآلات الافتراضية والمحاكيات . الصفحات 41-49 . doi : 10.1145/858570.858575 . ISBN  1-58113-655-2تمت أرشفة هذا الملف من النسخة الأصلية (PDF) في 1 فبراير 2024.{{cite book}}تم |journal=تجاهله ( مساعدة )
  9. بيشيزا، روب (12 نوفمبر 2007). "مجموعة تطوير البرامج لنظام أندرويد مفتوحة المصدر" . وايرد .{{cite magazine}}: CS1 maint: deprecated archiveal service ( link )
  10. بورنشتاين، دان (29 مايو 2008). "عرض تقديمي لتفاصيل Dalvik VM الداخلية" (ملف PDF) . ص 22. مؤرشف من الأصل (ملف PDF) في 16 أبريل 2017. تم الاطلاع عليه في 16 أغسطس 2010 . 
  11. روز، جون (31 مايو 2008). "مع أندرويد ودالفيك في مؤتمر جوجل I/O" . مؤرشف من الأصل في 4 يونيو 2008. تم الاطلاع عليه في 8 يونيو 2008 .
  12. 1 2 رامانان، نيراجا (12 ديسمبر 2011). “JIT عبر العصور” (PDF) .
  13. جوجل (13 أبريل 2009). "ما هو نظام أندرويد؟" . مؤرشف من الأصل في 27 يونيو 2009. تم الاطلاع عليه في 19 أبريل 2009 .
  14. بن تشينغ؛ بيل بوزبي (مايو 2010). "مترجم JIT لآلة دالفيك الافتراضية لنظام أندرويد" (ملف PDF) . android-app-developer.co.uk . الصفحات 5-14 . مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 6 نوفمبر 2015. تم الاطلاع عليه بتاريخ 18 مارس 2015 . 
  15. فيل نيكنسون (26 مايو 2010). "مطور جوجل أندرويد يشرح المزيد عن دالفيك وJIT في فرويو" . androidcentral.com . مؤرشف من الأصل في 14 يوليو 2014. تم الاطلاع عليه في 8 يوليو 2014 .
  16. "جهاز نيكسوس ون يعمل بنظام أندرويد 2.2 فرويو. ما مدى سرعته مقارنةً بالإصدار 2.1؟ أسرع بنسبة 450% تقريبًا" . 13 مايو 2010. تم الاطلاع عليه بتاريخ 21 مايو 2010 .
  17. شي، يون هي؛ جريج، ديفيد؛ بيتي، أندرو؛ إرتل، إم. أنطون (11 يونيو 2005). "مواجهة الآلة الافتراضية: المكدس مقابل السجلات" (ملف PDF) . تم الاطلاع عليه في 22 ديسمبر 2009 .
  18. فانديت، بوب (22 نوفمبر 2010). " أداء Java SE Embedded مقارنةً بنظام Android 2.2" . شركة أوراكل . مؤرشف من الأصل في 28 يونيو 2011. تم الاطلاع عليه في 4 سبتمبر 2011. تُظهر النتائج أنه على الرغم من أن تقنية JIT الجديدة في نظام Android تُعدّ تحسينًا على تطبيقها السابق الذي يعتمد على المترجم فقط، إلا أن أداء Android لا يزال متأخرًا عن أداء Java SE Embedded المُفعّل بتقنية Hotspot. كما يتضح من النتائج أعلاه، يُمكن لـ Java SE Embedded تنفيذ بايت كود Java أسرع من Android 2.2 بمقدار ضعفين إلى ثلاثة أضعاف.
  19. هيونغ-سوك أوه؛ بيوم-جون كيم؛ هيونغ-كيو تشوي؛ سو-موك مون (2012). وقائع ورشة العمل الدولية العاشرة حول تقنيات جافا للأنظمة المضمنة والأنظمة في الوقت الحقيقي - JTRES '12 . رابطة آلات الحوسبة . ص 115. doi : 10.1145/2388936.2388956 . ISBN  9781450316880. S2CID 36316611 . في وضع JITC، مع ذلك، فإن Dakvik أبطأ من HotSpot بأكثر من 2.9 مرة، وحجم الكود الذي تم إنشاؤه ليس أصغر من حجم كود HotSpot بسبب جودة الكود الأسوأ وكود تتبع التسلسل. 
  20. "أعلى نتائج اختبار AndEBench" . www.eembc.org . تم الاطلاع عليه بتاريخ 23 مارس 2014 .
  21. باتيوك، ليونيد؛ شميدت، أوبراي-ديريك؛ شميدت، هانز-غونتر؛ كامتيبي، أحمد؛ ألبايراك، شاهين (29 أبريل 2009). "تطوير وقياس أداء تطبيقات لينكس الأصلية على نظام أندرويد". برمجيات الوسيطة اللاسلكية المتنقلة، وأنظمة التشغيل، والتطبيقات . سلسلة محاضرات معهد علوم الحاسوب والمعلوماتية الاجتماعية وهندسة الاتصالات. المجلد 7. الصفحات 381-392 . Bibcode : 2009mmos.book..381B . doi : 10.1007/978-3-642-01802-2_28 . ISBN   978-3-642-01801-5S2CID 12131309. تُظهر النتائج أن تطبيقات لغة C الأصلية يمكن أن تكون أسرع بما يصل إلى 30 مرة من خوارزمية مماثلة تعمل على Dalvik VM. ويمكن أن تصل سرعة تطبيقات Java إلى 10 أضعاف عند استخدام JNI. 
  22. "تنزيل شجرة المصدر - أندرويد مفتوح المصدر" . Android.git.kernel.org. مؤرشف من الأصل في 17 أبريل 2009. تم الاطلاع عليه في 7 يونيو 2012 .
  23. غارلينغ، كاليب. "خبراء جوجل وأوراكل يتصادمون بشأن محاكاة جافا لنظام أندرويد" . وايرد .
  24. إد بوت (8 سبتمبر 2011). "التاريخ الحقيقي لجافا وأندرويد، كما ترويه جوجل" . ZDNet . تاريخ الاطلاع : 27 نوفمبر 2011. يُعرَّف تطبيق "الغرفة النظيفة" بأنه عدم اطلاع المهندسين الذين يكتبون الكود بشكل مباشر على المواد الأصلية المحمية بحقوق الطبع والنشر، بما في ذلك الكود والمواصفات والوثائق الأخرى. وهذا يُمثل مشكلة لجوجل، كما أشرتُ في منشور الأمس، لوجود أدلة قوية على أن المهندسين العاملين على المشروع كان لديهم وصول مباشر إلى المواد المحمية بحقوق الطبع والنشر.
  25. "أوراكل تقاضي جوجل بسبب جافا في أجهزة أندرويد" . digitaltrends.com. 13 أغسطس 2010. تم الاطلاع عليه بتاريخ 8 أغسطس 2011 .
  26. جيمس نيكولاي (12 أغسطس/آب 2010). "أوراكل تقاضي جوجل بسبب استخدام جافا في نظام أندرويد" . مجلة كمبيوتر وورلد . مؤرشف من الأصل في 1 أبريل/نيسان 2023. تم الاطلاع عليه في 13 أغسطس/آب 2010 .
  27. مارك هاشمان (13 أغسطس 2010). "أوراكل تقاضي جوجل بسبب استخدام جافا في نظام أندرويد" . مجلة بي سي . زيف ديفيس .
  28. جوش لوينسون (23 مايو 2012). "هيئة المحلفين تبرئ جوجل من انتهاك براءات اختراع أوراكل" . زد نت . تم الاطلاع عليه في 25 مايو 2012 .
  29. جو مولين (31 مايو 2012). "جوجل تفوز بحكم حاسم بشأن واجهة برمجة التطبيقات، وقضية أوراكل تنهار" . آرس تكنيكا . تم الاطلاع عليه في 1 يونيو 2012 .
  30. نيكولاي، جيمس (20 يونيو 2012). "أوراكل توافق على دفع تعويضات "صفرية" في دعوى جوجل، وتدرس الاستئناف" . مؤرشف من الأصل في 1 أبريل 2023. تم الاطلاع عليه في 23 يونيو 2012 .
  31. آدم أوتلر (16 مايو 2012). "تحديث بشأن محاكمة أوراكل ضد جوجل" . مؤرشف من الأصل في 16 مايو 2013. تم الاطلاع عليه في 18 يناير 2013. يستند جزء كبير من ادعاءات أوراكل إلى 9 أسطر من التعليمات البرمجية الموجودة ضمن Java.Util.Arrays.rangeCheck() . إليك التعليمات البرمجية المعنية:...