Platform Development vs. Native Mobile App
امروزه کسبوکارهای آنلاین بسیاری را میبینیم که مبتنی بر دیوایسهای هوشمندی همچون موبایل و تبلت هستند که برای توسعهٔ اپ اختصاصی خود از توسعهدهندگان و برنامهنویسان Freelancer و یا شرکتهای برنامهنویسی کمک میگیرند. برنامهریزی درست و انتخاب تکنولوژی مناسب و مد نظر قرار دادن ویژگیهای UI و UX از یک سو و همچنین میزان کارایی تکنولوژیهای انتخابی از سوی دیگر، به آنها کمک میکند تا بتوانند پروژه را با موفقیت به سرانجام برسانند.
نکتهای که امروزه در توسعهٔ اپهای موبایلی میبایست مد نظر قرار داد، انتخاب پلتفرم کدنویسی است؛ به عبارت دیگر، با ظهور پلتفرمهایی همچون Zamarin, Ionic, Phong, Titanium و غیره در مقابل پلتفرمهای Native بسیاری از صاحبین کسبوکارها بر سر دوراهی قرار میگیرند که آیا سفارش یک Hybrid app بدهند یا Native.
اینکه بخواهیم از راهکارهای Cross-platform جهت توسعه استفاده کنیم یا از راهکارهای Native، خیلی فرق میکند! در واقع، پلتفرمی که میخواهیم برای آن برنامهنویسی کنیم و همچنین زبان برنامهنویسی مورد، نظر نقش بسیار بزرگی را در حس کاربر در هنگام استفاده از اپلیکیشن خواهد داشت. برای مثال، آیا اپلیکیشن مد نظر برای کاربران سیستمعامل Android است یا iOS؟ اینکه از راهکارهای Nativeجهت توسعه استفاده شود یا از راهکارهای به اصطلاح Hybrid app یا Cross-platform، کاملاً بستگی به اهداف شرکت توسعهدهنده دارد. مهم نیست کدام روش را انتخاب میکنید، هر روش برای خود دارای نکات مثبت و منفی است که در ادامه به بررسی تکتک آنها خواهیم پرداخت.
بازار جهانی تلفن همراه – انتظار می رود که این میزان ۷۷ میلیارد دلار در سال جاری باشد – چندین تغییر عمده انجام داده است. امروزه ۹۹.۶ درصد از تمام گوشی های هوشمند در iOS یا Android اجرا می شود. شرکت ها اکنون برنامه های موبایل را به عنوان یک کانال برای بالا بردن آگاهی از برند، و نه یک کسب و کار از خودشان در نظر می گیرند. با در حال افزایش پذیرش راه حل های AI (یعنی chatbots) و پیامرسان، کارشناسان حتی شروع به پرس و جو در مورد آینده تلفن همراه می کنند! در میان اختلافات و هرج و مرج، استدلال توسعه تلفن همراه “Native versus cross” داغتر از همیشه است.
آیا شرکت شما در یک نرم افزار Native سرمایه گذاری می کند یا با یک پلت فرم cross؟ پائول واشکو، رئیس بخش توسعه iOS در آزمایشگاه R-Style، تفاوت های کلیدی بین نرم افزارهای متقاطع و برنامه های Native را برجسته می کند و توضیح می دهد که چرا Hybrid app مکن است تصمیم خوبی نباشد.
آشنایی با برنامهنویسی Cross-platform
اپلیکیشنهای کراسپلتفرم با یک سورسکد تولید میشوند و بعداً برای اینکه بر روی پلتفرمهای مختلفی اجرا شوند، تغییراتی بر روی سورسکد اصلی صورت میگیرد تا به صورت کامل برای پلتفرم هدف بهینه شود. اپلیکیشنهای Cross-platform یک راهکار همهجانبه برای اجرای یک اپلیکیشن بر روی چندین پلتفرم هستند و نیاز به توضیح نیست که امروزه این راهکار نزد برنامهنویسان از یک سو و همچنین در نظر صاحبین کسبوکارهای آنلاین از سوی دیگر از محبوبیت خاصی برخوردار شده است زیرا باعث صرفهجویی در وقت و هزینه میشود.
مزایای برنامهنویسی Cross-platform :
به طور کلی، از مزایای برنامهنویسی کراسپلتفرم میتوان به موارد زیر اشاره کرد:
صرفهجویی در زمان: برخلاف برنامهنویسی Native، برنامهنویسی Cross-platform یا hybrid با یک Source code بر روی چندین پلتفرم اجرا میشود، که همین باعث میشود تا شرکتهای برنامهنویسی مجبور به تغییرات و یا حتی از اول نوشتن کد برای یک پلتفرم خاص نشوند.
تفاوت های کلیدی Platform Development vs. Native Mobile App :
یک برنامه تلفن همراه Native یک برنامه کاربردی است که با استفاده از SDK خود (و همچنین حافظه سخت افزاری، دنده و دیگر برنامه های نصب شده روی یک دستگاه) مورد نیاز سیستم عامل خاص را برآورده می کند.
دو نوع برنامه های کاربردی تلفن همراه symmetric وجود دارد:
· برنامه های Native Cross Platformسیستم عامل SDK و پشته اصلی فناوری (Java for Android و Objective-C / Swift برای توسعه برنامه iOS) است. با این حال، یک فروشنده با تجربه همراه، می تواند API یکپارچه را در بالای یک کیت توسعه نرم افزاری Native ایجاد کند و از هر کدام از برنامه های iOS برای iOS استفاده کند. برنامه های Native متقابل پلت فرم در درجه اول با Xamarin و Appcelerator تیتانیوم ساخته شده است.
برنامه های ترکیبی HTML5 اگر چه برنامه های تلفن همراه برای گوشی های هوشمند و رایانه های لوحی طراحی شده اند، این سرویس دهنده های باطن (یا به صورت پیش فرض یا مبتنی بر Cloud) هستند که منطق برنامه را مدیریت می کنند. از آنجایی که هر دو SDK های iOS و Android دارای اجزای پیشرفته وب هستند، مهندسان نرم افزار ماهر اغلب از WebView برای ایجاد بخش هایی از GUI برنامه (رابط کاربری گرافیکی) با HTML5، CSS و جاوا اسکریپت استفاده می کنند. چارچوب توسعه ی برنامه ی ترکیبی Apache Cordova (که قبلا PhoneGap نامیده می شود) است.
ابزارهای پیشرفته توسعه نرم افزار موبایل Cross Platform :
Apache Cordova، Xamarin و Unity به ترتیب ۷۰٪ از کل ابزار بازار توسعه نرم افزار متقابل پلت فرم را تشکیل می دهند.
آپاچی کوردوا. ویژگی های فناوری Apache Cordova شامل HTML5، CSS3 و JavaScript است. چارچوب توسعه برنامه تلفن همراه، امکان دسترسی به شتاب سنج داخلی، ذخیره فایل، GPS، اطلاعات تماس، رسانه ها و اعلان ها را فراهم می کند. Apache Cordova دارای مزایای متعددی از قبیل یک API نسبتا ساده و امکان استفاده از هر چارچوب JS است. با این حال، این پلت فرم یک رابط کاربر برنامه را از طریق یک مرورگر وب (که ممکن است باعث عقب ماندگی) شود، تجسم می کند. همچنین، برخی از پلاگین های Cordova دارای تاریخ هستند، بنابراین توسعه دهندگان اغلب مجبور به نوشتن سفارشی از ابتدا؛
زامارین Xamarin ساخته شده با #C و .Net، اجازه می دهد تا توسعه دهندگان مجددا از کد استفاده کرده و روند ساخت پوسته های پویا را در iOS ساده می کنند. با این حال، برخی از اجزای UI را نمی توان در MonoTouch و MonoDroid اجرا کرد، زیرا آنها بر ویژگی های خاص اندروید / iOS تکیه می کنند؛
Unity یک موتور پیشرفته توسعه برنامه های موبایل است که به مهندسان نرم افزار اجازه می دهد تا برنامه های با کیفیت بالا ۲D / 3D (بیشتر بازی ها) را برای سیستم عامل های مختلف از جمله ویندوز، iOS، Android و Xbox بسازند. Unity (همراه موتور Unreal) یکی از بهترین ابزار برای ارائه محتوای ۳D محسوب می شود. راه حل دارای بسیاری از پلاگین های رایگان برای استفاده است و از توسعه سایهدرهای سفارشی پشتیبانی می کند. با این حال، Unity دارای منحنی یابی شیب دار است و کامپایلرهای آن برای پردازنده های ARM بهینه نیستند.
طبق گفته پائول، محبوبیت برنامه های کاربردی موبایل Cross Platform می تواند به تقاضای رو به رشد برای برنامه های کاربردی تلفن همراه سازنده (که به زودی ۵۰۰٪ ظرفیت موجود در انحصار خود را از دست خواهد داد) و روند نابود کردن دستگاه خود (از طریق ۲۰۱۷، نیمی از کارفرمایان به کارکنان نیاز دارند که از ابزارهای خود برای اهداف کاری استفاده کنند).
هنگامی که استفاده از منابع کارآمد و زمان کوتاهتر برای استقرار بیش از UX، عبور از پلت فرم معقول است.
مزایا و معایب توسعه نرم افزار موبایل Cross Platform :
مزایای استفاده از یک نرم افزار Cross Platform عبارتند از:
· وقت کمتری با توجه به اینکه پشته فناوری مناسب را انتخاب می کنید و پروژه خود را به طور کامل برنامه ریزی می کنید، فروشنده شما قادر خواهد بود تا تا ۸۰٪ از کد اصلی را دوباره استفاده کنید؛
هزینه بهره وری ساخت یک برنامه موبایل بومی به شما حداقل ۱۰ هزار دلار هزینه می دهد – و در مورد کلون Clash of Clans در اینجا صحبت نمی کنید. هزینه دو برابر (iOS و اندروید) را افزایش دهید و ۳۰٪ اضافه کنید (Android dev گران تر است) و هزینه تقریبی راه اندازی یک برنامه در فروشگاه App و Google Play را دریافت خواهید کرد؛
قرار گرفتن در معرض تعداد بیشتری از کاربران. بیشتر برنامه های متقابل پلت فرم در هر دو Android و iOS (و همچنین ویندوز، لینوکس، Tizen و حتی Symbian) اجرا می شوند؛
· به روز رسانی هماهنگ سازی. در جهان که ناشران موفق برنامه روزانه ۴ بار در ماه گسترش می یابند، هزینه های نگهداری می تواند بخش بزرگی از درآمد کل برنامه را به دست بیاورد – و این بدان معنی است که توسعه متقابل پلتفرم برنده می شود.
و در اینجا جایی است که برنامه های کاربردی مستقل پلتفرم شکست می خورند:
· مسائل مربوط به عملکرد قدرت محاسباتی گوشی های هوشمند نسبتا کوچک است. ارائه کامپوننت های سنگین HTML5 / CSS UI، از سوی دیگر، مقدار زیادی از منابع گرافیکی / CPU را دریافت می کند و ممکن است زمان پاسخ برنامه را افزایش دهد؛
· مسائل UX ملاقات هر دو سیستم عامل UX نیاز می تواند یک چالش باشد. apple به ویژه در مورد دستورالعمل های رابط انسان خود متشکل است و وب سایت های تلفن همراه را که در ظروف مرسوم بسته شده اند، قطع می کند. با این حال، این اشکالات و طراحی رابط کاربر ضعیف است که ۲۰ درصد از تمام بازخورد فروشگاه App را تشکیل می دهند؛ اگر به یک شرکت توسعه دهنده تلفن همراه قابل اعتماد رسیدید، برنامه HTML5 شما احتمالا نور سبز را دریافت خواهد کرد.
معایب برنامهنویسی Cross-platform
همچون روش Native ، برنامهنویسی کراسپلتفرم هم دارای معایب خاص خود است که در ادامه به برخی از مهمترین آنها اشارهای خواهیم داشت:
کاهش سرعت اجرا: اپلیکیشنهای کراسپلتفرم نمیتوانند همچون کد Native نوشته شده با آن پلتفرم یکپارچه شده و بدون مشکل کار کنند! به این علت که کد کراسپلتفرم نمیتواند مستقیماً با سیستمعامل دیوایس مورد استفاده در تعامل باشد، در نتیجه ممکن است در خلاء نبود دسترسی مستقیم به سختافزار، دیوایس دچار leg شده و یا حتی هنگ شود!
عدم امکان یکپارچه شدن با دستگاه کاربر: اپلیکیشنهایی که به این صورت نوشته شدهاند نمیتوانند با تنظیماتی که کاربر بر روی دستگاهش انجام داده است یکپارچه شوند و در نتیجه کاربر با یک اپلیکیشن که نمیتواند از تمام ویژگیهای دستگاهش استفاده کند رها میشود که همین مسئله منجر به صدمه زدن به یوایکس میشود.
آشنایی با برنامهنویسی Native
APP های Native هر پلتفرم به وسیلهٔ زبان مخصوص آن پلتفرم ساخته میشوند؛ برای سیستمعامل Android زبان محبوب Java یا کاتلین استفاده میشود، برای Windows زبانهای #C و VB.NET استفاده میشود و برای برنامهنویسی iOS از زبانهای Swift یا Objective-C استفاده میشود (توصیه میکنیم برای کسب اطلاعات بیشتر در ارتباط با توسعهٔ اپهای اندروید با استفاده از زبان C ++، به مقالهٔ مزیتهای اپ اندروید نویسی با ++C نسبت به Java چیست؟ مراجعه نمایید.) این نوع اپلیکیشنها از صفر با هدف اینکه فقط بر روی پلتفرم مورد نظرشان اجرا شوند کدنویسی میشوند.
مزایای برنامهنویسی Native
برنامهنویسی Native مزایای بسیاری دارا است که در ادامه به مهمترین آنها اشارهای خواهیم کرد: رابط کاربری: همانطور که کارایی اپلیکیشن مهم است، ظاهر اپلیکیشن و همچنین احساسی که کاربر هنگام کار کردن با آن دارد نیز نقش بسزایی در موفقیت آن اپلیکیشن خواهد داشت. به این دلیل که در برنامهنویسی Native از امکانات برنامهنویسی توسعه داده شده برای آن پلتفرم استفاده میشود، ظاهر یا همان User Interface برنامهٔ ساخته شده، ظاهری آشنا برای کاربر است و همین مورد میتواند باعث موفقیت آن اپلیکیشن در میان کاربران شود.
پرفورمنس: علاوه بر ظاهر، برنامهنویسی Native برای زمانی که کارهای زیادی بر روی اطلاعات باید صورت گیرد و یا حجم زیادی از تصاویر یا ویدیوها مورد پردازش قرار گیرند، مناسبتر است. عموماً برنامههایی که به صورت نیتیو نوشته شدهاند به دلیل آنکه مستقیماً با سیستمعامل در ارتباط هستند و میتوانند با امکانات منحصربهفرد ساخته شده برای آن پلتفرم کار کنند، در هنگام اجرا یاleg ندارند یا leg های بسیار کمی دارند و همین مسئله منجر به ایجاد UX بهتری خواهد شد.
علاوه بر این، استفاده کردن از کدنویسی Native برای برنامههایی که ساختار پیچیدهای دارند، احتمال کرش کردن برنامه را به حداقل میرساند به این دلیل که به طور خاص برای یک پلتفرم توسعه داده شده است.
موقعیت بهتر در بین کاربران: معمولاً اپلیکیشنهایی که به صورت Nativeتوسعه داده شدهاند در مارکتها بهتر دیده میشوند؛ زیرا کاربران به علت بالاتر بودن کارایی و سرعت و کاربرپسندتر بودن، اینگونه اپلیکیشنها را بیشتر به دیگر دوستانشان پیشنهاد میدهند و به اشتراک میگذارند و هنگام کار با این نوع اپلیکیشنها احساس رضایت بیشتری دارند.
یکپارچگی بیشتر با پلتفرم: اپلیکیشنهایی که به صورت Native کدنویسی شدهاند بر روی پلتفرم هدف بدون هیچ مشکلی کار میکنند؛ این امکان باعث میشود که بتوان شخصیسازیهای بیشتری را برای اینکه کاربر حس کند اپلیکیشن یکپارچگی بیشتری با وسیلهٔ هوشمندش دارد، انجام داد.
معایب برنامهنویسی Native
همانطور که در بالا مشاهده شده، برنامهنویسی Native از مزایای قابلتوجه بسیاری برخوردار است اما هرگز فراموش نکنیم هر روشی که به کار گیریم، علاوه بر نقاط قوت، از یکسری نقطهضعفها نیز برخوردار است که در ادامه به برخی از مهمترین آنها اشاره خواهیم کرد:
- زمانبر بودن : اینکه بخواهیم اپلیکیشن مورد نظرمان را بر روی پلتفرمهای مختلف به صورت Native پیادهسازی کنیم، به صورت چشمگیری پروسهٔ برنامهنویسی افزایش پیدا خواهد کرد. ممکن است کد مشابه برای پلتفرمهای مختلف قابل استفاده نباشد و نیاز باشد تا برنامهنویس زمان بیشتری را برای تبدیل کد به پلتفرم هدف صرف نماید یا حتی کد مورد نظر را بازنویسی کند.
- نیاز به برنامهنویسان حرفهای بیشتری وجود دارد: برای اینکه یک شرکت کد خود را بر روی چند پلتفرم به صورت Native پیادهسازی کند، نیاز است تا برنامهنویسان حرفهای که در حوزهٔ خاصی تخصص دارند را برای انجام پروژه استخدام کند؛ بسته به پلتفرمی که هدف شرکت است، حداقل به ۲ برنامهنویس نیاز است. برای مثال، برنامهنویسی که وظیفهٔ توسعه بر روی پلتفرم Android را بر عهده دارد و برنامهنویس دیگر وظیفه توسعهٔ اپلیکیشن بر روی پلتفرم iOS.
- گرانتر تمام شدن : هزینهای که لازم است تا شرکت صرف حقوق برنامهنویسان کند × مدت زمانی که پروسهٔ برنامهنویسی طول میکشد، ممکن است هزینه را به ۲ تا ۳ برابر روش هیبریدی افزایش دهد که مسلماً این اختلاف هزینهٔ نسبتاً قابلتوجه برای کارفرما خیلی توجیهپذیر نخواهد بود.
- مقرون به صرفه بودن: کسبوکارها میتوانند هزینهها را کاهش دهند و برنامهنویسان کمتری را به ازای هر پروژه به خدمت گیرند؛ همچنین میتوانند کد را یکبار بنویسند و بر روی چندین پلتفرم اجرایش کنند. این راهکار میتواند منجر به افزایش سرعت پروسهٔ توسعه و همچنین کارآمدتر شدن پروسهٔ توسعه APP شود
- بیشینه شدن سود: جدا از کاهش هزینههای تولید اپلیکیشن، برنامهنویسی Cross-Platform از طریق ارائه اپلیکیشن بر روی مارکت چندین پلتفرم میتواند به بیشترین سود حاصل از فروش اپلیکیشن برسد.
- سادهتر بودن بهروزرسانی و شروع به اجرای پروژه: استارت اولیه، همچنین بهروزرسانیهای بعدی و تغییراتی که در اپلیکیشن ایجاد میشوند، میتواند به صورت همزمان بر روی چندین پلتفرم اعمال شود.
۱ دیدگاه