Xamarin در مقابل React Native

گردآوری و تالیف : ارسطو عباسی
تاریخ انتشار : 09 شهریور 1397
دسته بندی ها : جاوا اسکریپت

کدام مورد برای توسعه اپلیکیشن‌های چند-سکویی بهتر است؟

هر روزه هزاران اپلیکیشن جدید در دنیا ایجاد می‌شوند. برخی از این اپلیکیشن‌ها روانه App Store و برخی دیگر وارد Play Store می‌شوند، در این بین درصد کمی نیز به دیگر پلتفرم‌ها مانند مایکروسافت و آمازون تخصیص می‌یابند. 

از سال ۲۰۰۸ به بعد که موبایل‌های هوشمند به صورت رسمی به بازار وارد شدند و مشغول فراگیر شدن بودند، تقاضا برای اپلیکیشن‌های موبایل در حال پیشرفت بوده و در حال حاضر نیز به میزان باور نکردنی رسیده است. شرکت‌های بسیاری امروزه در روند توسعه اپلیکیشن‌های موبایل شرکت می‌کنند.  

در مارچ سال ۲۰۱۷ کاربران موبایل‌های آندرویدی قادر به استفاده از ۲.۸ میلیون اپلیکیشن بودند، مقداری که در اپ استور اپل نیز تقریبا به همین مقدار نزدیک بود. 

با دیدن چنین ارقامی مطمئنا به این نتیجه خواهید رسید که داشتن اپلیکیشن‌های موبایل تا به چه اندازه اهمیت دارد. یکی از راه‌های توسعه اپلیکیشن‌ها (راه استاندارد) این است که از زبان نیتیو مربوط به هر پلتفرم استفاده کنید. برای مثال در آی‌او‌اس شما سوئیفت را در اختیار دارید و در آندروید باید با جاوا سر و کار داشته باشید. حال در این میان راه‌های میانبری نیز پیاده‌سازی شده است. ابزارهایی مانند زامارین و ری‌اکت نیتیو دو مورد از این میانبرها به شمار می‌روند. 

هدف از این مقایسه

بسیاری از شرکت‌ها قصد دارند تا اپلیکیشن موبایلی خود را برای هر دو پلتفرم محبوب یعنی آندروید و iOS توسعه دهند، این در حالی‌ست که آن‌ها می‌خواهند کارکردی درست شبیه به هم را در این دو پلتفرم پیاده‌سازی کنند. با در نظر گرفتن چنین موضوعی باید بدانید که اپلیکیشن‌های آندروید قابلیت اجرا شدن روی iOS و یا حالت بلعکس را ندارند. به همین دلیل باید دو نسخه مختلف از اپلیکیشن توسعه داده شود. بسیاری از شرکت‌ها این کار را تلف کردن زمان و هزینه می‌دانند اما برخی دیگر می‌گویند که برای داشتن کارایی مطلوب باید چنین هزینه‌ای انجام شود. برای اینکه بیشتر با این مقوله آشنایی پیدا کنید به شما پیشنهاد می‌کنم که مطلب «React Native در مقابل توسعه اپلیکیشن‌های Native برای موبایل» را مطالعه نمایید. با این وجود فریمورک‌ها و پلتفرم‌هایی نیز بوجود آمده‌اند که به شما کمک می‌کنند تا بتوانید تنها با یک بار نوشتن کدها، اپلیکیشن‌هایی را هم برای آندروید و هم برای iOS ایجاد کنید. پس شما برای سناریوهای مختلف تنها نیاز است که یکبار فرایند توسعه را طی کنید. در این مطلب قصد داریم با ارائه فاکتورهایی پلتفرم زامارین و ری‌اکت نیتیو را با همدیگر مقایسه نماییم. 

سهم بازار

ری‌اکت نیتیو: میزان استفاده از ری‌اکت نیتیو در این مدت به طور چشم‌گیری افزایش یافته است. در حال حاضر بیشتر از هزاران شرکت مختلف وجود دارد که از ری‌اکت نیتیو استفاده می‌کنند. اخیرا در مقاله‌ای تحت عنوان «تجربه استفاده از React Native در Airbnb» تجربه استفاده از این پلتفرم را در یکی از شرکت‌های معتبر به نام Airbnb بررسی کرده‌ایم. 

زامارین: براساس گفته‌های مایکروسافت، زامارین تنها ۶ سال عمر دارد و با این وجود توانسته که انتخاب بیشتر از ۱۵ هزار شرکت در دنیا باشد. جدای از توسعه اپلیکیشن‌ها، محیط زامارین این اجازه را به شما می‌دهد تا بتوانید از اکوسیستم تستینگ آن استفاده کنید و مراحل دیباگینگ خوبی در اختیار داشته باشید. 

برنده: برنده این مرحله با توجه به آمار هر دو پلتفرم هستند.

موجودیت

ری‌اکت نیتیو: ری‌اکت نیتیو ابزار رایگانی است و برای توسعه اپلیکیشن‌های آندروید و iOS نیازی به پرداخت هیچ هزینه‌ای ندارید.

زامارین: زامارین به صورت پایه‌ای رایگان است اما برای داشتن پلتفرم زامارین در یک سطح اینترپرایز باید هزینه بکنید.

برنده: ری‌اکت نیتیو

روند کامپایل شدن

