مقارنة بين واجهة برمجة تطبيقات جافا وواجهة برمجة تطبيقات أندرويد

تقارن هذه المقالة بين واجهات برمجة التطبيقات (APIs) والآلات الافتراضية (VMs) للغة البرمجة Java ونظام التشغيل Android .

على الرغم من أن معظم تطبيقات Android مكتوبة بلغة تشبه لغة Java، إلا أن هناك بعض الاختلافات بين واجهة برمجة تطبيقات Java وواجهة برمجة تطبيقات Android، ولا يقوم Android بتشغيل بايت كود Java بواسطة آلة Java الافتراضية التقليدية (JVM)، ولكن بدلاً من ذلك بواسطة آلة Dalvik الافتراضية في الإصدارات القديمة من Android، ووقت تشغيل Android (ART) في الإصدارات الأحدث، والتي تقوم بتجميع نفس الكود الذي يقوم Dalvik بتشغيله إلى ملفات تنفيذية بتنسيق ELF (ملفات تنفيذية قابلة للتنفيذ والربط ) تحتوي على كود الآلة .

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

يتميز Dalvik ببعض السمات التي تميزه عن الآلات الافتراضية القياسية الأخرى: [ 1 ]

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

نظرًا لأنّ الشفرة الوسيطة التي تُحمّلها آلة Dalvik الافتراضية ليست شفرة Java الوسيطة، وبسبب طريقة تحميل Dalvik للفئات، يستحيل تحميل حزم المكتبات كملفات JAR . يجب استخدام إجراء مختلف لتحميل مكتبات Android، حيث يجب نسخ محتوى dexالملف الأساسي إلى منطقة التخزين الداخلية الخاصة بالتطبيق قبل تحميله. [ 2 ]

خصائص النظام

كما هو الحال بالنسبة لفئة Java SESystem ، تسمح فئة Android Systemباسترجاع خصائص النظام. مع ذلك، فإن بعض الخصائص الإلزامية المُعرَّفة باستخدام آلة Java الافتراضية ليس لها معنى أو لها معنى مختلف في نظام Android. على سبيل المثال:

  • java.versionتُرجع الخاصية القيمة 0 لأنها غير مستخدمة على نظام Android.
  • java.specification.versionيعيد دائمًا القيمة 0.9 بغض النظر عن إصدار نظام Android المستخدم.
  • java.class.versionيعيد دائمًا القيمة 50 بغض النظر عن إصدار نظام Android المستخدم.
  • user.dirله معنى مختلف على نظام أندرويد.
  • user.homeوالخصائص user.nameغير موجودة على نظام أندرويد.

مكتبة الفئات

تستخدم الإصدارات الحالية من نظام أندرويد أحدث إصدار من لغة جافا ومكتباتها (ولكن ليس أطر عمل واجهة المستخدم الرسومية الكاملة )، وليس تطبيق أباتشي هارموني جافا الذي كانت تستخدمه الإصدارات الأقدم. يمكن جعل شفرة جافا 8 المصدرية التي تعمل في أحدث إصدار من أندرويد تعمل في الإصدارات الأقدم من أندرويد. [ 3 ]

حزمة java.lang

افتراضيًا، لا يُخرج دفق الإخراج الافتراضي System.outأي System.errبيانات، [ 4 ] ويُنصح المطورون باستخدام Logالفئة التي تُسجل السلاسل النصية في أداة LogCat. [ 5 ] وقد تغير هذا الأمر على الأقل منذ إصدار HoneyComb ، حيث تُخرج هذه الفئة الآن أيضًا إلى وحدة تحكم السجل.

مكتبة الرسومات والأدوات

لا يستخدم نظام أندرويد مجموعة أدوات النوافذ المجردة (Abstract Window Toolkit ) ولا مكتبة Swing . تُبنى واجهات المستخدمView باستخدام كائنات العرض (View). يستخدم أندرويد إطار عمل مشابهًا لـ Swing، ولكنه يعتمد على كائنات العرض (View) بدلاً من JComponentكائنات Java Beans. مع ذلك، فإن عناصر واجهة المستخدم (Widgets) في أندرويد ليست Java Beans : يجب توفير تطبيق أندرويد Contextلعنصر واجهة المستخدم عند إنشائه.

المظهر والملمس

لا تدعم مكتبة عناصر واجهة المستخدم في نظام أندرويد بنية مظهر وتجربة استخدام قابلة للتوصيل . يجب تضمين مظهر وتجربة استخدام عناصر واجهة المستخدم في نظام أندرويد داخل هذه العناصر نفسها. ومع ذلك، توجد إمكانية محدودة لتعيين الأنماط والسمات للتطبيق. [ 6 ]

مدير التخطيط

على عكس Swing حيث يمكن تطبيق مديري التخطيط على أي عنصر واجهة مستخدم حاوية ، يتم ترميز سلوك تخطيط Android في الحاويات. [ 7 ]

حزمة java.beans

لا يتضمن نظام Android سوى مجموعة فرعية صغيرة من java.beansالحزمة ( PropertyChangeEventوالفئات ذات الصلة).

انظر أيضاً

مراجع

  1. روز، جون (31 مايو 2008). "مع أندرويد ودالفيك في مؤتمر جوجل I/O" . مؤرشف من الأصل في 4 يونيو 2008. تم الاطلاع عليه في 8 يونيو 2008 .
  2. فريد تشونغ (28 يوليو 2011). "تحميل الفئات المخصصة في دالفيك" . جوجل . مؤرشف من الأصل في 18 فبراير 2014. تم الاطلاع عليه في 27 نوفمبر 2011 .
  3. "استخدام ميزات لغة Java 8 وواجهات برمجة التطبيقات" . مطورو Android . تم الاطلاع عليه بتاريخ 23 يناير 2021 .
  4. "جسر تصحيح أخطاء أندرويد" . جوجل . تم الاسترجاع في 31-05-2009 . بشكل افتراضي، يرسل نظام أندرويد مخرجات stdout وstderr (System.out وSystem.err) إلى /dev/null.
  5. "سجلات القراءة والكتابة" . جوجل . مؤرشف من الأصل بتاريخ 22-11-2011 . تم الاطلاع عليه بتاريخ 27-11-2011 .
  6. "تطبيق الأنماط والسمات" . جوجل . مؤرشف من الأصل بتاريخ 28-03-2014 . تم الاطلاع عليه بتاريخ 03-09-2011 .
  7. "عناصر التخطيط الشائعة" . جوجل . تم الاسترجاع في 2011-09-03 .