React Native که توسط Facebook و Flutter که توسط Google ایجاد شدند، از جمله تکنولوژی های cross-platform ساخت اپلیکیشنی هستند که توجه ها را به خود جلب کرده اند. در این مقاله، به مقایسه جزئیات این دو تکنولوژی از دیدگاه یک برنامه نویس می پردازیم.
به موجب محبوبیت اپلیکیشن های موبایل، تقریباً تمامی شرکت ها به یک یا چند اپلیکیشن نیاز دارند تا بتوانند در بازار رقابت کنند. علاوه بر این، شرکت ها به دنبال ساخت اپلیکیشن های (خصوصاً iOS و Android) سریعتری هستند که به منابع کمتر نیاز دارد. در نتیجه، Apple و Google ابزارها و تکنولوژیهای native برای ساخت اپلیکیشن ها ایجاد کردهاند. برنامه نویسان iOS می توانند از Xcode و Swift برای ساخت اپلیکیشن استفاده کنند، حال آنکه برنامه نویسان Android از Android Studio و Kotlin/Java استفاده می کنند.
اگرچه، برنامه نویسان با توجه این موضوع باید دو مجموعه متفاوت از تکنولوژی ها را فراگیرند. در نتیجه، شرکت ها به دنبال به کار گیری راهکارهای cross-platform به جای راهکارهای native هستند تا از این طریق بتوانند با استفاده از یک زبان برنامه نویسی واحد برای هر دو پلت فرم iOS و Android اپلیکیشن بسازند.
Flutter و React Native چیست؟
React Native به عنوان یک پروژه داخلی توسط Facebook بنیان نهاده شد و از سال 2015 open-source شد. از سویی دیگر، Flutter پروژه ای بود که از سال 2017 توسط Google ایجاد شد. هر دو تکنولوژی به برنامه نویسان کمک می کنند تا سریعاً بتوانند با استفاده از یک زبان برنامه نویسی واحد، اپلیکیشن های cross-platform بسازند.
React Native یک ابزار کاملی است که مخاطبین وسیعی دارد. هرچند، Flutter از همان ابتدا به میزان زیادی مورد پذیرش و اقتباس قرار گرفت. در این مقاله، این دو تکنولوژی از چند منظر مورد بررسی قرار می گیرند.
زبان برنامه نویسی
مزیت استفاده از تکنولوژی cross-platform برای ساخت اپلیکیشن موبایل این است که با استفاده از یک زبان برنامه نویسی واحد می توان اپلیکیشن را بر روی هر دو پلت فرم iOS و Android ایجاد کرد.
React Native – JavaScript
React Native برای ایجاد اپلیکیشن های cross-platform از JavaScript استفاده می کند. در حال حاضر JavaScript یک زبان محبوب در دنیای وب است که با React و دیگر framework های متداول JavaScript مورد استفاده قرار می گیرد. با در نظر گرفتن این حقیقت که، برنامه نویسان با اندکی آموزش React Native می توانند اپلیکیشن موبایل بسازند، شرکت ها React Native را به عنوان روتین/راهکار بدون نیاز به تفکر برمی گزینند. یک ویژگی خوب و در عین حال بد این است که JavaScript یک زبان پویاست که امکان هر کاری را فراهم می کند.
Flutter – Dart
Flutter که از زبان برنامه نویسی Dart استفاده می کند و توسط گوگل در سال 2011 معرفی شد، به ندرت توسط برنامه نویسان مورد استفاده قرار می گیرد. از آنجاییکه Syntax های Dart مفاهیم object-oriented را پشتیبانی می کنند، برای برنامه نویسان JavaScript یا Java قابل درک است. به موجب داشتن Documentation قابل درک، شروع کار با Dart آسان است.
تحلیل و نتیجه گیری
از آنجاییکه بیشتر برنامه نویسان از JavaScript استفاده می کنند، به کار گیری framework های React Native آسان تر است. اگرچه Dart ویژگیهای خوبی دارد، به ندرت شناخته شده و مورد استفاده قرار می گیرد. با مدنظر قرار دادن این حقیقت، React Native امتیاز بیشتری از نظر زبان برنامه نویسی کسب می کند.
معماری فنی
هنگام انتخاب framework برای ساخت موبایل اپلیکیشنی که cross-platform است، باید معماری و مشخصات فنی آن را در نظر گرفت. با شناخت اجزای داخلی هر framework، میتوان آگاهانه در انتخاب مناسبترین گزینه برای پروژه خود تصمیم گرفت.
React Native – Flux
ساختار React Native بر معماری محیط اجرای JS استوار است که با نام JavaScript bridge شناخته می شود. کدهای JavaScript در زمان اجرا با کدهای native یکی می شوند. React Native از ساختار Flux های Facebook استفاده میکند. به طور خلاصه، React Native از JavaScript bridge برای برقرار ارتباط با مدل های native استفاده می کند.
Flutter – Skia
Flutter از framework به نام Dart استفاده می کند که بیشتر اجزای آن داخلی است. بنابراین، اندازه بزرگتری دارد و به bridge برای برقراری ارتباط با مدل های native نیاز ندارد. Dart در خود framework های زیادی، مانند Material Design و Cupertino دارد، که به واسطه آن ها تمامی تکنولوژی های مورد نیاز برای ساخت اپلیکیشن موبایل را فراهم می کند. فریمورک Dart از موتور Skia C++ که تمامی پروتکلها، اجزا و کانال ها را داراست، استفاده می کند. به طور خلاصه، Flutter تمامی ملزومات مورد نیاز برای ساخت اپلیکیشن را در خود دارد.
تحلیل و نتیجه گیری
موتور Flutter بیشتر اجزای native را در framework خود دارد و همیشه به bridge برای برقراری ارتباط با اجزای native نیاز ندارد. از سوی دیگر، React Native از JavaScript bridge برای برقراری ارتباط با مدل های native استفاده می کند که موجب عملکرد ضعیف آن می شود.
نتیجه گیری
اگرچه React Native و Flutter مزایا و معایب خود را دارند، علیرغم مقایسه دو مورد، Flutter بر React Native برتری دارد. برخی از متخصصین صنعت پیش بینی می کنند که Flutter آینده ساخت اپلیکیشن موبایل خواهد بود. با در نظر گرفتن مقایسههای انجام شده، مشخص می شود که Flutter با قدرت وارد عرصه ساخت cross-platform ها شده است.