تطبيقات الموبايل الأصلية باستعمال NativeScript

تعرف على منصة NativeScript لتطوير تطبيقات الهواتف الذكية

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

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

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

هنا يجد المطورون أنفسهم أمام  مفترق طرق يوجب عليهم اتخاذ القرار في أي من النظامين سيتخصص، هل في أندرويد المدعومة تطبيقاته بلغة البرمجة جافا أم في نظام iOS الذي تطور تطبيقاته إما بلغة objective-c أو بلغة swift التي طورتها آبل مؤخرا لكي تكون هي وريث objective-c في برمجة تطبيقات الأجهزة التابعة لشركة آبل (macOS, iOS, watchOS, tvOS).

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

أباتشي كوردوفا Apache Cordova

أول محاولة ناجحة كانت تطوير منصة Phonegap، وسميت فيما بعد أباتشي كوردوفا، وتمكننا من برمجة تطبيقات موبايل هجينة تعمل على جميع المنصات انطلاقا من اللغات التي اعتدنا العمل بها في الويب : جافاسكريبت، CSS وHTML.

أباتشي كوردوفا أداة رائعة ومحاولة أكثر من ممتازة، ولكن تعتريها عدد من النواقص لعل أهمها أنها تستعمل ال WebView الخاص بالجهاز ويمكن تصور ال WebView على أنه متصفح مدمج بالجهاز وفيه يتم تنفيذ أكواد الجافاسكريبت و CSS وHTML التي كتبناها، وكما تعرفون فالمتصفحات لا تعمل كلها بالشكل المتوقع فكل متصفح له دعمه الخاص لعدد من العناصر والواجهات APIs في الجافاسكريبت كما أنك مثلا قد تطور تطبيقات بواسطة كوردوفا وتجده يعمل كما هو متوقع في الأجهزة التي تعمل بنسخ حديثة من أندرويد بينما تجده على عكس المنتظر في نسخ أقدم، كل نسخة أندرويد جديدة تأتي بنظام WebView أحدث ويدعم عناصر وأشياء جديدة لا يدعمها النظام القديم.

هناك عدد من الأدوات، مثل إضافة Crosswalk، تم تطويرها لتجاوز هذا المشكل ونجحت في ذلك ولكنها جاء بإشكاليات أخرى مثل تسببها في زيادة حجم التطبيق بشكل ملحوظ.

استعمال ال WebView كذلك يعني أنه لا يمكننا العمل بالواجهات الرسومية الأصلية Native UI لكل نظام، حتى ولو جاءت عدد من إطارات العمل مثل Ionic، Sencha Touch لمنح مطوري كوردوفا واجهات رسومية أقرب إلى الأصلية ولكنها تظل مجرد CSS وHTML ولن تكون في مستوى الإحساس Feeling الذي نشعر به عند استخدام واجهات المستخدم الأصلية.

تطبيقات الموبايل الأصلية مع NativeScript

بعد كل تلك الآثار الجانبية التي ظهرت مع منصة أباتشي كوردوفا، واصل مطورو الجافاسكريبت اجتهادهم لإيجاد أكثر الحلول نجاعة حتى توصل مطورو شركة Telerik (هل تعرفها ؟ :)) لحل يمكنهم من برمجة تطبيقات موبايل أصلية سموه NativeScript.

منصة NativeScript تمنحنا فرصة برمجة تطبيقات أصلية باستعمال لغة الجافاسكريبت و جزء من ال CSS (ليس كل ال CSS) والأمر الجديد أنها عوضت استعمال أكواد ال HTML بأكواد XML لإنشاء واجهات رسومية UI أصلية.
فلسفة NativeScript هي برمجة التطبيق مرة واحدة ويعمل على مختلف المنصات Cross-platform app (أندرويد و iOS لحدود الساعة). وبنيت هذه المنصة على محركي الجافاسكريبت V8 و JavaScriptCore للتعامل مع اللغات الأصلية لكل نظام على حدة ( جافا بالنسبة لأندرويد و objective-c بالنسبة ل iOS).

 

تطبيقات الموبايل الأصلية مع NativeScript

 

المثال أعلاه يوضح كيف أنه استطعنا استخدام كائنات جافا Java Objects داخل الجافاسكريبت وكأننا مزجنا بين اللغتين. تم هذا بفضل واجهة جافا الأصلية Java Native Interface التي تعد بمثابة جسر Bridge يمكن كائنات الجافا من المرور للضفة الأخرى عند C++ ومعروف بأن محرك V8 تم بناؤه بلغة البرمجة C++.

بينما في حالة تطبيقات iOS فإنه لا نحتاج لهذا الجسر لأنه يمكن ل C++ الإستدعاء المباشر للواجهات الأصلية Native APIs ل objective-c افتراضيا.

هذه التفاصيل معقدة نوعا ولكن فقط ما يجب معرفته هو أن NativeScript يعتمد على محركات الجافاسكريبت JavaScript Engines والتعديل عليها من أجل الوصول للواجهات الأصلية لأنظمة المحمول التي يدعمها.

هذه التقنية نفسها استخدمها Nodejs للتعديل على محرك الجافاسكريبت V8 وإضافة ميزات وواجهات جديدة له.

وإذا كنت راغبا في الحصول على مزيد من التفاصيل حول كيفية عمل NativeScript، قم بزيارة هذا الرابط.

الشيء الجميل أنه يمكننا استخدام إطار العمل الشهير Angular 2 مع منصة NativeScript وهذا افتراضيا، أي أنك لن تبدل أي مجهود في محاولة الدمج بين التقنيتين. هذا سيسهل علينا العديد من المهام التي جاء Angular لتبسيطها.

المثال التالي لكيفية الحصول على نسخة تطبيق معين باستخدام NativeScript :

