فلاتر چیست ؟
اگر شما هم جز علاقه مندان به برنامه نویسی حوزه موبایل باشید حتما اسم فلاتر و react به گوش شما رسیده است. flutter در سال ۲۰۱۷ توسط گوگل به عنوان یک فریمورک جدید رونمایی شد و در این مدت کوتاه مورد توجه بسیاری از برنامه نویسان قرار گرفت و پیشرفت قابل توجهی داشت.
یکی از ویژگی های فلاتر که باعث محبوبیت آن شد امکان خروجی گرفتن هم زمان برای native اندروید و ios است. که این کار قبل از ارائه فلاتر نیاز به دوبار برنامه نویسی داشت. به طوری که شما بایدبرای تولید یک برنامه کدنویسی جداگانه ای برای اندروید و ios انجام میدادید. این کار از لحاظ زمان و هزینه اصلا به صرفه نبود.
برنامه نویسی در این فریمورک، با یک زبان توسعه یافته که توسط گوگل ارائه شد انجام میگردد. نام این زبان برنامه نویسی dart است؛ که زبانی شی گرا و سطح بالا است و شباهت زیادی به جاوا دارد.
مقایسه flutter و react با یکدیگر
برای خیلی از ما این سوال پیش آمده است که برای توسعه استفاده از فلاتر بهتر است یا react؟
برای پاسخ به این سوال تصمیم گرفتیم تا این دو فریمورک را با یکدیگر مقایسه کنیم. React native توسط فیسبوک و فلاتر توسط گوگل ارائه شده اند. اما برای بررسی های دقیق تر میخواهیم تا این دو زبان را از ۱۰ زاویه ی کاربردی و مهم از نظر برنامه نویسان بررسی کنیم.
-
زبان برنامه نویسی
در استفاده از ابزار های کراس پلتفرم یکی از مزیت های کلیدی تنها یکبار برنامه نویسی کردن و استفاده از تنها یک زبان است. درحالی که از آن بتوان دو خروجی گرفت. به طوری که خروجی گرفته شده بتواند اپلیکیشن را هم برای اندروید و هم برای IOS تولید کند.
زبان برنامه نویسی react
در react native از زبان برنامه نویسی جاوا اسکریپت استفاده میشود. و به کمک آن اپلیکیشن های کراس پلتفرم را تولید میکنند. پلتفرم react native بر پایه ی فریمورک react زبان برنامه نویسی جاوا اسکریپت نوشته شده است. که خود یک مزیت عالی برای برنامه نویسان است. پایه ی شناخته شده این پلتفرم خود به عنوان یک مزیت محسوب می شود. زیرا نیاز نیست تا نویسندگان و توسعه دهندگان وب زبان خاص دیگری بیاموزند. و کافیست با کمی تلاش اپ موبایل خود را تولید کنند. جاوا اسکریپت یک زبان پویاست و هر چیزی را میتوان با آن انجام داد. اما این مورد مزایا و معایب خود را نیز دارد.
زبان برنامه نویسی flutter
در مقابل فلاتر از یک زبان برنامه نویسی به نام dart بهره میگیرد. که اولین بار در سال ۲۰۱۱ توسط گوگل رونمایی شد. این زبان خیلی کم توسط برنامه نویسان استفاده میشود. نکته جالب و مثبت این زبان، آسان بودن یادگیری قواعد دستوری آن برای برنامه نویسان جاوا و جاوااسکریپت است. زیرا بسیاری از مفاهیم شی گرایی را پشتیبانی میکند و مستندات ساده و قابل فهمی در وب سایت آن برای یاد گیری موجود است.
نتیجه گیری
در انتها باید به این نکته اشاره کنیم در بخش برنامه نویسی با اینکه dart از امکانات عالی برخوردار است. اما توسعه دهندگان کمی دارد، و این react native است که پیروز بخش برنامه نویسی این مقایسه اعلام میشود.
-
معماری فنی
زمانی که میخواهیم از فریمورک های کراس پلتفرم برای توسعه اپ اندرویدی استفاده کنیم؛ حتما باید معماری فنی آن را در نظر بگیریم. دانستن باطن فریمورک میتواند به ما کمک تا تصمیمی آگاهانه بگیریم و بهترین را برای راه اندازی پروژه انتخاب کنیم.
معماری فنی react
معماری react native برپایه ی معماری جاوا اسکریپت اجرا میشود و به عنوان java script Bridge شناخته شده است. React native از معماری flux که توسط فیسبوک ساخته شده است؛ استفاده میکند. و به طور خلاصه میتوان گفت، react native از java script bridge برای برقراری ارتباط با ماژول های native استفاده میکند.
معماری فنی فلاتر
flutter از فریمورک dart که دارای کامپوننت های داخلی بسیار زیادیست، استفاده میکند. وجود همین کامپوننت ها باعث شده تا در فلاتر برعکس react native نیازی به پل ارتباطی برای ارتباط با ماژول های بومی نداشته باشیم. تمام تکنولوژی های مورد نیاز برای توسعه اپ های موبایل توسط فریمورک هایی از قبیل designing material و Cupertino که درون dart وجود دارد؛ فراهم میگردد. فریمورک dart با استفاده از موتور skia که توسط زبان c++ نوشته شده و دارای تمام پروتوکل ها و ترکیبات و کانال هاست.
نتیجه گیری
و اما نتیجه گیری نهایی این بخش، با توجه به اینکه فلاتر اکثر کامپوننت ها را درون خود دارد و نیازی به ارتباط دهنده خاصی ندارد. باید گفت فلاتر از react native در این بخش جلوتر است. -
نصب
مهم ترین نکته که در اولین مراحل مورد توجه برنامه نویسان قرار میگیرد؛ مراحل نصب ساده و قابل درک است.
نصب react
React native توسط پکیج منیجر که توسط node.js ارائه شده و NPM نام دارد. NPM برای برنامه نویسانی که با جاوا اسکریپت کار کرده باشد نقطه ی ابهامی ندارد. اما برای دیگر برنامه نویسان باید آموزشی ارائه شود.
نصب flutter
برای نصب فلاتر میتوان با دانلود باینری از Github با یک پلتفرم خاص نصب کرد. به طور کلی باید گفت فلاتر باید برای روند نصب خود فکری بیاندیشید و آن را بهبود ببخشد. و برای این کار از برنامه های مدیریت بسته برای نصب راحت تر و تعداد گام کمتر استفاده کند
نتیجه گیری
اما نتیجه گیری این بخش بسیار واضح است و برنده react native است. -
راه اندازی و تنظیمات مورد نیاز
فرایند راه اندازی کامپیوتر توسعه دهنده برای استفاده از فریمورک جدید زمان و تنظیمات زیادی لازم دارد.
راه اندازی و تنظیمات مورد نیاز react
در react native توسعه دهنده فرض میکند قبلا تمام تنظیمات لازم برای توسعه ios و اندروید انجام شده است. به همین دلیل اطلاعات کمی در مورد ابزار خطی Xcode وجود دارد و مستقیما به گام ایجاد یک پروژه جدید می پردازد. در این فریمورک هیچ راهنمایی در مورد تنظیمات توسعه اندروید گفته نشده است.
راه اندازی و تنظیمات مورد نیاز فلاتر
Flutter برای شروع به کار راهنمای دقیقی را جهت راه اندازی IDE و پلتفرم برای هر دو سیستم عامل را ارائه داده است. علاوه بر توضیحات دقیق، فلاتر یک ابزار CLI به نام Flutter doctor را ارائه داده است. تا بدین وسیله به توسعه دهندگان کمک کند. این امکان نیز به توسعه دهندگان داده میشود تا به کمک این ابزار بدانند چه ابزارهایی برروی دستگاه های محلی نصب شوند؛ و چه ابزار هایی نیاز به پیکربندی دارند.
نتیجه گیری
از مقایسه ای که انجام شد میتوان نتیجه گرفت با ارائه CLI توسط فلاتر در این بخش react native پس از فلاتر و در رده دوم قرار میگیرد. -
کامپوننت های UI و API توسعه
پشتیبانی از کامپوننت های بومی، یک مورد کلیدی در برنامه های کراس پلتفرم است. اگر یک پلتفرم از کامپوننت های بومی پشتیبانی نکند، در آن زمان اپ تولید شده، مشابه اپ آماده شده با زبان اصلی آن نخواهد بود.
بررسی کامپوننت های react
React native از تعداد کامپوننت های بسیار کمی پشتیبانی میکند. و به همین دلیل نیاز به کتابخانه های جانبی است تا به آنها تکیه کند. به طور کلی میتوان گفت، react native تنها کامپوننت های مربوط به api های دسترسی و همچنین رندرینگ مربوط به رابط کاربری را در اختیار شما میگذارد.
بررسی کامپوننت های فلاتر
در مقابل react native ، flutter قرار دارد. Flutter دارای کامپوننت های بسیار زیادی است. برخی از کامپوننت های اضافی بر react native، تست اپ و navigation، ابزار های مدیریتی و… را داراست. وجود همین کامپوننت ها باعث شد تا flutter دیگر نیازی به کتابخانه جانبی وجود نداشته باشد.
نتیجه گیری
در نتیجه گیری نهایی باید گفت با توجه به نیاز بسیار زیاد react native به کتابخانه جانبی و در مقابل عدم نیاز فلاتر به کامپوننت دلیل باخت react native در این بخش است. -
بهره وری توسعه دهندگان
یکی از نکات کلیدی در توسعه اپ های موبایل، بهره وری بیشتر در توسعه اپ های موبایلی است. زیرا باعث میشود توسعه دهنده تمام تمرکز خود را برروی توسعه اپ بگذارد. و برای موارد حاشیه ای وصبر کردن های زیاد دچار بهم ریختگی تمرکز نشوند.
بهره وری توسعه دهندگان react
در react native اگر توسعه دهنده قبلا با زبان جاوا اسکریپت کار کرده باشد، توسعه برنامه های کراس پلتفرم با آن بسیار راحت است. در react native باتوجه به سرعت reload بسیارسریع در زمان صرفه جویی میشود. همین عامل باعث شده تا کار تست تغییرات اپ ها زمان زیادی به طول نیانجامد. در react native توسعه دهنده می تواند با خیالی آسوده هر برنامه ویرایشگر متن را انتخاب کند.
بهره وری توسعه دهندگان فلاتر
در فلاتر نیز ابزار ها و امکانات بسیار زیاد و کاربردی تعبیه شده است. اما باید به این نکته توجه داشت که در فلاتر نیاز به یادگیری زبان برنامه نویسی جدیدی به نام dart داریم. به همین دلیل دارت متخصصان کمتری نسبت به react native دارد و از محیط های توسعه ی کمتری بهره مند است.
نتیجه گیری
در مجموع میتوان نتیجه گرفت این بخش تحت تاثیر سابقه react native و نوپا بودن فلاتر قرار میگیرد. و به همین دلیل باعث میشود react در این بخش سر تر از فلاتر باشد. -
جامعهی پشتیبان
در میان برنامه نویسان به اشتراک گذاشتن تجربه ها و خطا ها یک امر مهم محسوب میشود. زیرا این امر باعث میگردد تا مشکلات یکدیگر را بیاموزند؛ و در مراحل بعدی با مواجه با آن زمان کمتری برای رفع آن صرف کنند.
جامعه پشتیبان react
باتوجه به ارائه react native در سال ۲۰۱۵ انجمنی در Github برای اجتماع برنامه نویسان این فریمورک تشکیل شد. پس از آن همایش ها و کنفرانس هایی در سطح جهان با حضور توسعه دهندگان آن شکل گرفت.
جامعه پشتیبان flutter
ساخت فلاتر مدت ها قبل انجام شده بود. اما شناخت آن در رویداد google I/O ۲۰۱۷ شکل گرفت. همین زمان بود که جامعه فلاتر روند افزایشی خود را شروع کرد. وجامعه پیشتیبان آن، روز به روز با برقراری همایشات و کنفرانس های آن افزایش یافت. با این که فلاتر در چند سال اخیر رشد خوبی در این زمینه داشته؛ اما هنوز منابع کافی در اختیار برنامه نویسان از این فریمورک وجود ندارد.
نتیجه گیری
در نهایت باید بگوییم هنوز فلاتر به اندازه react نتوانسته است در جامه نویسندگان توسعه یابد. به همین دلیل هنوز در مرحله رشد قرار دارد.وباعث شده در این بخش نیز react برنده است. -
پشتیبانی از تست
مرحله تست یک مرحله بسیار مهم در توسعه اپ های کراس پلتفرم محسوب میشود. که بازخورد سریعی از کد نوشته شده را ارائه می دهد.
پشتیبانی تست react
در react برای تست فوری از ابزار هایی مانند jest استفاده میکنند. با این حال، هنگامی که برای تست یکپارچگی و یا سطح ui به دنبال پشتیبان میگردیم تلاش ما بی نتیجه است. و هیچ پشتیبانی برای ان ارائه نشده است. به همین دلیل باید به سراغ ابزارهای رسمی همانند detox و appium برویم.
پشتیبانی تست فلاتر
در مقابل فلاتر یک مجموعه ی بسیار قوی از امکانات تست برنامه هاارائه کرده است.این امکانات در واحد های مختلف، ویجت و سطحی یکپارچه عرضه شده اند. فلاتر امکان تست کردن بسیار عالی برای ویجت ها فراهم کرده است. این امکان زمانی مفید واقع میشود که ما تست ویجت برای تست کردن ui ایجاد کنیم.
نتیجه گیری
در نهایت react هنوز نتوانسته است یک پشتیبان رسمی را معرفی کند. این درحالی است که فلاتر مستندات قوی و مجموعه ای پربار از امکانات تست را ارائه داده است. -
پشتیبانی از ساخت و فرآیند انتشار
انتشار اپ در مارکت ها دردسر های به خصوص خود را دارد. برای انتشار یک برنامه مراحل باید شامل امضای فایل نهایی تولید اپ باشد. این کار زمانی سخت تر میشود که دست به تولید اپ های کراس پلتفرم بزنیم.
پشتیبانی ساخت و انتشار در react
در react هیچ استناد رسمی برای انتشار خودکار برنامه های آندروید و ios وجود ندارد. راهنما و مستندات زیادی در وب برای کمک کردن برای دریافت خروجی با دو سیستم عامل وجود دارد. که میتوان از آنها در فروشگاه ها استفاده کنرد. اما در کل باید بگوییم برای تولید و انتشار یک اپ که با react تولید و منتشر شده نیاز به کتابخانه های جانبی مانند fastlane داریم.
پشتیبانی ساخت و انتشار در flutter
اما فلاتر در این بخش یک رابط دستوری بسیار قدرتمند دارد. که ما میتوانیم به وسیله ابزار خط فرمان ان و پیروی از مستندات ارائه شده ی فلاتر برای ساخت و انتشار برنامه های اندروید و ios اقدام کنیم. علاوه بر این در فلاتر فرآیند انتشار با fastlane مستند شده است.
نتیجه گیری
در انتهای این بخش باید بگوییم، فلاتر بسیار قدرتمند واقع شده است. این درحالی است که، react هنوز در این مرحله پیشرفته چشم گیری نداشته است. -
پشتیبانی از CI / CD
CI مخفف کلمه Continuous Integration و به معنی ادغام مداوم است. و CD مخفف Continuous Delivery و معنی تحویل مداوم را دارد . این دو مورد اقداماتی ضروری برای از توسعه هر اپ هستند. از این اقدام برای دريافت بازخورد و اجتناب از انتشار اپ های بگ دار مهم استفاده میشود.
پشتیبانی از CI / CD در react
اما react در این زمینه هم ضعیف عمل کرده و هیچ مستندات رسمی ندارد. تنها مستندات آ«مجموعه ای از مقالات موجود در اینترنت هستند. که در مورد اقدامات CI و CD در فریمورک react native سخن گفته اند.
پشتیبانی از CI / CD در flutter
در مقابل فلاتر بخشی برای CI و تست تعبیه کرده ایت که شامل پیوند هایی به منابع خارجی است. میتوان گفت فلاتر به شما اجازه میدهد با کمک خط فرمان CI /CD را راه اندازی کنید.
نتیجه گیری
و نتیجه گیری نهایی نیز در این بخش به نفع فلاتر است. زیرا توانسته CI/CD را به طور رسمی پشتیبانی کند
نتیجه گیری نهایی
بررسی های ساختاری این دو فریمورک را با برتری ۶-۴ فلاتر در مقابل react به پایان رساندیم.
اما نتیجه گیری ما از این رقابت این است که هر دو زبان دارای معایب و مزایای خاص خود هستند. اما در انتها این فلاتر است که به عنوان برنده شناخته میشود. کارشناسان معتقدند که فلاتر هنوز نوپاست. و آینده روشنی در انتظار برنامه های کراس پلتفرم بر پایه ی فریمورک فلاتر است.
دیدگاهتان را بنویسید