تطبيقات الهواتف الذكية، الطبيعي (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 ويمكن الإطلاع عليه من :https://www.parse.com/ بحيث يتيح كتابة تطبيقات طبيعية (Native) بواسطة عدة لغات تختار منها ما تشاء.


لجواب المختصر، تطبيق native طبعاً أفضل. لكن في بعض الحالات سيكون من المنطقي أكثر التضحية بالأداء قليلاً اذا كان التطبيق لا يحتاج خصائص أساسية بالنظام لبناء نموذج أولي من التطبيق على الأقل ورؤية كيف سيتفاعل المستخدمين معه. لاطلاق تطبيق native محترم ودعم أشهر الأنظمة الموجودة على المبرمج أو لنقل فريق المبرمجين تعلم واستخدام تقنيات مختلفة تماماً:
  • Android: لغة Java/Scala و Android API
  • iOS: لغة Objective-C و iOS API
  • Windows Phone: احدى لغات .NET و Windows Phone API
  • BackBerry: لغة C/C++ و BlackBerry API
لم أذكر برمجة واجهة تابلت من كل تطبيق بعد، وحتى لو اختصرنا واعتمدنا أندرويد و iOS فقط يبقى التطوير صعب. في المقابل كل ما تحتاجه هو HTML5/CSS3/JavaScript مع Phonegap API لتطوير تطبيق يدعم جميع الأنظمة السابقة. البطء قد لا يكون بسبب استخدام تقنيات الويب فقط ثم تغليفها كتطبيق بل لأن الكثير من مطوري المواقع لم يعتد أن يكتب كود JavaScript مثلا ويقوم بعمل optimize له بسبب السرعة الكبيرة لمحركات جافاسكريبت في المتصفحات التقليدية التي اعتاد عليها. عدم وجود debuggers عند تطوير تطبيقات موبايل باستخدام تقنيات الويب هو أحد المشاكل الكبيرة أيضاً.
يوجد خيارات أخرى لتطوير تطبيقات native مثيرة للاهتمام وهي:
  • RubyMotion: مبني على MacRuby ويمكن باستخدامه انشاء تطبيقات iOS وحتى OS X أيضاً تعمل تماماً كأي برنامج كتب باستخدام Objective-C وبنفس الأداء. RubyMotion لا تضع مفسر روبي بالنظام ولا تستخدم تقنيات ويب بل تعمل على Objective-C runtime وتتصل بالـ APIs مباشرة تماما كلغة Objective-C. مشكلته أنه لا يدعم الا iOS وفي حين أنه صحيح يمكن البرمجة باستخدام روبي لكن على المبرمج تعلم iOS APIs بجميع الأحوال لكن بشكل Objective-C وهذه مشكلته الأساسية. ليس مجاني.http://www.rubymotion.com
  • Xamarin: يتيح برمجة تطبيقات native باستخدام لغة سي شارب ولقد برمج به عدة تطبيقات مشهورة وبأداء ممتاز خصوصاً أنه يدعم أندرويد، iOS وطبعاً ويندوز فون. كرأي شخصي، أجد أن أمام مبرمجي سي شارب فرصة سهلة للدخول بتطوير تطبيقات الموبايل مستخدمين لغة يعرفونها بالفعل وخيار مدعوم بشكل جيد عوضاً عن مواصلة تطوير مواقع باستخدام .NET وتطبيقات سطح مكتب أكل عليها الدهر. ليس مجاني. http://xamarin.com
السؤال الذي يطرح نفسه، اذا قرر المبرمج استخدام تقنيات الويب لتطوير تطبيق موبايل، أي من هذه الحلول أفضل؟

شارك الموضوع

إقرأ أيضًا