این روزها میتوانیم ببینیم که توسعه اپلیکیشنهای موبایل با چه سرعتی در حال پیشرفت است. کافیست یک سر به اپ استورهایی مانند گوگل پلی و اپل بزنید تا تعدد اپلیکیشنها را ببینید. مشکلی که در توسعه اپلیکیشنهای موبایل وجود دارد این است که باید دو اپلیکیشن برای اندروید و iOS به صورت جداگانه توسعه داده شود. برای اینکه تا حد زیادی این مشکل حل شود و توسعه هر دو اپلیکیشن در یک پروژه و با کد کمتر و اشتراک بیشتر کد انجام شود، توسعه اپلیکیشنهای کراس پلتفرم توسط تکنولوژیهای مختلف شکل گرفت. اکنون تکنولوژیهای موفقی مانند Flutter و React Native توسعه دهندگان بسیاری را به خود جذب کردهاند. اینکه ما توسعه دهندگان کدام تکنولوژی را برای توسعه اپلیکیشنهای کراس پلتفرم انتخاب کنیم، بسیار مهم است. در این مقاله قصد داریم تکنولوژی جدید KMM را با Flutter مقایسه کنیم و بهترین تکنولوژی کراس پلتفرم را انتخاب کنیم. در مقاله قبل در رابطه با اینکه کاتلین مولتی پلتفرم موبایل (KMM) چیست، صحبت کردیم. در این مقاله قصد داریم بررسی کنیم که فلاتر بهتر است یا کاتلین (KMM)؟
با ما همراه باشید.
فهرست مطالب
کاتلین چند پلتفرمی موبایل (KMM) چیست؟
همانطور که در مقاله قبل توضیح دادیم، Kotlin Multiplatform Mobile یک SDK بر اساس KMP برای توسعه همزمان اپلیکیشن Android و iOS است و میتوان با آن منطق را بین هر دو پلتفرم به اشتراک گذاشت. به کمک KMM میتوانید کدهای مشترک را در یک ماژول Shared قرار دهید و از آن برای اشتراک کد بین هر دو اپلیکیشن استفاده کنید. قسمت اندروید پروژه از کامپایلر Kotlin/JVM برای ساخت خروجی استفاده میکند و بخش iOS پروژه از کامپایلر Kotlin/Native استفاده میکند. در واقع این دو کامپایلر بخشهایی از KMP هستند که این SDK از هر کدام برای ساخت خروجی متناسب با پلتفرم هدف استفاده میکند.
برای خواندن اطلاعات بیشتر در این رابطه میتوانید پست "کاتلین چند پلتفرمی برای موبایل (KMM) چیست؟" را بررسی کنید.
مزایای کاتلین (KMM)
- اپلیکیشنهای KMM کاملا Native برای هر پلتفرم توسعه داده میشود
- توسعه دهندگان اندروید به راحتی میتوانند نسخه iOS را نیز برای اپلیکیشن خود توسعه دهند و تنها نیاز به اطلاعات بسیار کمی برای توسعه بر روی پلتفرم iOS دارند
- توسعه رابط کاربری (UI) به صورت جداگانه برای هر پلتفرم انجام میگیرد
- استفاده از کد مشترک برای توسعه اپلیکیشنها باعث کم شدن حجم بسیاری از کدهای مشترک شده و یافتن ایرادات را نیز راحتتر میکند
- هم اکنون در حال پشتیبانی توسط تیم گوگل و Jetbrains است
معایب کاتلین (KMM)
- KMM هم اکنون در نسخه آلفا است و به زودی نسخه بتا منتشر خواهد شد. بنابراین هنوز نسخه پایدار برای استفاده عمومی منتشر نشده است. بنابراین ممکن است استفاده از KMM، اپلیکیشن شما را در آینده دستخوش تغییراتی کند. البته هم اکنون شرکتهای معروفی مانند Netflix و VMware از این تکنولوژی برای توسعه اپلیکیشنهای موبایل خود استفاده میکنند و نگرانی زیادی در این مورد وجود ندارد.
بیشتر بخوانید: Coroutines در کاتلین چیست و چه کاربردی دارد؟
فلاتر (Flutter) چیست؟
فلاتر گوگل هم اکنون یکی از روشهای ساخت اپلیکیشنهای کراس پلتفرم است. ایده فلاتر این است که یک اپ بنویسید و آن را همه جا اجرا کنید. در واقع شما یک کد بیس دارید و آن از آن میتوانید هر دو خروجی iOS و Android را بگیرید.
بزرگترین مزیت فلاتر این است که با آن میتوانید رابطهای کاربری بسیار جذابی را بسازید؛ شما میتوانید تقریبا هر نوع انیمیشن و جذابیت بصری را با آن بسازید. خروجی بر روی هر دو پلتفرم اندروید و آی او اس به یک شکل نمایش داده خواهد شد و دیگر نیازی به نوشتن کدهای جداگانه برای یک طراحی خاص نیست. ساخت رابط کاربری نیز در فلاتر با سرعت زیادی انجام میگیرد. همچنین بسیاری از لایههای از پیش تعریف شده میتواند کار شما را آسان کند و سریعتر به چیزی که در ذهنتان است، برسید. در مدت کوتاهی که فلاتر معرفی شد، توسعهدهندگان بسیاری علاقهمند شدند که از فلاتر برای توسعه اپلیکیشنهای خود استفاده کنند.
مزایای فلاتر (Flutter)
- استفاده از یک Codebase و دریافت خروجی اندروید و iOS از آن
- امکانات عالی برای ساخت UI/UX با پرفورمنس بالا و جذاب
- توسعه اپلیکیشنها با سرعت بالا و در زمان کمتر
- قابلیت مشاهده سریع تغییرات در زمان دریافت خروجی و امکان رفع عیب سریع اپلیکیشنها
- پشتیبانی گوگل از این تکنولوژی
معایب فلاتر (Flutter)
- حجم بسیار زیاد اپلیکیشنهای ساخته شده با فلاتر
- وابستگی بیش از حد Flutter به جامعه برنامهنویسان خود برای توسعه امکانات Native پلتفرم اندروید یا iOS
- زبان برنامهنویسی Dart محبوبیت زیادی ندارد و یک زبان مدرن نیست و امکانات محدودی دارد.
مقایسه فلاتر (Flutter) با کاتلین مولتی پلتفرم موبایل (KMM)
همانطور که گفته شد، ایده فلاتر این بود که یک اپلیکیشن بنویسید و آن را همه جا اجرا کنید؛ که همین کار را هم انجام میدهد اما برای اپلیکیشنهای ساده انتخاب مناسبی است و نمیتوان از آن برای توسعه هر نوع اپلیکیشنی به دلیل محدودیتهای آن استفاده کرد. بزرگترین مشکل فلاتر این است که ممکن است برخی پلاگینهایی که بیشتر با محیط Native آن پلتفرم در ارتباط هستند، وجود نداشته باشند و نیاز است که پلاگینها توسط جامعه برنامهنویسان فلاتر نوشته شود. این یک ضعف بزرگ است زیرا به جامعه (Community) برنامهنویسان خود متکی است و باید پلاگینها در محیط نیتیو (Native) برای فلاتر توسط افرادی توسعه داده شود وگرنه به مشکل خواهید خورد. همچنین مسئله دومی که آزار دهنده است، استفاده از زبان برنامهنویسی دارت (Dart) برای توسعه اپلیکیشن است. متاسفانه این زبان نسبت به زبان مدرنی مانند کاتلین امکانات بسیار کمتری را در اختیار توسعه دهنده قرار میدهد. بنابراین در مقایسه دو زبان کاتلین (Kotlin) یا دارت (Dart) قطعا کاتلین بهتر است.
حال ایده KMM ساخت اپلیکیشن کاملا Native به کمک استفاده از کدهای مشترک دو پلتفرم است؛ با این روش که کدها و بخشهای مشترک اپلیکیشن (مانند درخواستهای شبکه، استفاده از دیتابیس، ذخیره دیتا و...) که باید چندین بار نوشته شوند را یکبار بنویسید و از آن در هر دو اپلیکیشن استفاده کنید. بنابراین از نوشتن کدهای تکراری جلوگیری میکند. مسئلهای که در مقایسه با فلاتر وجود دارد این است که سرعت توسعه اپلیکیشن در روش KMM به Flutter نمیرسد و فلاتر برای توسعه اپلیکیشنهای کوچک کاربرد بیشتری دارد.
ممکن است به این دوره علاقهمند باشید: دوره رایگان برنامهنویسی کاتلین از صفر
چه زمانی از کاتلین مولتی پلفترم موبایل (KMM) استفاده کنیم؟
- هم اکنون اپلیکیشن اندرویدی توسط اندروید استودیو یا IntelliJ IDEA آماده شده باشد
- زمانی که قصد دارید اپلیکیشن شما 100% نیتیو طراحی شود و یا قصد استفاده از امکانات نیتیو را در اپلیکیشن خود دارید
- زمانی که بیشترین اهمیت کدهای مشترک دارد که قرار است آن را در هر دو اپلیکیشن استفاده کنید
- زمانی که نیاز باشد از امکاناتی مانند مولتی تردینگ و یا سرویسهای پس زمینه استفاده کنید
ممکن است به این دستهبندی علاقهمند باشید: دورههای برنامهنویسی اندروید
چه زمانی از فلاتر (Flutter) استفاده کنیم؟
- زمانی که تیم شما کوچک است و افراد زیادی را برای توسعه سرویس خود ندارید
- منابع، بودجه و زمان محدود باشد
- قصد تولید رابط کاربری جذابی داشته باشیم که دقیقا بخواهیم بر روی هر دو سیستم عامل به یک شکل نمایش داده شود
- یک اپلیکیشن سادهای داشته باشیم که قرار بر انجام کارهای رایجی مانند تعامل با شبکه به کمک API، کار با دیتابیس و... باشد و نیاز به کار با کدهای Native نداشته باشد
- بغیر از پلتفرمهای موبایل، بر روی پلتفرم دسکتاپ هم هدف گذاری کرده باشید
سخن پایانی
در پاسخ به سوال کاتلین یا فلاتر باید نیازهای خود را بررسی کنیم. هر دو تکنولوژی کاتلین و فلاتر در بحث کارایی و پرفورمنس بسیار خوب عمل میکنند اما باید با توجه به نیازهای خود انتخاب درست را انجام دهید.
- اگر برای شما اهمیت فقط مسائل ظاهری و رابط کاربری و تجربی UI/UX دارد و قرار نیست با امکانات Native خاص (مانند استفاده از وایفای، بلوتوث و...) سیستم عامل درگیر باشید و همچنین کارهای معمول و سادهای مانند کار با دیتابیس، دیتا و ارتباط با سرور به کمک API باشد، فلاتر میتواند گزینه مناسبی باشد.
- در صورتی که برای شما ساخت یک اپلیکیشن کاملا Native برای هر پلتفرم مهم است و همچنین بیشترین کیفیت ممکن خروجی اهمیت دارد، Kotlin Muliplatform Mobile انتخاب بسیار درستی است.