مقدمة
في العمل ، اضطررت مرارًا وتكرارًا للتعامل مع اختيار التكنولوجيا المناسبة لتطوير المحمول. حاولت أدناه جمع وتصنيف الأطر الرئيسية وفقًا للمناهج المستخدمة والمزايا والعيوب.
إذا كانت بعض معلوماتي غير صحيحة أو قديمة - التعليقات مرحب بها.
أي إطار عمل عبر الأنظمة الأساسية عبارة عن طبقة تجريدية أعلى النظام الأساسي الأصلي ويسمح لك بالوصول فقط إلى تلك الميزات التي يدعمها الإطار مباشرة.
في معظم الحالات ، من الممكن توسيع الدعم للمنصة عن طريق كتابة المكونات الإضافية الأصلية للإطار ، ولكن في بعض الحالات يمكن أن يعقد هذا التطور بشكل كبير. مثال جديد من مقالة AirBnb المثيرة هو React Native ، والذي لا يعرف في الوقت الحالي كيفية العمل خارج الصندوق مع مكتبات Android 64 بت.
تحتاج أيضًا إلى الانتباه إلى أن المكونات الإضافية الأصلية والرمز الرئيسي للتطبيق عبر الأنظمة الأساسية ، كقاعدة عامة ، يتم تنفيذها في عمليات مختلفة ويمكن أن يتسبب التفاعل بينهما في حدوث مشكلات في الأداء. بالنسبة للعمل مع المستشعرات ، أو SQLite ، عادةً لا تكون هذه مشكلة ، ولكن إذا كنت تستخدم ، على سبيل المثال ، مكتبة OpenCV كمكوِّن إضافي أصلي وتبدأ في رمي مقطع فيديو بينها وبين التطبيق الرئيسي ، فقد يكون التباطؤ كبيرًا.
العرض المحدود في سوق العمل
أولاً ، يعتمد حضور المطورين على مدى انتشار الإطار. يمكن أن يكون العثور على أشخاص تحت React Native أسهل من المطورين الأصليين ، ولكن ، على سبيل المثال ، مع Flutter يكون الأمر أكثر صعوبة.
يعتمد مقدار هذا العامل الذي يجب أخذه في الاعتبار على المهام. قد لا تولي معظم الشركات الناشئة اهتمامًا لها ، لأن تعلم تقنية جديدة هو على الأرجح مكافأة للموظفين الحاليين والمحتملين. من ناحية أخرى ، تضطر الشركات الكبرى إلى مراعاة سوق العمل.
مخاطر الدعم
يُعتقد أن احتمال انتهاء دعم إطار العمل عبر الأنظمة الأساسية أعلى بكثير من احتمال حدوث نفس الحدث فيما يتعلق بنظام تشغيل الهاتف المحمول.
في الواقع ، السؤال معقد للغاية. يمكن إغلاق نظام التشغيل تمامًا مثل الإطارات (مثال Windows Phone حديث تمامًا). بالإضافة إلى ذلك ، في إطار التنمية الأصلية ، قد يتم أيضًا إغلاق بعض التقنيات ، وأحيانًا ما يكون الرمز على أطر العمل عبر الأنظمة الأساسية أكثر قابلية للبقاء.
مثال على ذلك هو في مجال الألعاب والوسائط المتعددة - سترسل Apple تقنية OpenGL لتستقر على نظام التشغيل الخاص بها وسيتعين على كل من كتب تطبيقات ثلاثية الأبعاد أصلية إعادة كتابتها بالكامل لإصدار إصدارات جديدة. في الوقت نفسه ، بالنسبة لأولئك الذين استخدموا محركات الألعاب عبر الأنظمة الأساسية (على سبيل المثال ، الوحدة) ، لن يتطلب التحديث أي جهود إضافية.
الاتجاهات الرئيسية
التنمية المختلطة ، HTML + JavaScript
من الناحية الفنية ، التطبيقات من النوع المختلط هي صفحات HTML معروضة في متصفح مضمن. بشكل عام ، الإطار غير مطلوب لهذا النهج ، ولكن Cordova يوفر مجموعة من المكونات الإضافية للوصول إلى ميزات النظام الأساسي ، ولهذا السبب يتم استخدامها عادةً.
المزايا الرئيسية
تكلفة التطوير الدنيا
يسمح لك الأسلوب المختلط بإعادة استخدام مهارات المطورين ، ولكن أيضًا الرمز المكتوب لمواقع الويب.
القدرة على دمج عناصر الويب
يتجاوز عدد مكتبات HTML / JS بشكل كبير عدد المكتبات للتطبيقات الأصلية. من المثير للاهتمام ، وهذا يشمل ، على سبيل المثال ، Google Analytics ، أو مجموعة واسعة من شبكات الإعلانات.
السلبيات الرئيسية
إنتاجية منخفضة
جافا سكريبت الحديثة تستخدم تجميع JIT ، وهي محسنة بشكل جيد وتعمل بسرعة ، ولكن بناء واجهة تعتمد على شجرة DOM ليست عملية فعالة للغاية. يوفر استخدام أطر JS الحديثة مستوى إضافيًا من الحمل. بالنسبة للهواتف الضعيفة و / أو مع الاستخدام النشط للعناصر التفاعلية ، يمكن أن يكون هذا مشكلة.
"الشعور الأصلي"
هذه نقطة غير رسمية ، لكنها مهمة للغاية. يستجيب الموقع في المتصفح للإيماءات ويعرض بشكل مختلف قليلاً عن تطبيق الهاتف المحمول. العنصر الأكثر وضوحًا في هذا الشعور ، وهو تأخير قدره 300 مللي ثانية عند الضغط عليه ، يقرر كوردوفا ، ولكن تبقى العديد من التفاصيل الأخرى.
مشكلة توافق المتصفح
في الإصدارات الأقدم من Android (قبل الإصدار 5) ، كان WebView جزءًا من النظام الأساسي ولم يتم تحديثه تلقائيًا. وفقًا لذلك ، لن يكون من الممكن استخدام إمكانات المتصفح الحديثة في التطبيقات المختلطة على هذه الأجهزة.
ونتيجة لذلك ، تحدد التطبيقات المختلطة إما الحد الأدنى من إصدار Android (مع ترك حوالي 13٪ من الأجهزة في الوقت الحالي) أو تضمين WebView في رمز التطبيق (مشروع CrossWalk) ، مما يزيد من حجم التطبيق بعشرات الميغابايت.
الوجهة
إنشاء تطبيقات لمرة واحدة بسرعة. إذا كانت هناك ميزانية تطوير كبيرة ، فعادة ما يتم ازدراء النهج الهجين.
الأطر الأساسية
جوهر جميع الأطر الهجينة الرئيسية هو Cordova ، الذي يوفر الوصول إلى المكونات الإضافية الأصلية. يوفر PhoneGap أدوات للبناء فوق Cordova ، في حين أن Ionic عبارة عن إطار عمل ومجموعة من المكونات لبناء واجهات المستخدم فيه.
واجهة مستخدم أصلية ، رمز مشترك
من المهم ملاحظة أنه باستخدام هذا النهج ، يتم تنفيذ واجهة المستخدم ومنطق الأعمال في عمليات مختلفة تتفاعل عبر الجسر. يرتبط عدد من عيوب النهج بهذا.
هذا النهج لديه العديد من خيارات التنفيذ.
تصنيف الكود القابل للتنفيذ
كود مترجم
يستخدم Xamarin لغة C # ، وتجميعها في رمز النظام الأساسي الأصلي. بشكل عام ، يوفر هذا النهج حجم تطبيق صغير إلى حد ما وسرعة عالية إلى حد ما.
ترجمة لغة مع الترجمة JIT
تستخدم معظم أطر العمل في هذا النهج جافا سكريبت لمعالجة منطق الأعمال.
التصنيف حسب طريقة وصف الواجهة
أدوات أصلية
لا يستخدم Xamarin مكونات الواجهة الأصلية فحسب ، بل يصفها أيضًا بالتنسيق المقبول لكل نظام أساسي.
عناصر الواجهة العالمية
يستخدم Xamarin Forms and Appcelerator مجموعة الأدوات الخاصة بهم ، والتي يتم تحويلها إلى مكونات الواجهة المناسبة لكل نظام أساسي.
يستخدم React Native برامج تغليف حول مكونات الواجهة الأصلية. وفقًا لذلك ، يتم وصف الواجهة لكل نظام أساسي على حدة ، ولكن طريقة الوصف هي نفسها.
المزايا الرئيسية
واجهة أصلية بالكامل
أولاً ، يتطابق مظهر و "إحساس" التطبيق تمامًا مع التطبيقات الأصلية.
ثانيًا ، يسمح باستخدام مكتبات الواجهة الأصلية في التطبيقات. لن يعمل استخدام الإعلانات المدمجة مع المحتوى (الإعلانات الأصلية) ، التي تركز على تطبيقات الجوال ، في طرق أخرى. صحيح ، بالنسبة لهذا النهج ، فإن مجموعة المكتبات ذات الصلة محدودة للغاية. أعرف فقط عن دعم Facebook Native Ads في React Native.
القدرة على إعادة استخدام مهارات المطور
تم تصميم العديد من أطر عمل هذه المجموعة بحيث يمكن للمطورين من مناطق أخرى تعلم كيفية إنشاء تطبيقات الهاتف المحمول بأقل التكاليف. بالنسبة إلى React ، Native is React ، لـ Xamarin ، .NET ، إلخ.
السلبيات الرئيسية
تحديد إمكانات الواجهة ، أو تكاليف إضافية للتطوير المنفصل
يعتمد تنسيق هذا الطرح على تصنيف الإطار وفقًا للطريقة التي يتم وصف الواجهة بها:
يتيح لك Xamarin استخدام جميع ميزات المنصات تقريبًا ، ولكن عليك قضاء الكثير من الوقت على الواجهات لكل منصة. ونتيجة لذلك ، فإن تكاليف العمالة ليست أقل بكثير من التنمية المحلية.
تتيح لك نماذج Xamarin و Appcelerator وصف الواجهات مرة واحدة فقط ، ولكنها تعمل مع مجموعة فرعية محدودة جدًا من الوظائف الأصلية (ليس أكثر من الحد الأدنى من التقاطع بين مجموعات ميزات كل منصة ، لتكون رسمية).
React Native في الوسط ، يجمع بين كل من العيوب ، ولكن في شكل أقل وضوحًا.
أداء تفاعل الواجهة
وهنا يأتي دور عامل الواجهات ومنطق الأعمال في العمليات المختلفة. عندما يكون من الضروري تبادل كميات كبيرة من المعلومات من خلال جسر بسرعة عالية (الرسوم المتحركة المعقدة ذات التردد العالي) ، قد تنشأ صعوبات في هذا النهج.
تسرب الذاكرة
يمكن أن يحدث تسرب للذاكرة في أي تطبيق ، ولكن يتم التعامل مع معظم المواقف القياسية من قبل جامعي القمامة.
تكمن المشكلة في التطبيقات عبر الأنظمة الأساسية بواجهة أصلية مرة أخرى في أنها تعمل في عمليتين تحتويان على جامعي قمامة منفصلة. إذا كان كائن منطق الأعمال يشير إلى كائن واجهة ، فإن كائن الواجهة هذا ليس القمامة ، لأنه هناك رابط لها من الجسر. إذا كان كائن الواجهة يشير مرة أخرى إلى كائن منطق الأعمال ، فلن يتم اعتباره كسوء حتى لو لم يعد هناك المزيد من المراجع إليه.
تعتمد فرص مواجهة مشكلة وحجمها بشكل مباشر على التطبيق. إذا تم إنشاء وحذف الكائنات المرتبطة بالواجهة بشكل نشط (كما هو الحال في التمرير اللامتناهي) ، فإن احتمال حدوث تسرب يزيد. إذا كانت هذه الأشياء كبيرة (على سبيل المثال ، الصور) ، فإن تأثير التسرب يزداد.
في الواقع ، هذه المشكلة موجودة أيضًا عند العمل مع المكونات الإضافية الأصلية ، والتي يتم تنفيذها أيضًا في عملية منفصلة. ولكن هناك ، في معظم الحالات ، إما أنه لا يوجد مثل هذا التلاعب المكثف للأجسام الكبيرة ، أو يحدث التفاعل في نهج إجرائي صارم ، دون إحالات مرجعية.
الوجهة
تطبيقات ذات واجهة أصلية بالكامل ، خاصة إذا كان هناك متخصصون في التقنيات ذات الصلة.
الأطر الأساسية
رد فعل الأم
لديه دعم Facebook ويستخدم نهج إطار React JS الأكثر شيوعًا ، والذي يحظى بشعبية كبيرة. أحدث مقال عن تخلي AirBnb عن React Native الكثير من الضجيج ، ولكن إذا كان على علم بالمخاطر ، فقد يكون حلًا فعالًا للغاية.
Xamarin
بالإضافة إلى النهج الرئيسي ، فإنه يحتوي على مكتبة Xamarin.Forms ، والتي تسمح لك بتصميم واجهات بسيطة بكفاءة عبر الأنظمة الأساسية. مدعوم بنشاط من Microsoft. عند العمل باستخدام ASP.NET على الخادم ، فإنه يسمح لك أيضًا بحفظ قدر معين من العمل من خلال استخدام فئات منطق الأعمال الشائعة على الخادم وفي تطبيق الهاتف المحمول.
Nativecript
تم تصميمه على غرار React Native للمطورين الذين يمتلكون أطر JS أخرى (Angular و Vue.js). أقل شعبية ، ولكن لديه عدد من الحلول الحديثة في الهندسة المعمارية.
واجهة مستخدم أصلية ، رمز مشترك
تستخدم جميع محركات الألعاب تقريبًا هذا النهج ، لكنها تتجاوز نطاق هذه المقالة.
مبدأ هذا النهج هو أن التطبيق يستخدم الكود الخاص به وعرض واجهة المستخدم الخاصة به.
المزايا الرئيسية
واجهات عالية الأداء
في الواقع ، يقوم التطبيق الذي يرسم واجهته الخاصة بنفسه بتنفيذ نفس العمليات التي يقوم بها نظام التشغيل في الواجهة الأصلية. من الناحية النظرية ، يمكن أن يكون أسرع ، لأنه لا يوجد تبديل بين العملية والنواة ، ولكن من الناحية العملية ، تؤثر عوامل أخرى على سرعة عرض واجهة معينة ، وتلعب دورًا أكبر بكثير.
"واجهات التصميم"
تستخدم التطبيقات الأصلية مكونات واجهة جاهزة ولديها بعض القيود على ما يمكن فعله بها. في المقابل ، لا تحتوي التطبيقات التي ترسم واجهة خاصة بها على مثل هذه القيود ويمكنها مزج العناصر الجاهزة بحرية مع العرض الفردي.
السلبيات الرئيسية
هذه العيوب ذات صلة فقط بالتطبيقات التي تحاكي واجهة نظام التشغيل القياسية. كما ذكرنا من قبل ، فإن هذا النهج هو الأمثل لواجهات التصميم والألعاب.
حجم التطبيق
تُضطر التطبيقات التي تستخدم هذا النهج إلى حمل شفرة لعرض جميع عناصر الواجهة ، بما في ذلك العناصر القياسية الشرطية. يؤثر هذا على كل من حجم التطبيق أثناء التثبيت وذاكرة الوصول العشوائي أثناء التشغيل.
إذا كان من الممكن تقليل المشكلة الأولى عن طريق فعالية Shaking Shaking (كما تفعل أحدث إصدارات Flutter) ، فستفقد هذه التطبيقات بشكل ثابت ذاكرتها الأصلية بواسطة ذاكرة الوصول العشوائي. ومع ذلك ، فإن هذه المشكلة مميزة أيضًا لأطر العمل الأخرى عبر الأنظمة الأساسية.
الواجهة الأصلية
بشكل افتراضي ، يبدو التطبيق كما هو على جميع الأنظمة الأساسية ، مما قد يخلق انزعاجًا للمستخدمين. تُستخدم السمات لحل هذه المشكلات ، لكن لا يمكنها خلق شعور بتطبيق أصلي بالكامل.
ولكن هناك ناقص أكبر - مع هذا النهج ، من الصعب للغاية استخدام عناصر واجهة خارجية تم إنشاؤها للتطبيقات الأصلية (بما في ذلك الإعلانات الأصلية المذكورة سابقًا).
الوجهة
التطبيقات العامة ، وخاصة مع واجهة تصميم.
الأطر الأساسية
رفرفة
يتم الترويج لـ Flutter بواسطة Google كإطار تطوير أساسي عبر الأنظمة الأساسية وواجهة لنظام التشغيل المستقبلي Fuscia. في حين أن الإطار صغير جدًا (في مرحلة معاينة الإصدار) وليس شائعًا جدًا ، فإنه يكتسب شعبية بسرعة. يستخدم لغة Dart (مع التحويل البرمجي إلى كود أصلي).
لديها كل إيجابيات وسلبيات الشباب - بنية معمارية مدروسة جيدًا ، مع مراعاة أخطاء سابقاتها ، ولكن نظامًا بيئيًا محدودًا إلى حد ما.
كيو تي موبايل
تحظى بشعبية بين مطوري QT سطح المكتب. يمكن استخدام JavaScript في التطوير. بدون دعم الشركات الكبيرة لا تحظى بشعبية كبيرة.
كيفي
إطار آخر غير شائع للغاية مثير للاهتمام ، في المقام الأول لأنه الإطار الوحيد في القائمة الذي يستخدم Python. بالنسبة للمطورين الذين هم على دراية بهذه اللغة فقط (وهناك العديد في بعض مجالات تكنولوجيا المعلومات) ، يمكن أن يكون هذا أمرًا بالغ الأهمية.
مواد ذات صلة
عن الذاكرة في Xamarin وأطر مماثلة
مقارنة أداء التطبيقات الأصلية ، Flutter و React Native