Hani Dabash 💻
Hani Dabash 💻

@HaniDabash

20 تغريدة 70 قراءة Feb 29, 2020
في الثريد هذا راح أتكلم عن مسيرتي في البحث عن المنصة المناسبة لمشروعي القادم في تطوير تطبيقات الجوال .. وايش الفروقات اللي عرفتها واللي تميز كل منصة تطوير عن الأخرى .. وليش بعد ما اخترت واستقريت على #ReactNative من شركة #Facebook
دخل منافس قوي وهو #Flutter من شركة #Google .
في البداية أنا فكرتي عبارة عن تطبيق سوشال ميديا بسيط .. وعشان أنشر التطبيق لأكبر عدد .. احتاج أنشره على #Android و #ios ..
أنشر على كلا النظامين يعني لازم إني أطور التطبيق مرتين .. مرة على Android بلغة الجافا أو كوتلن .. ومرة على ios بلغة swift
وهذا الأمر يحتاج عدد ويستهلك وقت
أنا ما أملك العدد ولا الوقت الكافي اللي يسمح بإني أطور على نظامين وأحل مشاكل نظامين ومع كل تحديث اشتغل على مشروعين ..
لذلك بحثت عن حلول ومع أول بحث وجدت مايسمى بـ
Cross platform app development Frameworks
وهي منصات لتطوير التطبيقات مرة واحدة ونشرها على مختلف أنظمة التشغيل
أول خيار وقعت عيني عليه هو #Xamarin
Xamarin عبارة عن framework بلغة C# وهذا الأمر ممتاز لأني متقن لهذه اللغة مسبقاً وأتحمست جداً
لكن للأسف مع بدايتي لتعلم هذا الـFramework لاحظت قد ايش هو بدائي وأقدر أقول إنه صعب شوية وراح يتطلب وقت كبير لتعلمه وكنت متأكد من وجود حلول أفضل ..
بعد القليل من البحث الإضافي والاستفسار من الزملاء في الكلية .. اكتشفت عالم من المنصات اللي تدعم التطوير المتعدد .. ولكل منصة مميزاتها واختلافاتها .. حتى انه كل منصة تختلف عن الأخرى في الأداء..
طبعاً أنا اتنقلت بين هذه المنصات وكل شوية أستقر على وحدة حتى اكتشف عيب مميت يبعدني عنها
بعد #Xamarinا اعجبت بـ #nativescript واللي كان يميز هذا الـFramework إنه له IDE خاص فيه وجميل جداً اسمه Sidekick ..
لكن العيب اللي ابعدني عنه إنه يعتبر جديد ومصادره قليلة جداً .. يعني إذا واجهت مشاكل في التطوير غالباً ماراح القى المساعدة المتوقع من مجتمعات المطورين المعروفة .
صحيح وجدت الكثير من المنصات للتطوير المتعدد .. لكن كان هناك علامة فارقة تميز الـFramework الممتاز من ناحية الأداء عن الـFramework اللي يمشي الحال ..
والعلامة الفارقة هذه هي اللي تحكم الـPerformance
هناك Frameworks أداءها جداً قريب من آداء الـNative وهناك أخرى آداءها يعتبر سيء
شرح مصطلح :-
الـ Native .. يعني :
التطوير الخام المباشر على نظام الأندرويد بلغة الجافا أو كوتلن ... أو التطوير على ios بلغة swift أو objective-c
وطبعاً هذا أفضل خيار للحصول على أفضل آداء للتطبيق ... وتكون عندنا امكانيات غير محدودة للابتكار والتطوير
من المنصات اللي ابتعدت عنها مع بداية بحثي
#ionic و #PhoneGap وأشباههم ..
هذه منصات تطور التطبيقات على مختلف الأنطمة .. وقد تكون الأسرع في التطوير ..
"لكن" .. في الحقيقة هذه المنصات تسمح لك بتطوير "صفحات ويب" بتقنيات الويب المعروفة
#HTML5 #CSS #javascript ثم تحويلها لتطبيق
وطبعاً التطبيقات اللي تصدر على هيئة "Web Page" آداءها يكون سيء وفي الحقيقة هي مجرد صفحات ويب ... تشتغل على متصقح "Browser" لكن هذا المتصفح يكون بدون أزاريره الخاصة وبدون خانة الروابط وبقية الخصائص اللي تميز المتصفحات..
والتطبيق ياخذ صلاحيات التعامل مع مصادر الجهاز لكن بشكل محدود
لذلك كنت أبحث عن الـ Frameworks اللي تجعلني أقرب للجهاز وتمنحني كافة الخصائص للأجهزة مع الـ UI الخاص لكل جهاز أو نظام ( Android - ios ) .. ويهمني انه الكود يصير له Compile على الهاردوير مباشرة ..
وكانوا المرشحين هم :
Nativescript
ReactNative
Flutter
الصورة من @academind_real
بدأت بـ NativeScript وذكرت تجربتي بالأعلى معه ...
وبعد القليل من البحث ونصائح زملائي .. تحولت بدون تردد لـ React Native وهو حسب معلوماتي المتواضعة الـFramework الأقرب آداءاً من Native ويعتبر الأكبر من ناحية الشعبية والأكثر من ناحية تعدد المصادر والمعلومات ..
يتبع ..
#ReactNative
زي ماذكرت كان قريب من المثالية اللي ابحث عنها .. وتطبيقات ضخمة من Facebook وغيرها من الشركات تم تطويرها من خلاله .. كان من عيوبه إنه التطوير فيه يتم عن طريق الـ Command Line وهذا ما اعتبره عيب قوي بالنسبة لي ..
لكن تركته لأني وجدت Framework قلبي ارتاح له اكثر
@Malo0o0o0ka طبعاً هذا بيأثر على الـPerformance
لكن مو دايماً يكون خيار سيء .. بالعكس .. في حالات قد تكون الـFrameworks اللي تعمل بهذه الطريقة هي الخيار الأنسب لنا .. يعتمد الموضوع على الفريق ومهاراته وعلى سرعة العمل وعلى كمية البيانات المتدفقة من والى التطبيق
بعد المشوار الطويل هذا .. استقريت حاليا على Flutter .. طبعاً مثل ما ذكرت سابقاً Flutter ماهو بعيد عن ReactNative من ناحية الـPerformance ويعتبر من أفضل الـFrameworks في هذا الجانب ..
ايضاً فيه الكثير من المميزات والدعم القوي من Google لهذا الـFramework اللي جعلني بلا تردد اختاره.
طبعاً Flutter يستعمل لغة برمجة اسمها Dart .. في البداية أنا تجنبت هذا الـFramework تماما .
فقط بسبب أن اللغة هذه جديدة وماعندي الوقت الكافي لتعلم لغة جديدة حالياً .. لكن بعد كذا عرفت إنه اللغة جداً سهلة وشبيهة بأغلب اللغات اللي أتقنها وهذا شجعني ..
يتبع مميزات الـFramework ..
الـFramework على الرغم من انه جديد الا انه مدعوم بقوة ومصادر تعلمه كثيرة . لدرجة أن في قنوات يوتيوب مع كل مقطع تبني تطبيق مختلف بـFlutter مباشرة .. الأمر الآخر أن Flutter يعتبر Native بحق .يعني الأكواد اللي تكتبها تشتغل مباشرة على الجهاز ماتحتاج أي وسيط مثل الـWebView تحتاج متصفح
من ميزاته الأسطورية للمطورين .. ميزة الـ Hot Reload
Flutter يسمح للمطور إنه يعدل في الكود ويشوف النتيجة مباشرة في تطبيقه من غير أي اعادة بناء للتطبيق ومن غير حتى أي عملية اغلاق وفتح للتطبيق ..
flutter.io
@MMDOH_AL_SHRARI شوف هنا .. واقرأ الردود
ايضاً من الأمور الرهيبة في Flutter إنه متوافق تماما مع الـ Firebase .. وهي مجموعة خدمات مقدمة من Google منها الـ Real Time Database .. والعديد من الخدمات الرهيبة ..

جاري تحميل الاقتراحات...