پیش از این در مقالهای تحت عنوان برنامهنویسی نیتیو یا کراسپلتفرم به بررسی تفاوتها، مزایا و معایب هر کدام از این دو رویکرد کدنویسی اپلیکیشنهای موبایل پرداختیم. حال در این مقاله قصد داریم به مقایسهٔ پلتفرمهای Titanium ،PhoneGap و Xamarin برای ساخت اپهای هیبریدی بپردازیم.
PhoneGap
PhoneGap یا همان Apache Cordova، یکی از محبوبترین پلتفرمهای توسعهٔ اپلیکیشنهای هیبریدی یا کراسپلتفرم است؛ برنامهنویسان میتوانند با استفاده از زبانهای رایج برای توسعهٔ وب که عبارتند از CSS ،HTML5 و JavaScript، اقدام به ایجاد اپلیکیشن برای موبایل نمایند. به طور کلی، از جمله مزایای استفاده از این پلتفرم هیبریدی میتوان به موارد زیر اشاره کرد:
استفاده از زبانهای برنامهنویسی آشنا: به علت آنکه فونگپ از زبانهای برنامهنویسی شناخته شدهای همچون CSS ،HTML5 و JavaScript استفاده میکند، برنامهنویسان میتوانند به صورت سریع شروع به برنامهنویسی کنند. این ویژگی باعث میشود تا برنامهنویسان نیاز به آموزشهای کمتری برای استفاده از این فریمورک داشته باشند و همچنین باعث میشود تا کسبوکارها سریعتر بتوانند محصول مورد نظر خود را به بازار عرضه کنند.
- معماری پلاگینها: فونگپ دارای یک معماری منعطف برای پلاگینها است که به برنامهنویس این امکان را میدهد تا بتواند از یکسری API نیتیو دیوایس به صورت یک ماژول استفاده کند.
- هزینهای برای لایسنس ندارد: فونگپ یک پروژهٔ #اپنسورس است و استفاده از آن آزاد و رایگان است؛ بنابراین نیازی نیست کسبوکارهایی که میخواهند از آن استفاده کنند، هزینهای از این بابت بپردازند.
- لایبرریهای زیادی: برنامهنویسان میتوانند به سادگی به حجم انبوهی از لایبرریهایی که برای این فریمورک نوشته شده دسترسی پیدا کرده و از آنها برای بهبود کارایی پروژهٔشان استفاده کنند.
- علیرغم محبوب بودن و قدیمی بودن، این پلتفرم هیبریدی دارای یکسری نقاط ضعف نیز هست که مهمترین آنها عبارتند از:
- سرعت: معمولاً مشکل سرعت در این فریمورک مورد نقد است. در واقع، مشکل زمانی پیش میآید که نیاز باشد اجزاء گرافیکی زیاد یا اجزاء پیچیدهای در معماری اپلیکیشن وجود داشته باشد که این مورد باعث میشود اپلیکیشن به خوبی پاسخگو نباشد یا حتی کِرَش کند!
- پلاگینها: برنامهنویسانی که تصمیم گرفتهاند تا از فونگپ برای توسعهٔ اپلیکیشنشان استفاده کنند بایستی این نکته را مد نظر داشته باشند که فونگپ یک فریمورک منعطف است؛ معماری آن به برنامهنویسان این امکان را میدهد تا از پلاگینهایی که مورد نیازشان است استفاده کنند یا اگر توانایی آن را دارند، خودشان پلاگین مورد نظرشان را بنویسند اما اگر برنامهنویسی نتوانست پلاگینی که لازم دارد را پیدا کند یا آن را بنویسد، ممکن است پروسهٔ توسعهٔ اپلیکیشن با تأخیر مواجه شود.
- فقدان مستندات: این فریمورک از مستندات خوب و قوی برای راهنمایی برنامهنویسان برخوردار نیست! همچنین مستندات موجود نیز شامل یکسری اصطلاحاً Best Practice برای بهبود اپلیکیشن کراسپلتفرم نیست.
- اتلاف حافظه: فونگپ توانایی مدیریت حافظهٔ اصلی و حافظهٔ کَش را ندارد؛ به همین دلیل معمولاً اپلیکیشنهایی که با این فریمورک توسعه داده میشوند، با مشکلات حافظهای مواجه میشوند.
Titanium
Titanium یک پلتفرم اپنسورس جهت توسعهٔ اپلیکیشنهای دسکتاپ، نِیتیو و کراسپلتفرم است. تاکنون بیش از 35000 اپلیکیشن توسط این پلتفرم توسعه داده شده است. زبانهای برنامهنویسی که در این پلتفرم مورد استفاده قرار میگیرند، زبانهای CSS ،HTML5 و JavaScript و همچنین لایبرری jQuery است. تیتانیوم نیز همچون سایر پلتفرمها از مزایای بسیاری برخوردار است که از جملهٔ مهمترین آنها میتوان به موارد زیر اشاره کرد:
- بهرهگیری از زبانهای برنامهنویسی آشنا: تیتانیوم از زبانهای برنامهنویسی که شناختهشده هستند استفاده میکند که باعث میشود برنامهنویسان به سرعت با این پلتفرم آشنا شده و شروع به کدنویسی کنند.
- دسترسی به امکانات پیشرفته: Titanium API بدون وابستگی به نوع دیوایس و بدون نیاز به Firmware سختافزارهایی همچون دوربین، میکروفن، تاچ اسکرین و جیپیاس، امکان دسترسی به این سختافزارها را برای دولوپر فراهم میآورد. این ویژگی باعث میشود که کاربر احساس کند اپلیکیشن با دیوایسشان یکپارچگی کاملی دارد و باعث بهبود #تجربهٔ کاربری (UX) شود.
- بازخورد فوری: پلتفرم تیتانیوم باعث میشود تا پروسهٔ برنامهنویسی کاهش یابد زیرا برنامهنویسانی که از این پلتفرم استفاده میکنند، کد کمتری میزنند! این ویژگی به برنامهنویسان این امکان را میدهد که یک نسخهٔ پروتوتایپ را به مشتری نشان داده و بازخورد وی را از کار کردن با اپلیکیشن به صورت فوری دریافت کنند.
- جامعه توسعهدهندگان بزرگ: تیتانیوم متشکل از یک جامعهٔ تقریباً 200000 نفری است که به برنامهنویس این امکان را میدهد تا به Open Mobile Marketplace این پلتفرم دسترسی پیدا کرده و بتواند ماژولها، قالبها، نمونهها و افزونههای موجود را بخرد یا افزونه خود را به اشتراک گذاشته یا بفروشد.
- اما برسیم به نقاط ضعف پلتفرم تیتانیوم! به طور کلی، پیچیدگی سورسکد، عدم انعطافپذیری و بیثباتی از جملهٔ مهمترین نقاط ضعف تیتانیوم است که در ادامه به تفصیل مواردی از این دست و همچنین موارد دیگر را مورد بررسی قرار خواهیم داد:
- افزایش پیچیدگی: مادامی که پیچیدگی اپلیکیشن افزایش مییابد، هزینه هم افزایش مییابد. اغلب مواقع، برنامهنویسان خود را در حال دستوپنجه نرم کردن با مسائل فنی میبینند. برای مثال، کرش کردن و باگهای موجود، دردسرهای مدیریت سورسکد و مدیریت مالتیپلتفرم بودن کد، به پیچیدگیهای این پلتفرم افزودهاند.
- محدودیت در انعطاف: با وجود اینکه اپلیکیشنهای نوشته شده با تیتانیوم برای آنکه از قابلیتهای خاصی بهرهمند شوند نیاز به خطوط کد کمتری دارند، اما محدودیتهای موجود در آنها باعث میشود که برنامههای پیچیده با مشکل مواجه شوند. این محدودیتها میتوانند باعث تأخیر و مشکلاتی از این قبیل برای اپلیکیشن شوند.
- ویژگیهای ناپایدار: ماژول StoreKit ویژگی پرداخت درونبرنامهای را فراهم میکند اما این ماژول دارای باگهای بسیاری است و همیشه درست کار نمیکند. نسخهٔ رایگان این ماژول باعث ایجاد تغییرات اساسی در استراتژیهای قیمت تیتانیوم شده است اما نسخهٔ رایگان اپلیکیشن که توسط کاربر دانلود میشود، برای اینکه پرداخت درونبرنامهای انجام دهد، شدیداً ناپایدار است و بعضی مواقع پرداخت درونبرنامهای به درستی کار نمیکند. این ناپایداری باعث میشود که نتوانید آن مقداری که انتظار دارید، از اپلیکیشن خود درآمد کسب کنید.
مشکلات موجود در جعبه ابزار: برنامهنویسان زیادی اعلام کردهاند که پیچیدگی یادگیری برنامهنویسی با تیتانیوم از زمانی که IDE آن یعنی Titanium Studio معرفی شد، بیشتر شده است! Titanium Studio یک IDE مبتنی بر Eclipse است که بر روی یک نسخهٔ کاستومایز شده از Aptana پیادهسازی شده است و به کاربر این امکان را میدهد تا برنامهٔ خود را بر روی شبیهساز اجرا کند و راحتتر بتواند پروژهٔ خود را مدیریت نماید. تیتانیوم استودیو مشهور به مشکلات عمدهای است (البته بیشتر آن مشکلاتی که باعث میشود پروسهٔ بیلد شدن، تغییرات جدید را نادیده بگیرد). این مشکلات باعث میشوند تا برنامهنویسان مجبور شوند به طور مداوم پروژهٔ خود را پس از هر تغییری که ایجاد میکنند، اصطلاحاً Clean کنند یا کلاً از اول با یک پروژهٔ جدید کار را شروع کنند.
Xamarin
از زمان شروع به کار این فریمورک در سال 2011، زامارین به صورت گستردهای در توسعهٔ اپلیکیشنهای کراسپلتفرم مورد استفاده قرار میگیرد. برنامهنویسان میتوانند از طریق API نوشته شده برای Xamarin، به صورت نیتیو به سختافزارهای دیوایس همچون دوربین و جیپیاس سیستمعاملهای آیاواس، اندروید و ویندوز فون دسترسی پیدا کنند (در حال حاضر، زامارین اپنسورس است.). از جمله مزایای این پلتفرم توسعه داده شده توسط مایکروسافت، میتوان به موارد زیر اشاره کرد:
- یکبار کد بنویسید و در همهٔ پلتفرمها اجرا کنید: زامارین از ترکیب #C و NET. برای ساخت اپلیکیشنهای مالتیپلتفرم استفاده میکند. روی هم رفته، میتوان گفت که برنامهنویسان میتوانند درصد قابلتوجهی از کد نوشته شدهٔ خود را مجدداً مورد استفاده قرار دهند و این نکته باعث افزایش سرعت پروسهٔ توسعهٔ اپلیکیشنهای مختلف میشود. همچنین زامارین از Visual Studio و Xamarin IDE جهت توسعهٔ اپلیکیشن استفاده میکند؛ بنابراین نیازی نیست برنامهنویسان بین محیطهای توسعهٔ مختلف سوییچ کنند.
- برنامهنویسی نیتیو ساختگی: اپلیکیشنهای کراسپلتفرم توسعه داده شده به وسیلهٔ زامارین بر روی کاغذ میتوانند به عنوان اپلیکیشنهای نیتیو دستهبندی شوند زیرا معیار کارایی و سرعت آنها قابل رقابت با اپلیکیشنهای نیتیو است! بنابراین اپلیکیشنهای توسعه داده شده به وسیلهٔ زامارین به خوبی در مارکتها از لحاظ معیارهای پرفورمنسی، خودنمایی میکنند.
- یوایکسی همچون اپهای نیتیو: زامارین امکان ایجاد تغییرات در رابط کاربری (UI) هر پلتفرم را برای برنامهنویسان فراهم کرده است. برنامهنویسان با استفاده از ابزار Xamarin.Form میتوانند اپلیکیشنهایی بسازند که اجزاء UI آن مختص همان پلتفرم باشد. همچنین برای افزایش کارایی، میتوان از ابزار Xamarin.iOS یا Xamarin.Android نیز استفاده کرد که میتواند برای هر پلتفرم UX خوبی را ایجاد کند.
- عملکرد: با استفاده از زامارین، کلیهٔ مشکلات سختافزاری که توسعهٔ اپلیکیشنهای هیبریدی دارند از بین میرود. در حقیقت، زامارین به برنامهنویسان این امکان را میدهد تا از یکسری API منحصر به یک پلتفرم استفاده کرده تا بتوانند به خوبی و بدون هیچگونه مشکلی، با سختافزارهای مختلف و پلتفرمهای مختلف کار کنند.
- بدون نیاز به لایسنس گران قیمت: قبل از آنکه شرکت مایکروسافت اقدام به خرید سرویس زامارین در سال 2016 کند، برنامهنویسان بایستی هزینهٔ سنگینی را برای هر لایسنس به ازای هر برنامهنویس و همچنین به ازای هر پلتفرم پرداخت میکردند. در واقع، قیمت لایسنس 1000 دلار بود و با یک حساب سرانگشتی، میتوانید حدس بزنید یک شرکت برای یک تیم کوچک از برنامهنویسان اگر میخواست اپلیکیشن خود را بر روی چند پلتفرم توسعه دهد چه هزینهٔ سنگینی باید پرداخت میکرد (برای کسب اطلاعات بیشتر، توصیه میکنیم به مقالهٔ Xamarin: از کجا شروع شد و به کجا رسید؟ مراجعه نمایید).
اما پس از خرید استارتاپ زامارین توسط غول نرمافزاری دنیا، مایکروسافت زامارین را در قالب نرمافزار Visual studio و به صورت رایگان منتشر نمود! البته ذکر این نکته هم خالی از لطف نیست که با افزوده شدن زامارین به Visual studio قیمت Visual studio تغییری نکرد؛ یعنی برنامهنویسان میتوانند به صورت رایگان از این فریمورک استفاده نمایند.
خوشبختانه یا متأسفانه، زامارین نیز همچون دو پلتفرم قبلی -فونگپ و تیتانیوم- از یکسری نقاط ضعف برخوردار است که عمدهترین آنها عبارتند از:
- کوچک بودن جامعه: رشد جامعهٔ زامارین بسیار کم بوده است به این دلیل که معمولاً برنامهنویسانی که طرفدار تکنولوژیهای مایکروسافت هستند، در تلاش برای استفاده و بهکارگیری از این فریمورک برای توسعهٔ موبایل اپلیکیشن هستند و در ظاهر، سایر توسعهدهندگان -بهخصوص طرفداران جامعهٔ اپنسورس- علاقهای از خود در این زمینه نشان ندادهاند. به هر حال، جامعهٔ زامارین همچنان کوچکتر از کامیونیتی (جامعهٔ) سایر پلتفرمهای هیبریدی است؛ بنابراین یافتن یک برنامهنویس مسلط به زامارین ممکن است کمی چالش برانگیز باشد.
- تجربهٔ کار با تکنولوژیهای مختلف برای کار با زامارین مورد نیاز است: زامارین از دامنهٔ عظیمی از منابع اپنسورس NET. و دیگر تکنولوژیهای اپنسورس استفاده میکند؛ برنامهنویسانی که برای زامارین برنامهنویسی میکنند بایستی دانش خوبی از Net. و همچنین آشنایی با JavaScript و حتی Objective-C داشته باشند.
- حجم اپلیکیشن نوشته شده با زامارین: برای آنکه اپلیکیشنی با زامارین ساخته شود، بایستی مجموعهای عظیم از قابلیتهای موجود در NET. و همچنین سایر تکنولوژیها به یکدیگر لینک شوند تا برنامه کار کند که این کار باعث افزایش حجم اپلیکیشنهای توسعه یافته با زامارین میشود.
نتیجهگیری
اولین قدم برای اینکه یک ایده را به واقعیت نزدیک کنید، این است که تصمیم بگیرید از راهکارهای نِیتیو استفاده کنید یا از راهکارهای کراسپلتفرم (هیبریدی). توصیهٔ ما این است که برای اپلیکیشنهایی که از پیچیدگی زیادی برخوردار نیستند و تنها قرار است برای یک پلتفرم توسعه داده شوند، باید از روش نیتیو استفاده کنید اما اگر میخواهید پلتفرمهای مختلفی را تحت پوشش خود قرار دهید و همچنین در وقت و هزینه هم صرفهجویی کنید و در عین حال اپ شما قرار نیست کارهای عجیب و غریبی انجام دهد، بهترین راه، استفاده از راهکارهای کراسپلتفرم است.
کسبوکارهای آنلاین به اپلیکیشنهایی با سرعت و کارایی بالا نیاز دارند؛ به عبارت دیگر، به اپلیکیشنهای نیتیو که باعث بهبود تجربهٔ کاربری شود نیازمند هستند؛ اما در عین حال توسعهٔ اپلیکیشنهای نیتیو برای چندین پلتفرم کاری مشکل و هزینهبر است! در این صورت، استفاده از راهکارهای کراسپلتفرم برای پروژههایی که بودجهٔ محدودی دارند، راهکار بهتری است (البته به شرط آنکه حاضر باشند هزینههای جانبی استفاده از راهکارهای هیبریدی همچون یوایکس نامطلوب را بدهند).
البته این نکته را هم باید مد نظر داشته باشید که هر کدام از فریمورکهای موجود دارای نقاط ضعفی هم هستند. برای اینکه در پروسهٔ تبدیل یک ایده به محصول موفق شوید، بهتر است با افرادی کار کنید که دانش کافی از هر دو راهکار داشته باشند و بتواند بهترین تصمیم را با توجه به نیاز و بودجهٔ شما برای توسعهٔ اپلیکیشن مورد نظرتان به شما پیشنهاد دهند.
در این مقاله قصد داشتیم شما را با تعدادی از راهکارهای کراسپلتفرم آشنا نماییم؛ به طور قطع و یقین راهکارهای کراسپلتفرم خیلی بیشتر از آن چیزی است که ما در این مقاله به آنها اشاره کردیم (مثلاً فریمورک React Native) اما در این مقاله قصد داشتیم مقایسهای هر چند کوتاه بین پلتفرمهای Titanium ،PhoneGap و Xamarin داشته باشیم (برای کسب اطلاعات بیشتر در مورد ریئکت نیتیو، توصیه میکنیم به مقالهٔ ابزار جدید فیسبوک برای شروع سریع پروژههای موبایلی مختلف روی هر سیستمعامل با استفاده از React Native مراجعه نمایید).