فهرست محتوا
ساخت برنامههای کامپیوتری در هر پلتفرمی که باشد میتواند جزو آن دسته از داستانها قرار بگیرد که دردسرهای خاص خود را دارد و باید گفت تقریبا در هیچ زمینهای ساخت یک برنامه کار سادهای نیست. البته در صورتی که شما آموزشهای خود را تکمیل کرده و با دقت و تخصصی روی یک موضوع کار کنید و به آن علاقه داشته باشید، کار سختی هم نخواهد بود! پیشرفت تکنولوژی در ساخت برنامهها در سالهای گذشته با سرعت شگفتآوری نسبت به چند دهه گذشته خود پیش رفته است و کار به جایی رسیده که ساخت برنامههای مختلف روی پلتفرمهایی که هیچ ربطی به هم ندارند در یک پلتفرم امکانپذیر شده است و شما با طراحی یک برنامه میتوانید خروجی متعددی را از آن بگیرید. در این مقاله با بررسی اینکه فلاتر چیست قصد داریم یکی از فریمورکهای برنامهنویسی را معرفی کنیم که با استفاده از آن میتوان این مورد را به بهترین شکل ممکن پیادهسازی کرد.
گوگل که همیشه در ارائه تکنولوژیهای جدید پیشتاز بوده است این فریمورک را بر مبنای یکی از قدیمیترین امکانات برنامهنویسی یعنی همان Software Development Kitها که به نام SDKها شناخته میشوند ارائه کرده است. مجموعه امکاناتی که در کنار هم میتوانند به برنامهنویس اختیار کار کردن در زمینههای متفاوت را داده و کتابخانههای مورد نیاز آن را در دسترس وی قرار بدهند. برای اینکه به صورت کامل درک کنیم که روش کاری فریمورک فلاتر چیست و این SDK چطور به این قابلیتهای سطح بالا دست پیدا کرده است لازم است کمی در مورد اینکه SDKها چه هستند صحبت کنیم.
SDK چیست؟ و به چه دردی میخورد؟
SDK یا همان Software Development Kit یکی از همراهان همیشگی برنامهنویسها بوده است و برای خیلی از پلتفرمها و فریمورکهای مختلف از آن استفاده میشود. در صورتی که شما با پلتفرمهایی مانند جاوا کار کرده باشید قطعا از این بستههای نرمافزاری استفاده کردهاید. این نوع از بستهها معمولا به صورت یک برنامه پیشنیاز ارائه میشوند و ورژنهای مختلف در آنها نقش بسیار مهمی در اینکه فریمورک موردنظر شما درست کار بکند و یا نه را دارند. در واقع این بستههای SDK یک مجموعه از ابزارهای برنامهنویسی هستند، که بیشتر آنها را کتابخانههای کامپایل شده تشکیل میدهند.
این کتابخانهها با اضافه شدن به پروژه شما میتوانند قابلیتهای پیشرفتهای را به آن اضافه کنند که شما به جای چندین خط کد در زبان پایه صرفا با یک دستور میتوانید یک کار چند مرحلهای را انجام دهید. در مورد SDKها باید گفت که آنها سطوح مختلف را دارند. بعضی از آنها صرفا کتابخانهها را ارائه میکند، بعضی دیگر از آنها میتوانند به عنوان کامپایلر و همینطور دیباگر هم عمل کنند و در بعضی از این SDKها میتوانید به یک فریمورک نرمافزاری هم برای ساخت برنامهها دسترسی داشته باشید.
ویژگیای که خیلی از این SDK ها دارند این است که به طور خاص برای کار کردن روی یک سیستم عامل و یا سختافزار خاص ارائه میشوند. از آنجا که کامپایلرها و معماری سیستمهای مختلف میتوانند روی کامپایل و تبدیل برنامه به کد زبان ماشین تاثیر داشته باشند. اینکه که یک معماری خاص از سیپییو و یا یک سیستم عامل خاص، از یک SDK ویژه برای یک زبان برنامهنویسی استفاده کند موضوعی کاملا طبیعی خواهد بود.
به عنوان مثال وقتی که شما برای اندروید برنامهنویسی میکنید باید از یک SDK موسوم به JDK یا همان Java Development Kit استفاده کنید. iOS هم سیستم کاری خود را نیاز دارد که به آن iOS SDK گفته میشود. احتمالا با NET Framework SDK که از آن برای برنامهنویسی روی سیستم ویندوز و برنامههای آن چه برای ویندوز فون و چه برنامههای سیستمی استفاده میشود هم آشنایی داشته باشید. (برای اطلاعات بیشتر میتوانید به مقاله NET Core. چیست مراجعه کنید.) تمامی این سیستمها بستههای نرم افزاریای هستند که با استفاده از آنها میتوانید برای فریمورک خاصی که دارند برنامه بنویسید.
البته بعضی از SDKها هم وجود دارند که میتوان از آنها برای موارد مختلف و قابلیتهای ویژه و اضافی استفاده کرد. شرکتهای زیادی هستند که قابلیتهای جانبی را برای فریمورکهای مختلف ارائه میکنند و میتوان گفت که SDKهایی را بدون وابستگی چندانی به سیستم و بیشتر برای برنامهها و فریمورکهای مختلف ارائه میکنند که معروفترین آنها Facebook ،Google ،Smaato و همینطور InMobi میباشد. عموم این SDKهای نام برده شده که به صورت مستقل از پلتفرم هستند، برای این ارائه شدهاند تا امکانات مربوط به تحلیل دادهها را انجام داده و به نوعی برای بررسی رفتار کاربران و تبلیغات مورد استفاده قرار میگیرند.
اما همین موضوع توانست به گوگل ایده ساخت یک SDK را بدهد که علاوه بر تحلیلهای رفتاری کاربران میتوانست یک برنامه را برای هر فریمورکی آماده کند. این ایده در فلاتر پیادهسازی شد و اکنون نوبت به آن رسیده است که با هم به بررسی این موضوع بپردازیم که فلاتر چیست و چگونه کار میکند؟
فلاتر چیست؟
فلاتر یک بسته نرمافزاری یا همان SDK است که بهصورت اپنسورس، توسط گوگل ارائه شده است و با استفاده از آن میتوان برای طیف وسیعی از سیستم عاملها برنامه نوشت. این SDK برای اولین بار در سال 2017 ارائه شد. پروژهای که گوگل آن را گسترش میداد با نام اولیه Sky شناخته میشد و تنها قرار بود تا یک پلتفرم برنامهنویسی برای زبان اندروید باشد که با استفاده از زبان برنامهنویسی Dart کار میکرد. Dart زبانی سطح بالا است که بیشتر برای فرانتاند ارائه شده است و در بخشهای بعدی در مورد آن بیشتر صحبت خواهیم کرد.
روند شروع پروژه Sky و فریمورکی که دنبال میکرد تقریبا به صورت موازی با زبان Dart پیش میرفت که در سال 2015 کلید خورده بود. در سال 2017 این پروژه برای اندروید به ثمر رسید و تحت نام Flutter ارائه شد. اولین نسخه آپدیت شده و پایدار فلاتر در سال 2018 به نام Flutter 1.0 توسط تیم برنامهنویسی گوگل ارائه شد و ورژن پایدار بعدی که تیم توسعه شانگهای گوگل مسئولیت ارائه آن را بر عهده داشت با نام Flutter 1.12 در سال 2019 ارائه شدند. تمامی این موارد به صورت همگام با SDK ارائه شده برای زبان برنامهنویسی Dart پیش میرفت و وقتی که این SDK در سال 2020 ورژن 2.8 خود را ارائه کرد، فلاتر با ارائه ورژن 1.17 آن را به کار گرفت.
این نسخه را میتوان یکی از نسخههای کلیدی و خاص برای این زبان معرفی کرد که با استفاده از آن بهبودهای خوبی در کارکردهای مختلف این فریمورک ظاهر شد که از مهمترین آنها میتوانیم به افزایش کارایی در iOS تا حد چشمگیری اشاره کنیم. همینطور در ماه مارس سال 2021 گوگل با ارائه Flutter 2 سیستمی را ارائه کرد که همان کارایی را برای برنامههای ارائه شده روی ویندوز، مکینتاش و همینطور لینوکس را داشت. به طور کلی در مورد اینکه سیستم عاملهای پشتیبانی شده توسط فلاتر چیست و برای چه سیستم عاملهایی میتوان توسط فلاتر برنامه ساخت را در لیست زیر معرفی کنیم:
- اندروید
- آی او اس
- لینوکس
- مکینتاش
- ویندوز
- گوگل فوشیما
همینطور این فریمورک یک قابلیت خوب را دارد که میتواند از برنامههای نوشته شده با این فریمورک در یک سیستم عامل، نوعی API را در اختیار سایر برنامههای سیستم عاملهای دیگر قرار دهد و اینگونه برنامههای سیستم عاملهای مختلف میتوانند به راحتی با هم تبادل اطلاعات داشته و با استفاده از این رابطهای کاربری برنامهنویسی از ماژولهای ارائه شده روی سیستم عاملها به صورت اشتراکی استفاده کنند.
ویژگیهای اصلی فلاتر چیست؟
تا اینجای کار در مورد اینکه فلاتر چیست و قرار است چه کاری را برای ما انجام دهد صحبت کردیم و اکنون کموبیش با اینکه ویژگیهای فلاتر چیست آشنا شدهایم و دیدیم که این سیستم چه کارهایی را انجام میدهد. اما در مورد اینکه این کارها به صورت تکنیکی با استفاده از چه قابلیتی پیادهسازی میشوند، هنوز حرفی به میان نیامده است و اکنون میخواهیم در مورد آن صحبت کنیم.
از ویژگیهای فلاتر میتوانیم به چهار مورد اصلی اشاره کنیم که زیربنای اصلی تمام کارهایی که فلاتر انجام میدهد را تشکیل میدهند.
این چهار ویژگی کلیدی به این صورت معرفی میشوند:
استفاده از پلتفرم و زبان برنامهنویسی Dart
این زبان برنامهنویسی توسط گوگل در سال 2011 ارائه شد. هدف اصلی این زبان برنامهنویسی این بود که در طراحی رابط کاربری برای اپلیکیشنهای موبایل و وبسایتها از آن استفاده شود. همینطور این زبان قابلیت ساخت برنامههای سرور و برنامههای دسکتاپ را دارا بود.
ویژگیهای خوبی مانند چند پارادایم بودن و همینطور به کارگیری کامل OOP یا همان برنامهنویسی شیگرا و استایل برنامهنویسی با سینتکسی شبیه به زبان برنامه نویسی C باعث شد که این زبان تبدیل به یک زبان قدرتمند شود. دارت این قدرت را دارد که کدهای نیتیو و کدهای JS را کامپایل کند و در واقع میتواند به نوعی کار Node JS را هم انجام دهد.(در صورتی که در مورد Node JS به اطلاعات بیشتری نیاز دارید میتوانید به مقاله Node JS چیست مراجعه کنید.)
این زبان به صورت کراس پلتفرم بوده و اگر بخواهیم بگوییم که یکی از مهمترین دلایل پیشرفت فلاتر چیست، میتوانیم به همین ویژگی زبان برنامهنویسی Dart اشاره کنیم. پلتفرم Dart در واقع برای فلاتر یک ماشین مجازی را راهاندازی میکند که کدهای این زبان را کامپایل کرده و میتواند آنها را اجرا کند. همینطور این زبان به فلاتر اجازه میدهد تا کدهای نوشته شده را در لحظه کنترل کرده و آنها را دیباگ کند.
موتور فلاتر یا همان Flutter Engine
یکی دیگر از ویژگیهایی که رشد فلاتر را در پیش داشته است، موتور فلاتر (Flutter Engine) است که قدرت خوبی را برای این فریمورک پیادهسازی میکند. این موتور که با زبان برنامه نویسی ++C برنامهنویسی شده است، کار رندرینگ خود را با استفاده از کتابخانه Skia که گوگل ارائه داده است انجام میدهد. همینطور میتواند یک رابطه قوی بین فلاتر و کتابخانهها و SDKهایی باشد که برای سیستمهای اندرویدی و iOS ارائه شدهاند و امکانات مربوط به آنها را هم برای این سیستم پیادهسازی کرده است.
در مورد این موضوع که وظیفه اصلی موتور فلاتر چیست میتوانیم بگوییم که این موتور قرار است کتابخانههای هستهی (Core) فلاتر، پلاگینهای اصلی و ابزارهای لازم برای شروع به کار موتور Dart را راهاندازی کند.
کتابخانه اصلی یا Foundation Library
یکی از بزرگترین پشتوانههایی که فلاتر دارد یک کتابخانه بزرگ به نام Foundation Library است که برای Dart ارائه شده است و به نوعی اصلیترین بخش در بین سایر کتابخانههایی میباشد که فریمورک فلاتر از آنها استفاده میکند. کاری که این کتابخانه انجام میدهد این است که کلاشهای پایه و توابع مختلفی که برای ساخت برنامهها مورد استفاده قرار میگیرند را در اختیار برنامهنویس قرار میدهد.
از مهمترین کلاسها و توابع ارائه شده توسط این بخش میتوان به کلاسهای مربوط به راهاندازی APIها که از آنها برای برقراری ارتباط با سایر برنامهها استفاده میشود نام برد.
ویجتهای طراحی شده یا Design-Specific Widgets
یکی دیگر از ویژگیهای مهمی که میتوان در بین ویژگیهای اساسی فلاتر جای داد و آن را بهعنوان یک عامل قدرتمند معرفی کرد ویجتهایی هستند که میتوانند یک گروه کلی از امکانات طراحی را برای فلاتر فراهم کنند. در صورتی که بخواهیم بگوییم کار اصلی این ویجتها در فلاتر چیست باید گفت که در واقع این ویجتها همان متریالهای موردنیاز برای طراحی صفحات برنامهها و فرمهایی است که یک اپلیکیشن با آنها کار خواهد کرد.
در مورد اینکه انواع ویجتهای طراحی شده در فلاتر چیست باید دو دسته اصلی را نام برد:
- Material Designهای طراحی شده با استفاده از زبان طراحی Google که توسط همین شرکت ارائه شدهاند.
- ویجتهای Cupertino که در واقع رابط کاربری ارائه شده برای iOS آنها را منتشر کرده است.
شما بسته به برنامهای که در حال ساخت آن هستید بیشتر به کدامیک از این ماژولها نیاز دارد میتوانید ماژول موردنیاز خود را از بین آنها انتخاب کرده و آن را به کار بگیرید. به طور کلی میتوانیم بگوییم که فلاتر از نظر ویجتها یک کتابخانه قوی را دارد و برای طراحی یک برنامه در آن به مشکلی بر نمیخوریم.
همانطور که دیدیم چهار اصل کلی زبان برنامهنویسی قوی، موتور پردازشی قدرتمند برای فریمورک، کتابخانههای بزرگ و کامل و ویجتهای طراحی شده، مواردی هستند که میتوان آنها را بهعنوان یک پاسخ قاطع به این سوال که اصلیترین ویژگیهای فلاتر چیست ارائه کرد و میتوان گفت که هر فریمورکی که چنین ویژگیهایی داشته باشد یک فریمورک آیندهدار خواهد بود که ارزش کار کردن و آموزش را دارد.
بنا به روال معرفی هر فریمورکی، وقت آن رسیده است که این موضوع را بررسی کنیم که مزیت استفاده از فلاتر چیست؟ و چرا ما باید خود را با فریمورکی درگیر کنیم که تازه وارد این حوزه شده است؟ و معلوم نیست که قرار است به کجا برود و آیا اصلا پشتیبانی خواهد شد، و این موضوع که اصلا چرا باید خود را با زبان برنامهنویسی جدیدی درگیر کنیم؟ در ادامه به بررسی این سوال که مزایای فلاتر چیست خواهیم پرداخت.
مزایای فلاتر چیست؟
فلاتر مزیتهای زیادی را دارد که تا اینجا دیدیم نوشتن برنامهها برای همهی پلتفرمها و سیستم عاملها مهمترین آن است. در این قسمت میخواهیم سایر مزیتهایی که یک برنامهنویس میتواند با استفاده از این فریمورک بدست آورد را بررسی کنیم.
به طور کلی در پاسخ به اینکه مزایای فلاتر چیست؟ این موارد قابل معرفی و ارائه هستند:
افزایش سرعت در توسعه برنامهها
یکی از مهمترین و اصلیترین مواردی که میتوانیم به آن اشاره کنیم، بحث سرعت در پروژههای فلاتر است. در مورد فلاتر یک مزیت ویژه وجود دارد وقتی که یک برنامه تولید شود میتوان خروجیهای مختلف را از آن گرفت. به همین علت هم میتوان گفت که یک برنامه برابر با ساخت چند برنامه میباشد و مهمترین موردی که در اینجا پیش میآید بحث زمان است.
فلاتر از نظر زمان یک تکخال در آستین خود دارد و زمانی که برای سایر فریمورکها طول میکشد تا یک برنامه ساخته شود، برای فلاتر بهصورتی عمل خواهد کرد که با همین یک بار طراحی برای همهی فریمورکها خروجی داریم و در واقع یک گام جلوتر است. اگر به یک مدیر تیم برنامهنویسی چنین موضوعی گفته شود، مطمئنا به این مساله نه نخواهد گفت.
به طور کلی فلاتر از نظر سرعت یکی از فریمورکهای سریع به حساب میآید که قابلیت چند فریمورک بودن آن، باعث شده است که سریعتر هم باشد.
کاهش هزینههای تیم برنامهنویسی
یکی دیگر از مسائلی که همچنان مدیران را به استفاده از فلاتر ترغیب میکند بحث کاهش هزینهها است که میتوان گفت فلاتر توانسته است آن را از نصف کمتر هم کاهش دهد. وقتی روند ساخت یک برنامه و اپلیکیشن آغاز میشد، تا قبل از فلاتر تیمهایی به صورت مجزا روی ساخت وب سرور اپلیکیشن، ورژنهای اندرویدی و ورژنهای iOS و یا هر سیستم عامل دیگری شروع به کار میکردند، بدیهی است که این تیمها دستمزدهای خود را دارند و میتوان گفت که دستمزد برنامهنویسی که بتواند کار را حرفهای انجام دهد هم بالا خواهد بود. علاوه بر دستمزد باید هزینههایی که برای ماژولهای آماده مختلف و مواردی از این دست هم پرداخت میشود را در نظر داشته باشیم.
اما وقتی برای ساخت یک برنامه از فلاتر استفاده کنیم، ما صرفا یک تیم برنامهنویسی داریم و به صورت متمرکز به یک تیم حقوق پرداخت کرده و برای یک پلتفرم ماژول تهیه میکنیم. بدیهی است که هزینه تولید یک نرمافزار در این فریمورک میتواند به شدت کاهش پیدا کند. کاهش هزینهای که براساس یکی شدن تیمها و ادغام هزینههای جانبی ماژولها وجود دارد میتواند کمک بسیار خوبی به برنامهنویسان بکند تا از آنها برای کار خود استفاده کنند.
مورد دیگری که در اولین نگاه ممکن است خیلی بزرگ به نظر برسد اما واقعا یک عنصر حیاتی در کاهش هزینهها به شمار میرود، رایگان بودن تمامی ابزارها است. به این صورت که شما هر چیزی را که نیاز داشته باشید میتوانید به صورت کاملا رایگان از آن استفاده کنید و نیازی نیست که نگران هزینهای برای فریمورکها و کتابخانهها و حتی IDEها باشید. تمامی سیستمهایی که با فریمورک فلاتر کار میکنند آن را به صورت رایگان ارائه میکنند و هیچ چیزی در مورد کار با فلاتر وجود ندارد که برای تیم برنامهنویسی و روند پروژه هزینهبر باشد.
این کاهش هزینه در واقع یک افزایش سوددهی فوقالعاده برای تیم خواهد بود. شاید روش ساخت سادهتر شود، اما ساخت برنامه ارزانتر نمیشود و میتوان گفت که این کاهش هزینهها در واقع یک افزایش سوددهی فوق العاده است.
انعطاف در طراحی رابط کاربری
افزایش سرعت و کاهش هزینهها جزو مواردی بودند که بیشتر به مدیران و اعضای رده بالا در تیم مربوط میشدند. اگر بخواهیم این سوال را مطرح کنیم که در بین امکانات ارائه شده برای برنامهنویسان مزیت فلاتر چیست میتوانیم به موراد زیاد دیگری اشاره کنیم که یکی از آنها قابلیت خوب و منعطفی است که فلاتر برای طراحی رابط کاربری در اختیار برنامهنویسان قرار میدهد.
اگر با سایر پلتفرمهای برنامهنویسی آشنایی داشته باشید این موضوع را میدانید که در بعضی از آنها شما امکانات زیادی برای ساخت و طراحی رابط کاربری برنامهی خود ندارید. در این مورد باید گفت که فلاتر برای طراحی یک رابط کاربری هیچ چیزی کم نگذاشته است. البته باید به این مورد هم اشاره کنیم که ماهیت زبان برنامهنویسی Dart از ابتدا بر اساس این موضوع پایهریزی شده بود که یک زبان برای طراحی رابط کاربری و بخش فرانتاند باشد.
فلاتر تمام امکاناتی که یک برنامهنویس برای شکوفایی خلاقیت خود لازم دارد را در اختیار وی قرار خواهد داد.
بازدهی بالا و عملکرد خوب
خیلی از فریمورکها هستند که با امکانات خوبی جلو میآیند و وقتی مزایای آنها را میشماریم با یک لیست پر و خوب مواجه هستیم، ولی در عمل هزاران ایراد در کار ساخت برنامه با این فریمورکها وجود دارد و وقتی جلو برویم و بازدهی را ببینیم متوجه این موضوع خواهیم شد که داستان از چه قرار است. اما در مورد اینکه این اوضاع برای فلاتر به چه صورت میباشد باید بگوییم که در اینجا از این ایرادات خبری نیست.
اگر نظر برنامهنویسان و متخصصینی که برای طراحی برنامهها و اپلیکیشنهای مختلف از این فریمورک استفاده میکنند را جویا شوید متوجه خواهید شد که اوضاع از چه قرار است. در این پلتفرم خبری از موارد دستوپاگیر نیست و میتوان آن را به عنوان یک مورد خوب معرفی کرد.
ویجتهای جذاب
یکی دیگر از موارد کلیدی و مهم در فلاتر وجود ویجتهای آمادهای است که میتوان از آنها برای طراحی رابط کاربری به صورت کاملا حرفهای استفاده کرد. در واقع میتوانیم بگویم که این ویجتها کار طراحی را بسیار ساده میکنند.
از آنجا که فلاتر سن چندانی ندارد و این ویجتها تازه ساخته شدهاند، میتوان گفت که این ویجتها بر اساس جدیدترین متدهای طراحی ارائه شدهاند و در واقع تعدادی المان بیکیفیت و قدیمی و از مد افتاده نیستند. خیلی از تیمهای قدرتمند طراحی این ویجتها را ارائه میکنند که از نظر کیفیت و زیبایی در بالاترین ردهها قرار دارند. پس شما میتوانید با استفاده از فریمورک فلاتر به صورت کامل از این ویجتها استفاده کرده و آنها را پیادهسازی کنید.
سادگی در یادگیری
یکی دیگر از مزایای اصلی که این زبان دارد با وجود اینکه جدید است و تازه ارائه شده است این است که هم داکیومنتهای خوبی دارد و هم اینکه یادگیری آن ساده است و دردسر چندانی برای کاربران خود ایجاد نمیکند. همانطور که در بخشهای قبلی هم به این موضوع اشاره کردیم، دارت یک زبان C-Style است. به این معنی که سینتکس آن شبیه به زبان ++C بوده که این ویژگی خیلی از زبانهای دیگر است و عموم برنامهنویسان با آن راحت هستند.
در مورد منطق برنامه هم باید گفت که تفاوت چندانی با سایر زبانها ندارد و رویهمرفته میتوانیم بگوییم که برای یادگیری مورد خاصی وجود ندارد که برای ما مشکلساز شود، البته بعضی از برنامهنویسان با آن مشکلاتی دارند و این زبان هنوز خود را در نظرسنجیها ثابت نکرده است. اما باید گفت که خیلی از موارد مربوط به این موضوع در حال برطرف شدن است و دارت را میتوان یک زبان کاملا جدید معرفی کرد که در حال پیشرفت است.
بازدهی نزدیک به برنامههای نیتیو
یکی دیگر از مواردی که ضروری است، قابلیت تولید برنامههای قدرتمند است. شما میتوانید با فریمورکهای مختلف برنامههای زیادی را برای هر فریمورکی تولید کنید، اما این موضوع که آیا این برنامهها میتوانند مانند برنامههای نیتیو عمل کنند یا نه، یکی از موضوعات مهم است.
به عنوان مثال وقتی شما با استفاده از زبانهای وب مانند جاوا اسکریپت، HTML و CSS یک برنامه را ارائه میکنید که روی هر سیستم عامل قابل اجرا باشد، باید این موضوع را در نظر داشته باشید که این برنامه به هیچ عنوان نمیتواند مانند برنامههایی که به صورت نیتیو نوشته میشوند عمل کند. بهعنوان مثال یک برنامه نوشته شده با JS که روی موبایلهای اندرویدی اجرا میشود، افت عملکردی کاملا محسوسی نسبت به یک برنامهای دارد که با جاوا نوشته شده است.
اما در مورد فلاتر اوضاع کاملا متفاوت است. فلاتر برخلاف زبانهای وب و سایر زبانهای جهانی که بر روی همهی سیستم عاملها اجرا میشوند از یک کامپایلر فوقالعاده قوی برخوردار است که میتواند به راحتی با معماری ماشینهای مختلف و سیستم عاملهای متعدد سازگار شده و برنامه را خیلی نزدیک به یک برنامهی نیتیو اجرا کند، به این صورت که وقتی شما یک برنامه نوشته شده با فلاتر را با یک برنامه نیتیو مقایسه کنی، به هیچ عنوان متوجه تفاوت آنها نخواهید شد.
انجمنهای برنامهنویسی در حال رشد
یک مورد مهم در هر زبان برنامهنویسی انجمنهای مختلف در مورد آن است. وقتی یک زبان برنامهنویسی برنامهنویسانی را داشته باشد که آن را رشد و توسعه دهند و یا حتی از آن استفاده کنند این زبان پیشرفت کرده و قابلیتهای جدیدی به آن اضافه میشود. فلاتر با وجود کم سابقه بودن نسبت به زبانهای دیگر، انجمنهای خود را تشکیل داده است و میتوان گفت که این انجمنها رشد خوبی را هم داشتهاند.
این مورد را هم باید در نظر گرفت که ملحق شدن به این انجمنهای تازه میتواند هر برنامهنویسی را به یک چهرهی مطرح در مورد این فریمورک تبدیل کند و این میتواند برای آینده کاری چنین برنامهنویسی یک نکتهی طلایی باشد.
معایب استفاده از فلاتر چیست؟
هر برنامه نرمافزاری در کنار تمام قابلیتهای خوب خود، همیشه چالشها و معایبی هم دارد و میتوانیم بگوییم که در علم کامپیوتر این یک اصل ثابت شده است. عوامل مختلفی مانند پایههای طراحی تا اندازه برنامه و کاری که میخواهد انجام دهد وجود دارند که میتوان گفت روی دردسرهایی که یک برنامه و فریمورک برای برنامهنویسان خواهد داشت و معایبی که برای کاربران نهایی خود دارد تاثیر میگذارند. عموما هر چه یک برنامه و یک فریمورک پیچیدهتر و بزرگتر باشد، معایب و چالشهایی که ایجاد میکند هم بزرگتر خواهد بود.
در رابطه با این موضوع که معایب فلاتر چیست باید بگوییم که فلاتر با اینکه فریمورکی پیچیده است و یک طیف گسترده از امکانات را ارائه میکند با این وجود به خاطر طراحی خوشساخت و امکانات خوبی که گوگل برای آن ایجاد کرده است میتوانیم بگوییم معایبی که دارد در سطح قابل قبولی قرار دارند که میشود آنها را به صورت کامل کنترل کرد.
برای پاسخ به این سوال که معایب و چالشهای به کار گرفتن فلاتر چیست، میتوان این موارد را معرفی کرد:
سنگین شدن برنامهها
یکی از موارد مهمی که باید در مورد فلاتر به خاطر داشت این است که برنامههایی که با استفاده از این فریمورک ساخته میشوند عموما برنامههایی سنگینی خواهند بود. این اتفاق به این دلیل میافتد که خیلی از کدهای موجود در این برنامه و هسته اصلی آن، به نحوی برنامهریزی شده که روی هر سیستم پردازشی قابل پیادهسازی باشد و از این رو نمیتوان از بهینهسازیهایی که هر سیستمی به صورت تخصصی برای خود انجام میدهد استفاده کرد. در واقع کدهای فلاتر یک کد عمومی و بزرگ است و همین موضوع باعث شده است تا برنامههای فلاتر کمی سنگینتر از بقیه برنامهها باشند.
نیاز به کدنویسی پایه و زیاد
یکی دیگر از مواردی که میتوان به نوعی آن را مرتبط به مورد قبلی دانست این است که برای طراحی یک برنامه ساده لازم است که حجم زیادی کدنویسی انجام گیرد و تمامی اقدامات پایه که ممکن است در فریمورکهای دیگر به صورت آماده ارائه شود، در این فریمورک باید به صورت دستی انجام شود. این موضوع حجم کد را بالا میبرد که نتیجه آن همان سنگینی برنامه خواهد بود و از آن مهمتر باعث میشود که کمی روند پروژه طولانی شده و زحمت برنامهنویسی زیاد شود.
وقتی برنامهنویسی بخواهد یک برنامه را با استفاده از این فریمورک پیادهسازی کند باید این موضوع را در نظر داشته باشد که تمامی اقدامات پایه را برای این کار انجام دهد و نمیتوان گفت که برنامهنویسی با فلاتر کاری سبک و کمزحمت است که بهراحتی میتوان با آن یک برنامه را برای چند پلتفرم ارائه کرد. در این رابطه باید گفت که کدنویسی زیادی برای برنامههای مختلف باید انجام گیرد.
پیچیدگیهای زبان دارت
مورد دیگری که باید در مورد فلاتر به آن توجه کرد این است که این سیستم در حال استفاده از یک زبان برنامهنویسی جدید است. همین موضوع میتواند کمی معادلات را به هم بزند و یک مدیر پروژه باید آن را در نظر داشته باشد. در این رابطه باید بگوییم که استفاده از زبان دارت برای برنامهنویسی میتواند پیچیدگیهایی داشته باشد که کمی ناملموس باشند. به هر حال زبانی که جدیدا ارائه شده است و نسبت به سایر زبانهای برنامهنویسی که جا افتادهاند و زوایای مختلف آنها بررسی شده است کمی بیشتر نیاز به کار کردن دارد و باید برای استفاده از آن با احتیاط بیشتری برخورد کرد.
دارت یک زبان پیچیده و جدید است که ممکن است خیلی از برنامهنویسان به آن علاقهای نداشته باشند یا برای آنها ناملموس باشد و همینطور هم هست. در حقیقت زبان دارت پیچیدگیهایی دارد که برای خیلی از برنامهنویسان به سختی قابل درک بوده و ممکن است برنامهنویسی که برای شما یک بازدهی خوب را با استفاده از زبانهای دیگر و در پلتفرمهای دیگر داشته است، نتواند همان بازدهی را با استفاده از فریمورک فلاتر از خود نشان دهد. از این رو شما با این تصور که فلاتر میتواند مسیر شما را کوتاه کند پروژه خود را آغاز کرده و با یک بازدهی پایین مواجه خواهید شد که میتواند مدت زمان ساخت پروژه را افزایش دهد.
در نظر داشته باشید که اگر میخواهید پروژهی خود را با استفاده از زبان برنامهنویسی فلاتر شروع کنید، ممکن است که درگیر این پیچیدگیها شده و بهتر است این موارد را حتما در زمانبندیها و ددلاینهای خود خصوصا برای بار اول در نظر داشته باشید.
در مورد اینکه این فریمورک چه رقبایی دارد و آیا فریمورک دیگری هم هست که بتواند چنینی سطحی از کار را برای ما انجام دهد، هنوز حرفی به میدان نیامده است. در ادامه مقاله راجع به اینکه وضعیت رقبای فلاتر چیست و کارهایی که آنها میتوانند انجام دهند را به صورت کامل توضیح خواهیم داد.
مقایسه فلاتر و سایر رقبا
وقتی که یک تکنولوژی در این دنیا ایجاد شود، سایر شرکتها و ارائهکنندگان نیز به دنبال آن به راه خواهند افتاد و باید گفت که در دنیای برنامهنویسی عموما انحصار بیمعنی است. در مورد تمامی این کارهایی که فلاتر برای ما انجام میدهد هم باید گفت که همین داستان صحیح میباشد و رقبای مختلف و زیادی برای فلاتر وجود دارند که میتوانند همین کارها را انجام دهند. البته باید گفت که وجود تاثیراتی که پشتیبانی حرفهای گوگل روی آن ایجاد کرده است در گسترش استفاده از آن و برنامههایی که با آن میتوان ساخت تاثیر بسیار زیادی گذاشته است و سطح آن را از رقبای خود بالاتر آورده است. اما در کل باید بگوییم که کار سایر رقبای فلاتر نیز به خوبی در حال دنبال شدن است.
اکثر این فریمورک ها جزو پروژههای تحقیقاتی در حال توسعه هستند اما از بین آنها میتوان به موارد کاربردی خوبی اشاره کرد. در صورتی که بخواهیم برترین رقبایی که فلاتر دارد را ارائه کنیم، به مقایسههای مختلفی نیاز داریم که هر کدام از آنها را بررسی خواهیم کرد.
مقایسه فلاتر و ریکت جی اس
مورد عجیبی که ممکن است در بررسیهای خود به آن برخورد کرده باشید این است که یک کتابخانه ساده که اصلا در بین فریمورک ها طبقهبندی نمیشود، توانسته است خود را به یک فریمورک همه کاره مانند فلاتر برساند. هر چند که ریکت حتی یک فریمورک هم نیست اما قابلیتهایی که برای ایجاد و ساخت کامپوننتهای UI دارد باعث شده است که بتوان از آن برای ساخت تمامی برنامههایی که فلاتر آنها را ایجاد میکند استفاده کرده و در این خصوص میتواند با فلاتر رقابت کند.
در نظر داشته باشید که وقتی بخواهیم به این سوال که رقبای فلاتر چیست پاسخ دهیم لازم است هر فریمورک و یا ابزاری که میتواند کارایی فلاتر را برای ما داشته باشد و به جای آن در یک پروژه مورد استفاده قرار بگیرد را بررسی کنیم و هدف ما این نیست که صرفا به فریمورک های همسطح آن بپردازیم. ابزار ریکت یکی از آن ابزارهایی است که خود را تا این اندازه بالا کشیده و در هر نوع از برنامهها؛ از برنامههای موبایل گرفته تا سیستمهای مدیریت محتوا میتواند ایفای نقش کند.
در مقاله ریکت چیست بهصورت کامل در مورد این کتابخانهی بزرگ جاوا اسکریپت و کاراییهایی که از خود نشان میدهد صحبت کردهایم و دیدیم که داستان به چه شکلی است. اما در صورتی که بخواهیم بگوییم اوضاع رقابت بین ریکت و فلاتر چیست باید گفت که کار با ریکت سادهتر بوده اما شما به فریمورکهای کمکی نیز نیاز پیدا خواهید کرد. هر چند که شما میتوانید بعضا یک برنامهی زیباتر و حرفهایتر را در مدت زمان کمتری با ریکت بسازید اما برای بکاند آن کار زیادی را پیش رو دارید و همینطور باید گفت که به دانش برنامهنویسی بیشتری نیاز خواهید داشت. در حالی که در فلاتر شما تنها فریمورک فلاتر را برای این کار نیاز دارید. البته از نظر زبان برنامهنویسی هر دوی آنها فرانت و بک را به صورت تکزبانه پیادهسازی میکنند که در این حالت ریکت بخاطر داشتن زبان محبوب و پرکاربرد جاوا اسکریپت از فلاتر جلوتر میباشد.
در نتیجه برای مقایسه فالاتر و ریکت باید گفت که فلاتر جامعتر و کاملتر است و با کار سرراست میتواند چند نسخه برنامه بسازد ولی ریکت در کار محبوبتر بوده و کار با آن راحت است در بکاندهای خود نیاز به کار بیشتری نسبت به فلاتر دارد.
مقایسه فلاتر و DevExpress
بدیهی است که وقتی گوگل زبان دارت را بر میدارد و برای خودش یک فریمورک همهکاره را راهاندازی میکند که پتانسیل در اختیار گرفتن ابتکار عمل در تمامی حوزههای برنامهنویسی را دارد، سایر غولهایی که تا دیروز خود را مالک این حوزه میدانستهاند هم دستبهکار میشوند. در مورد اینکه اوضاع رقابت DevExpress و فلاتر چیست باید گفت که این فریمورک یکی از مهرههای درشت مایکروسافت است که قرار است همان کاری که فلاتر با زبان دارت میکند را برای برنامهنویسانی که با ASP و #C انجام میدهند، انجام دهد و به طور کلی قرار است که هر چه که در بستر نرمافزاری Net Framework. و Net Core. ارائه میشود را به هم تبدیل کند و خروجیهای متعدد برای هر کدام ارائه کند.
کار کردن با این فریمورک میتواند برای برنامهنویسانی که با زبانهای مایکروسافتی آشنایی دارند و باید گفت که تعداد آنها اصلا کم نیست و خیلی از برنامهنویسان قدیمی و باسابقه را شامل میشوند میتوانند به جای مهاجرت به فریمورک جدید گوگل از آنچه که مایکروسافت برای آنها ارائه کرده است استفاده کنند. هرچند که به نظر میرسد این ایده هنوز برای مایکروسافت به آن صورت که برای گوگل واضح است شفاف نشده و این فریمورک کارایی چندانی را بهدست نیاورده است. اما در کل میتوان گفت که کار برنامهنویسان NET. را راه میاندازد.
مقایسه فلاتر و Selenium WebDriver
این مجموعه نیز مانند فلاتر میتواند ساخت کلیهی برنامهها را انجام داده اما تمامی برنامههایی که با سلنیوم ساخته میشوند باید به وسیله مرورگرها ایجاد شود. در واقع سلنیوم یک مجموعه کتابخانه برای ابزارهای تحت مرورگر میباشد که مجموعه کاملی را برای کاربران خود ایجاد میکند و خیلی از برنامهنویسان و حرفهایها در حوزهی IT از آن استفاده میکنند. مجموعه ابزار سلنیوم یک مجموعهی بسیار کمتر شناخته شده در مقابل فلاتر میباشد که باید از این نظر گفت فلاتر بسیار کارآمدتر عمل خواهد کرد.
در صورتی که عامل زبان فارسی و منابع آموزشی را هم در این مقایسه وارد کنیم باید گفت که نام سلنیوم در مقابل فلاتر رنگ میبازد و بهتر است که روی فلاتر تمرکز کنید تا به سراغ این فریمورک که همچنان در فاز توسعه خود قرار دارد بروید.
مقایسه فلاتر و سوئیفت (Swift)
در ابتدای کار باید گفت که سوئیفت یک زبان است و نه یک فریمورک! زبانی که از آن برای نوشتن برنامههای پلتفرمهای مختلف مک و اپل استفاده میشود و میتواند برنامههایی برای iPhone ،iPad، سیستم عامل مکینتاش و اپل واچ را با استفاده از آن توسعه داد. رویکردی که در سوئیفت وجود دارد این است که شما با برنامهنویسی یک برنامه بتوانید آن را در تمامی ابزارهایی که اپل ارائه میکند برنامهنویسی کنید و باید گفت که اوضاع برنامهنویسی خوب و بازار کار درستوحسابیای را هم برای خود ایجاد کرده است.
فریمورکی که برای استفاده از سوئیفت میتوانید به سراغ آن بروید Cocoa Touch نام دارد که تمامی این کارها را برای شما هندل کرده و میتواند خروجیهای مختلف را برای یک برنامه ایجاد کند. از نظر عملکرد میتوان گفت که سوییفت و فریمورک آن شباهتهای زیادی را به زبان دارت و فلاتر دارند. اما باید گفت که انحصاری که سوییفت برای ایجاد برنامههای مختلف روی آن ایجاد میکند کمی دردسرساز است. البته مکینتاش و آی او اس سیستمهایی هستند که اصطلاحا به آنها Unix Like گفته میشود و به این معناست که تمامی سیستمهایی که بر اساس پایههای یونیکس و یا لینوکسهای سازگار با آن مانند FreeBSD طراحی شدهاند هم میتوانند این برنامهها را اجرا کنند.
در واقع شما با یادگیری این زبان میتوانید برای طیف لینوکس بزرگی برنامهنویسی کنید، اما باید در نظر داشته باشید که کتابخانهها و ماژولهایی که در کتابخانههایی نظیر Cocoa Touch ارائه میشود برای آی او اس ارائه شده و ممکن است سایر لینوکسها پیشنیازهایی را نداشته باشند.
پس در مورد اینکه نتیجه مقایسه سویفت و فلاتر چیست باید گفت که هر دوی آنها امکانات خوبی را برای ساخت یک برنامه و خروجی گرفتن روی چند پلتفرم ساختاری مختلف در اختیار شما قرار میدهند اما فلاتر مجموعه گستردهتری را برای شما فراهم میکند و میتوان گفت که حوزه کاریای که سوئیفت دارد کمی محدودتر میباشد و ماژولهایی که برای آن ارائه شده صرفا به آی او اس محدود است.
مقایسه فلاتر و OutSystems
در بین تمامی رقبایی که تا الان برای فلاتر بررسی کردیم OutSystem عملیاتیترین و جدیترین رقیب آن است که کار خود را چند سالی است با یک سیستم یکپارچه و هیبریدی حرفهای شروع کرده است و سابقه طولانیتری در این زمینه دارد. البته باید گفت که OutSystem بیشتر یک سرویس است که شرکت OutSystem آن را ارائه میکند، نه یک فریمورک که به راحتی آن را روی سیستم خود بیاورید و با آن کار کنید.
در مورد اینکه این سیستم چیست و چطور کار میکند باید گفت در واقع یک سیستم طراحی برنامههای سازمانی بهصورت برنامههای موبایل و برنامههای تحت وب روی کلود است که یک رابط گرافیکی سطح بالا در اختیار کاربران قرار میدهد و برنامههای متعددی برای سازمانها در بستر کلود آن ایجاد شده و مورد استفاده قرار میگیرد. در واقع در اینجا یک برنامه در بستر خود OutSystem پیادهسازی و اجرا میشود که برای استفاده از آن هم نیاز به پرداخت هزینه است.
شاید برای یک توسعهدهنده این شرایط ایدهآل نباشند ولی باید گفت در عمل این شرکت توانسته رشد بسیار خوبی داشته باشد و به فروشهای بسیار بالایی دست پیدا کند که آن را یک استارتآپ مورد توجه شرکتهای برنامهنویسی کرده است. در مورد اینکه اوضاع مقایسه بین OutSystem و فلاتر چیست باید گفت که هر چند که OutSystem هم همین موارد را ارائه میکند اما نمیتوان آن را یک فریمورک دانست زیرا خیلی از جزئیات برنامهنویسی با این سیستم از دید ما پنهان بوده و همینطور نمیتوان خروجی را به صورتی که نیاز داشت از روی آن دانلود کرد و شما باید سرویس را تحت میزبانی OutSystem نگه دارید. پس باید گفت که برنامهای که روی این بستر ساخته شود تابعی از قوانین آن بوده و استقلال ندارد. از طرفی هزینههای نگهداری هم میتواند در مرور زمان از هزینهی برنامههای ساخته شده با فلاتر بالاتر برود.
نتیجهگیری
در این مقاله دربارهی اینکه فلاتر چیست و چه کاری را برای ما انجام خواهد داد، صحبت کردیم و دیدیم که چگونه میتوان با به کارگیری این فریمورک برای هر پلتفرم و سیستم عاملی برنامه نوشت. شاید این سوال برای شما پیش آمده باشد که معمولا فریمورکها و برنامههای کراس پلتفرم روی یک پلتفرم که به نوعی نیتیو است قویتر از بقیه عمل میکنند. اما اگر بخواهیم بگوییم که این وضعیت در مورد فریمورک فلاتر چیست میتوانیم بگوییم که برنامههای نوشته شده با آن، روی تمامی پلتفرمهایی که برای آنها خروجی گرفته شود کار میکند.
کلا میتوان استفاده از این فریمورک را یک کار پر مزیت معرفی کرد و از آنجا که لازم نیست دو تیم برنامهنویسی بهصورت مجزا روی ورژنهای مختلف از دو فریمورک کار کنند، یک گزینه کمهزینه به شمار میرود، همینطور سرعت تولید نرم افزار نیز در آن بالا رفته و میتوان گفت که یک گزینهی خوب و محبوب برای مدیران است. در مورد اینکه برنامهنویسی با آن چطور خواهد بود هم باید بگوییم که کاری ساده است و یادگیری آن انرژی و وقت زیادی لازم ندارد، و جوامع کاربری آن نیز در حال پیشرفت هستند.