30

تطبيقات الهواتف الذكية، الطبيعي (Native) أم الهجين (Hybrid)؟

السلام عليكم.

تطبيقات الهواتف الذكية أصبحت من ضروريات الحياة اليومية "لبعضنا على الأقل"، ولتطوير هذه التطبيقات يجب على المبرمج تعلم لغة جديدة (في حالة iOs مثلا تحتاج تعلم Obj-C ...) لكن بعضهم فكّر بشكل مختلف حيث قال لما لا نستفيد من الخبرة التي اكتسبناها في الويب (HTML5/CSS3/JS) ونضعها تحت تصرفنا في هذه الأنظمة (Android, iOs, Blackberry ...) بحيث نربح وقتا و جهدا. وحقيقة فعلوا هذا في مشاريع متعددة لعل أشهرها هو Phonegap ( للمزيد :

http://phonegap.com

) وتسمى التطبيقات المبرمجة بها بالهجينة كونها مبرمجة بتكنلوجيات الويب و تعمل تحت حاوية طبيعية (Native Container) إلا أن هناك مشكل فيها. مشكل حقيقي. هو الأداء.

السؤال: هل ستضحي بالأداء من أجل خبرتك (أو التكنولوجيات) التي يمكنك أن تستفيد منها أم بوقتك من أجل الأداء؟

مميزات التطبيقات الهجينة:

  1. سهلة التطوير (طبعا إن كنت تتقن تكنلوجيات الويب)

  2. سرعة التنفيذ و انخفاض الكلفة.

  3. الوصول لمجموعة كبيرة (والأساسية) من الواجهات البرمجية التي يوفرها النظام (APIs)

  4. عصفورين بحجر، أي دعم عدة منصات مرة واحدة.

*عيوب التطبيقات الهجينة:

  1. الأداء الضعيف.

  2. هناك حدود لبعض الواجهات البرمجية (APIs)

  3. دعم عدة منصات يحتاج بعض الأحيان إلى حيل و خدع إضافية.

  4. اختلاف الواجهة من منصة لأخرى.

مميزات التطبيقات الطبيعية:

  1. الوصول لكل الواجهات البرمجية.

  2. الأداء و الانسيابية.

  3. تحكم أكبر بالواجهة و التأثيرات.

  4. تنقيح أسهل (Debug)

عيوب التطبيقات الطبيعية:

  1. تحتاج أن تتعلم لغة المنصة التي تبرمج لها.

  2. تأخذ وقتا و جهدا وبالتالي تكلفة فكما يقولون الوقت هو المال.

  3. لا تستطيع استعمال الشفرة المصدرية في منصات أخرى.

إن رأيت أن هناك ترجمة أفضل لبعض الكلمات (مثل native) فأخبرنا بها من فضلك!


على الهامش: مشكل الأداء في التطبيقات الهجينة ممكن سيزول قريبا فكما نرى كل يوم يظهر هاتف ذكي أو لوحي ذو مواصفات ممتازة تقترب من أجهزة الكمبيوتر "أبالغ قليلا هنا".

هناك أيضا مشروع مثيرة للإهتمام استحوذت عليه facebook من مدة ليست ببعيدة اسمه Parse ويمكن الإطلاع عليه من :

بحيث يتيح كتابة تطبيقات طبيعية (Native) بواسطة عدة لغات تختار منها ما تشاء.


التعليق السابق

بخصوص debuggers فهي موجودة و يسمونها (remote debugger) مثل weinre : http://debug.phonegap.com (طبعا ليست مثالية لكنها تفي بالغرض)

Trigger.io يبدو مثيرا للإهتمام حيث "يزعمون" أنهم يقدمون أداء أفضل بخمس مرات من الحلول الأخرى وكذلك عملية build : http://trigger.io/cross-pla...

Appcelerator صحيح أنه يوفر العديد من APIs لكن اشتكى الكثير من المطورين من الأداء السيء له.

أما عن Xamarin فيبدوا أنه حل مثالي للمقبلين على Cross-platform ويريدون أداء مميز (طبعا تعلم لغة جديدة واحدة أفضل من تعلم 3 لغات مختلفة).

سيكون خياري بين Trigger.io و Phonegap.

Android: لغة Java/Scala و Android API

والآن يمكن باستخدام Groovy

كإضافة هذا الجدول يقدم مقارنة مستفيضة حول هذه الإطارات (وإن كانت بعض المعلومات ليست دقيقة تماما):

هناك حلول تنتج تطبيقات Native لـ Android و iOS معا مثل Kivy أو Corona وغيرهما...