برای برنامه نویسی اپلیکیشن‌های تلفن همراه می‌توان از زبان‌های بومی (Native) و یا راهکارهای Cross-Platform مانند Ionic، Flutter ، React Native و Xamarin استفاده کرد.

محبوبیت راهکارهای Cross-Platform به مرور زمان بیشتر و بیشتر می شود. شاید تا حدود 2 دوسال پیش React Native محبوب ترین زبان Cross-Platform بود ولی فلاتر ( Flutter ) پس از معرفی و از همان نسخه های اولیه و بتا شتاب زیادی را در پیش گرفت و در کمتر از چند ماه خود را به React Native رساند و پیش بینی می شود به علت پشتیبانی از Web و Desktop علاوه بر اپلیکیشن موبایل و تنوع کامپوننت ها به زودی React Native را پشت سر بگذارد.

در این مقاله قصد داریم به مقایسه این دو راهکار Cross-Platform محبوب، React Native و Flutter بپردازیم.

اپلیکیشن‌های بومی (Native-Apps)

اپلیکیشن های بومی
اپلیکیشن های بومی

اپلیکیشن های بومی بالاترین سرعت را در زمان اجرا دارند. توسعه روی اپلیکیشن‌های بومی نیازمند زبان‌های برنامه نویسی و محیط‌های توسعه (IDE) متفاوت است. زبانهای بومی برنامه نویسی اندروید جاوا و کاتلین و زبانهای برنامه نویسی آی او اس ObjectiveC و Swift هستند. بنابراین داشتن دانش همه این زبانها برای توسعه روی هر دو پلتفورم اندروید و ios مورد نیاز است. برای سازمان‌های بزرگ علاوه بر هزینه نگهداری بالا، باید دو گروه متخصص در جهت توسعه روی زبان‌های بومی استخدام شوند.

با وجود سرعت بالای اجرا امروزه به علت هزینه تولید و نگهداری زیاد استفاده از زبانهای بومی مقرون به صرفه نیست.

در جدول زیر زبانهای برنامه نویسی مورد نیاز برای اندروید و آی او اس نمایش داده شده است.

اپلیکیشن بومیزبان برنامه نویسیمحیط توسعهشرکت سازنده
iOSObjective C, SwiftXCodeApple
AndroidJava, KotlinAndroid StudioGoogle

اپلیکیشن‌های Cross-Platform

اپلیکیشن های Cross-Platform - مقایسه Flutter و React Native
اپلیکیشن های Cross-Platform

در راهکارهای cross-platform برای برنامه نویسی هر دو سیستم عامل اندروید و آی او اس از یک زبان برنامه نویسی استفاده می‌شود.

مزیت دیگر راهکارهای Cross-Platform هزینه پایین در تولید اپلیکیشن است. علاوه بر این نگهداری یک سورس کد برای رفع خطا و اضافه کردن ویژگی‌های جدید بسیار راحت تر از نگهداری کدهای مختلف برای پلتفورم‌های مختلف است. بنابراین تنها یکبار کدنویسی انجام می‌شود و قابلیت بکار گیری روی تمام گوشی‌های تلفن همراه از نوع اندروید و آی‌او‌اس را دارا هستند.
مزیت دیگر این روش این است که نسخه های مختلف همزمان با هم پیش می روند و زمانی که آپدیت ای صورت میگیرد و تغییری رخ می دهد همزمان روی هر دو نسخه اتفاق می افتد بنابراین نگهداری کد بسیار راحت تر می شود. شکل زیر راهکار های مختلف بومی و cross platform را در قالب جدول نمایش می‌دهد. دو راهکار اول را عموما راهکارهای هیبریدی یا hybrid apps و قسمت سوم را web apps نامگذاری می‌کنند.

table1 2 1024x349 - مقایسه React Native و Flutter در توسعه اپلیکیشن موبایل

در این مقاله تنها قصد داریم به مقایسه دو پلتفرم محبوب ReactNative و فلاتر بپردازیم.

مقایسه React Native و Flutter