ری‌اکت نیتیو: در زمان توسعه اپلیکیشن‌های iOS قابلیت استفاده از حالت کامپایلی JIT یا Just in Time وجود ندارد، به همین دلیل ری‌اکت نیتیو به سمت تفسیر کدهای جاوااسکریپت برمی‌گردد. در سطح داخلی نیز آی‌او‌اس،   JavaScriptCore را برای ما فراهم کرده است. JavaScriptCore در آندروید نیز استفاده می‌شود اما باید این موضوع را در نظر بگیرید که استفاده از روند کامپایل JIT در آندروید هیچ مشکلی ندارد و می‌شود از آن استفاده کرد.

زامارین: زبان سی‌شارپ هر دو حالت JIT و AOT یا Ahead of Time را برای کامپایل کردن برنامه فراهم می‌سازد. با این حال همانطور که گفته شد برای توسعه اپلیکیشن‌های IOS قابلیت استفاده از JIT وجود ندارد. 

برنده: زامارین

محیط توسعه

ری‌اکت نیتیو: ری‌اکت نیتیو به شما این قابلیت را می‌دهد تا از کد ادیتوری استفاده کنید که با آن راحت هستید. همچنین ری‌اکت نیتیو به شما اجازه می‌دهد که در روند دیباگینگ از Expo استفاده کنید. یکی از ویژگی‌های داخلی بسیار خوب برای ری‌اکت نیتیو قابلیت hot loading است که به شما این قابلیت را می‌دهد تا بعد از ایجاد تغییرات در کدها، نیازی به بارگذاری مجدد کامل اپلیکیشن نداشته باشید.

زامارین: محیط توسعه زامارین بسیار قدرتمندتر عمل می‌کند، شما قابلیت توسعه کدهای اپلیکیشن مربوط به IOS را در این محیط دارید، اما همانطور که برای همه پلتفرم‌ها یکسان است برای کامپایل کردن باید از مک استفاده کنید. در هر حال، روند رفع اشکال کردن در زامارین بسیار بهتر از ری‌اکت نیتیو است.

برنده: زامارین

فریمورک

ری‌اکت نیتیو: ری‌اکت نیتیو از جریان داده‌ای مدرنی که در ری‌اکت پیاده‌سازی شده است استفاده می‌کند. استفاده از چنین جریانی می‌تواند کارایی اپلیکیشن شما را بالا ببرد. اگر از تغییراتی که در دنیای توسعه جاوااسکریپت اتفاق می‌افتد رضایت دارید بنابراین مطمئنا این ویژگی را نیز دوست خواهید داشت. 

زامارین: اگر قبلا با معماری‌هایی مانند ASP.NET MVC و یا دیگر معماری‌های مایکروسافت کار کرده باشید، بنابراین زامارین با شما سازگاری بیشتری دارد. در زامارین از معماری MVVM استفاده می شود.

برنده: هر دو

کامپوننت‌های آماده

ری‌اکت نیتیو: تمام کامپوننت‌های ری‌اکت را می‌توانید در یک مکان مشاهده کنید، همچنین مستندات بسیار خوبی نیز برای آن نوشته شده است.

زامارین: کامپوننت‌های زامارین در بین NuGet و قسمت کامپوننت استور جداسازی شده است. اما مستندات در این پلتفرم می‌تواند بهبود یابد.

برنده: هر دو مورد از نظر کیفیت و کمیت برابری دارند اما ری‌اکت نیتیو بهتر عمل کرده است.

انجمن‌ها و کمک‌ها

ری‌اکت نیتیو: ری‌اکت نیتیو در مقابل زامارین ابزار جدید‌تر و جوان‌تری است. به همین دلیل ممکن است که از نظر انجمن‌ها از کمیت کمتری برخوردار باشد.

زامارین: زامارین از انجمن‌ها و کمک‌های بیشتری برخوردار است. می‌توانید در اینترنت بسیاری از آن‌ها را پیدا کنید. همچنین جامعه زامارین در Stack Overflow بسیار زیاد است.

برنده: زامارین

اگر که می‌خواهید سازگاری ابزارها با موضوع تستینگ را نیز بررسی کنید باید بگویم که هر دو این موارد واقعا خوب هستند. VS Code می‌تواند ویژگی‌های دیباگینگ بسیار عالی را برای ری‌اکت نیتیو فراهم کند، همچنین می‌توانید با استفاده از ابزاری مانند Jest تست‌های واحد مختلفی را برای ری‌اکت نیتیو بنویسید. همچنین در زامارین شما می‌توانید درست مانند ابزار Xcode از روند رفع اشکال استفاده کنید. 

منبع

مقالات پیشنهادی

React Native در مقابل توسعه اپلیکیشن‌های Native برای موبایل

به عنوان یک کارآموز اشتیاق زیادی به توسعه‌ اپلیکیشن برای آی‌او‌اس پیدا کرده‌ام، اما جدیدا با این موضوع مواجه شده‌ام که برای توسعه چنین اپلیکیشنی باید...

آموزش ساخت برنامه موبایل توسط React Native – قسمت اول

در این سری آموزش‌ها میخوایم درباره ساخت اپلیکیشن های native برای ios و اندروید یاد بگیریم. اما این کار رو توسط فریمورک محبوب React Native Javascript ا...

11 اشتباه رایج در طی توسعه برنامه‌های React Native / Redux

پس از کار کردن با React Native به مدت تقریبا یک سال، ‌تصمیم گرفتم اشتباهات رایجی که معمولا تازه‌کاران انجام می‌دهند را لیست کنم. در این مثاله، با ۱۱ م...

متقاعد شدم که React Native آینده است

پس از چند هفته کار، توانستم اولین برنامه موبایل خود را بسازم. در طی چند روزی که مشغول به ساخت این برنامه بودم، تحت تاثیر قدرت React Native قرار گرفته،...