RxJava یا Coroutines کدام یک را باید انتخاب کنید؟ (قسمت اول)
اجازه دهید در این مقاله شما را با یک تحلیل نظری در مورد کاربردهای RxJava و Coroutines در اندروید آشنا کنیم:
دنیای اندروید در سال 2017 با معرفی Kotlin به عنوان یک زبان پشتیبانی شده و رسمی توسعه اندروید در Google I/O تغییر کرد. و سپس، با انتشار یک نسخه پایدار از Kotlin Coroutines که باعث شد جابه جایی بزرگی از RxJava به Coroutines انجام شود، زیرا اندروید به یک فریمورک Kotlin-first تبدیل شد.
اندروید، که بر پایه جاوا و کاتلین است، در حال حاضر چندین ابزار برای کمک به نوشتن کدهای ناهمزمان(asynchronous) ارائه کرده است، اما اکثر آنها همه مشکلاتی که ممکن است یک برنامه نویس با آن مواجه شود را حل نمی کنند.
برای درک بیشتر این مقاله، باید با مفاهیم اولیه مانند برنامهنویسی غیر همزمان (Asynchronous) و واکنشگرا (Reactive Programming) آشنا باشیم.
برنامه نویسی غیرهمزمانی
برنامه نویسی ناهمزمان به برنامه نویس اجازه می دهد تا به کد دستور دهد تا چندین رویداد (event) یا دستورالعمل را اجرا کند، یعنی پردازش همزمان. اساساً، هنگامی که یک عمل ناهمزمان شروع می شود، ممکن است قسمت دیگری از برنامه به اجرا ادامه دهد. هنگامی که عمل به پایان می رسد، برنامه ممکن است با نتایجی نشان داده شود.
برنامه نویسی واکنش گرا
برنامه نویسی واکنش گرا الگوی کدی است که حول جریان داده ها و انتشار تغییر حالت متمرکز شده است. با توجه به این موضوع، باید بتوان جریان های داده های static یا dynamic را به راحتی در زبان های برنامه نویسی مورد استفاده بیان کرد و مدل اجرا تغییرات را از طریق جریان داده منتشر کند. به عبارت دیگر، جریانهای دادهای منتشر خواهند شد که توسط یک event منتشر شوند و آن تغییرات را به کامپوننت های دیگر منتشر میکنند که ممکن است برای دریافت دادهها ثبت شود.
این دو کتابخانه، RxJava و Coroutines، نوشتن برنامه های ناهمزمان را ساده می کنند.
کتابخانه Rx برای اندروید
Rx یک کتابخانه پیچیده با طیف گسترده ای از فانکشن های فراتر از ناهمزمانی است، و برنامه نویسی تابعی را به جای برنامه نویسی دستوری مد نظر قرار می دهد، که می تواند در اکثر زبان های برنامه نویسی بدون پشتیبانی اختصاصی پیاده سازی شود. اپراتورهای استاندارد RxJava ابزار بسیار رایجی است که برای تماس های ناهمزمان در توسعه اندروید استفاده می شود و جایگزین عالی برای توسعه ناهمزمان معمولی است.
با ظهور RxJava، بیشتر توسعهدهندگان با مفهوم Reactive آشنا شدند، اما Kotlin در نسخه جهانی اندروید بسیار موفق بود و در حال حاضر یکی از محبوبترین زبانها است. اخیراً قابلیتی به نام Coroutines معرفی کرده است که می تواند پروژه های شما را بدون Rx واکنش پذیر کند. کوروتین ها به سرعت به ثبات نزدیک می شوند. آنها قابلیت نوشتن کد مختصر و ناهمزمان را فراهم می کنند و به طور خاص در Kotlin برای اندروید در دسترس هستند.
Coroutines در اندروید
برنامه نویسانی که تجربه قبلی در توسعه تلفن همراه دارند تعجب خواهند کرد که آیا منطقی است که دانش و پیاده سازی Rx خود را با Coroutines جایگزین کنند.
نتیجه:
RxJava و Coroutines دو رویکرد متفاوت برای multithreading ارائه میکنند که شباهتهایی را به اشتراک میگذارند اما نه هر هدفی: RxJava کتابخانهای برای برنامهنویسی ناهمزمان است که از پارادایم های واکنشی پیروی میکند، در حالی که اهداف Coroutines سادهسازی برنامهنویسی ناهمزمان و همزمان است، نه به طور خاص واکنشپذیری اجباری.
دیدگاهتان را بنویسید