React Native و فلاتر امروزه محبوب ترین راهکارهای Cross-Platform هستند. حدود 4 سال است که React Native در این عرصه حضور دارد و جدیدا با یک رقیب جدی به نام فلاتر مواجه شده که توسط شرکت قدرتمند گوگل پشتیبانی می شود. فلاتر علاوه بر وجود کامپوننت های رابط کاربری مناسب، سرعت زمان اجرای بالاتری نسبت به راهکارهای دیگر دارد و مستقیما به native کامپایل می شود.

در جدول زیر مقایسه React Native و Flutter به صورت کلی مشاهده می شود.

React NativeFlutter
توضیحاتفریمورکی برای تولید اپلیکیشن با استفاده از Reactابزارهای UI برای توسعه اپلیکیشن موبایل، وب و دسکتاپ از یک سورس کد
اولین Release مارچ 2015دسامبر 2018
شرکت سازنده فیسبوک گوگل
سورس کد بازبلهبله
زبان برنامه نویسیجاوااسکریپتدارت
محبوبیت81,678 ستاره در 18 مهر 98 در گیت هاب76,754 ستاره در 18 مهر 98 در گیت هاب
سرعت اجراعالیعالی

مقایسه React Native و Flutter از لحاظ رابط کاربری

فلاتر (Flutter)

در فلاتر رابط کاربری در سیستم عامل های جدید به همان خوبی سیستم عامل های قدیمی کار میکنند.

از آنجا که یک سورس کد برای آی او اس و اندروید وجود دارد، به یک شکل در آی او اس و اندروید نمایش داده می شوند و همچنین عملکرد مشابه دارند. اما ویجت های متریال دیزاین و Cupertino این امکان را فراهم می کنند که از زبان طراحی پلتفرم نیز تبعیت نمایند.

فلاتر دو دسته ویجت برای طراحی واسط کاربری دارد. یک دسته ویجت های Material Design هستند که رابط کاربری مطابق استاندارد متریال دیزاین گوگل را می‌سازند. و دسته دوم ویجت های Cupertino هستند که از استاندارد طراحی اپل برای گوشی های IOS تبعیت می‌کنند.

React Native

کامپوننت های React Ntive کاملا مشابه کامپوننت های Native هستند مثلا یک Button در آی او اس کاملا مشابه کامپوننت بومی آن و در اندروید هم مشابه Button های اندوریدی است.

از آنجا که کامپوننت های React Native کاملا همان کامپوننت های Native هستند باید این اطمینان را حاصل کنند که با بروز رسانی کامپوننت های Native تغییرات به سرعت روی React Native هم اعمال شود.

برای اینکه در React Native هم مشابه فلاتر کامپوننت ها روی سیستم عامل های قدیمی و جدید به خوبی و به طور یکسان کار کنند، باید لایبرری ها و کامپوننت های خارجی (third party) مانند متریال دیزاین استفاده شود.

سایر موارد

فلاتر

  1. امکان طراحی اپلیکیشن ها با رابط کاربری زیبا و شکیل به خاطر کامپوننت های آماده
  2. سرعت بالای رشد محبوبیت و استفاده
  3. داکیومنت و پشتیبانی بسیار خوب تیم فلاتر که استفاده از آنرا بسیار آسان می کند.
  4. بخش وب فلاتر که به زودی این امکان را فراهم میکند از یک ساختار کد برای اپلیکیشن های موبایل و وب استفاده شود
  5. امکانات این زبان امکان سرعت توسعه بالا را فراهم می کند.

React Native

  1. ثبات به خاطر حضور بیش از 4 سال در بازار
  2. بسیاری از تیم های بزرگ و موفق از این پلتفرم استفاده کرده اند.
  3. راحتی یادگیری با وجود مراجع بسیار زیاد
  4. لایبرری های بسیار زیاد که سرعت توسعه را بالا میبرد.
  5. با اعمال تغییراتی روی کد می توان آن را در وب هم مورد استفاده قرار داد (اما دو ساختار کد برای وب و موبایل مورد نیاز است)

در این مقاله به طور خلاصه به بررسی راهکارهای Cross-Platform و به طور خاص مقایسه React Native و Flutter دو زبان محبوب برنامه نویسی اپلیکیشن های موبایل پرداختیم.