ثلاثة أسطر للحصول على نسخة التطبيق على جميع المنصات، أليس هذا رائعا ؟

لاحظ ماذا عليك فعله لكي تحصل على نفس النتيجة على أندرويد باستعمال جافا :

وعلى iOS باستخدام لغة البرمجة objective-c :

المهمة أصعب مما كانت عليه مع NativeScript، وهذا مجرد مثال صغير لإيجابيات هذه المنصة.

خاتمة

هذا باختصار خلاصة المجهود الذي قام به مطورو الجافاسكريبت حتى الآن لبرمجة تطبيقات موبايل أصلية باستخدام تقنيات الويب المعتادة. NativeScript يبدو خيارا يستحق التجربة وقد ظهر من بعده منافس آخر بنفس الفكرة وبلفلسفة مختلفة : إنه React Native الذي تقف خلفه شركة Facebook العملاقة ويعتمد على مكتبة React.js في كتابة وترتيب أكواد الجافاسكريبت. قد نقوم في قادم الأيام بكتابة مقال حول الفلسفة التي جاء بها React Native وأوجه الإختلاف بينه وبين NativeScript.

إلى ذلك الحين لا تترددوا في إبداء آرائكم حول الموضوع في صندوق التعليقات، كما سنكون دائما سعداء بالإجابة على استفساراتكم وأسئلتكم.


المراجع :

8 تعليقات

  1. انا احاول جاهدا من عدة ايام الوصول الى الوسيلة الأفضل لتنفيذ تطبيق Cross-platform app لآحد العملاء الذى قمت بتطوير موقع شركته وطبي منى تطبيق الموبيل بشروط بسيطة جدا ووعدتة بالتنفيذ نظرا لسهولة التطبيق المطلوب فهو يحتاج فقط الى واجهة بسيطة تجلب أخر المقالات المنشورة بموقع الشركة عن طريق Rss وتنشر عبارة عن عنوان وصورة وجزء من المحتوى فقط لاغير ولم اجد حتى الان الوسيلة المناسبة جربت اكتر من طريقة وفى كل طريقة تقابلنى مشكلة اما مشاكل فى اصدارات البرامج او نفص فى معرفتى بلغة برمجية ما واتمنى ان تفيدنى بأى طريقة أستطيع بها انجاز هذا العمل والانتهاء منه لانه اصبح يمثل لى امر اشبه بالكابوس وجزاك الله كل خير
    وان كنت تعرف اى طريقة تتكلف مقابل مادى اتمنى ان تدلنى واكون شاكر جداا لتعاونك

    • أخي الكريم محمد،
      في حالتك، أعتقد أن إطار العمل Ionic الذي يستخدم منصة Apache Cordova هو أفضل وسيلة للقيام ببرمجة تطبيقك بسرعة وعلى أحسن وجه. فقط عليك الإلمام قليلا بمكتبة Angularjs وبعدها ستجد الطريق مفروشة بالورود لتنفيذ مشروعك بكل سهولة.
      وأنا في الخدمة لو احتجت لأي مساعدة.

  2. السلام عليكم
    لو سمحت أخي عيسى واجهتني مشكلة اثناء تنصيب nativescript with angular2
    عند الانتهاء من التنصيب وتنفيذ الامر tns doctor للتاكد من اكتمال التنصيب
    يعطيني رسالة وجود خطأ ب android sdk بالرغم من أني قد نصيت آخر نسخة من android sdk 24
    نص رسالة الخطأ:

    Cannot find a compatible Android SDK for compilation. To be able to build for An
    droid, install Android SDK 22 or later.
    Run $ android to manage your Android SDK versions.

    You need to have Android SDK 22 or later and the latest Android Support Reposito
    ry installed on your system.
    Run $ android to manage the Android Support Repository.

  3. أ.عيسى
    انا لدي مشروع تطوعي
    باختصار هو شبكة اجتماعية يضم عدد من المستخدمين يتشاركون فيه بعض الاستشارات ويتلقون بعض الردود على مشاكلهم ،ومن خلال التطبيق بامكانهم الادمن نشر بعض الايفنت حتى يراها المستخدمين الاخرين
    انا استخدمت
    Intel xdk that comiled app on cordova platform
    وقاربت قريبا على الانتهاء
    ولكني عندما قرأت مدونتك عن الnativescript و react native
    وعن عيوب ال web view انتابني بعض التردد
    هل انا اخترت البيئة التي من الممكن ان تواجهني من خلالها مشاكل مستقبلا

    • لكل بيئة مميزات ونقاط ضعف،
      قد يكون لكوردوفا نقاط ضعف وسبق وأشرنا لبعض منها في مقالاتنا السابقة، ولكن هذا لا يمنع من كونها تتمتع بنقاط قوة كثيرة.
      الأداة التي ذكرتها (Intel XDK) لم يسبق لي أن عملت عليها بكل صراحة ولكن بما أنها تعتمد على بيئة كوردوفا فإن كل ما قيل عن كوردوفا سيقال عنها كذلك.
      مشروعك لا يمكن الحكم عليه بالنجاح أو الفشل فقط من خلال التقنية التي تستعملينها، بل يتعلق الأمر أكثر بمدى فهمك وإتقانك لهذه التقنية حتى تستفيدي من جميع نقاط قوتها.
      عدد كبير ومحترم من التطبيقات مدعومة من كوردوفا وبعض منها فاق عدد تحميلاته المليون! فقط ركزي على عملك الذي بدأته وحاولي الذهاب بعيدا في التقنية التي اخترتها وبالتأكيد لن تندمي في النهاية إن شاء الله.
      بالتوفيق

ترك الرد

Please enter your comment!
Please enter your name here