آموزش کوروتین – بخش اول (مقدمه)

آموزش کاتلین کوروتین

برنامه‌نویسی اسنکرون یا non-blocking یکی از مهم‌ترین بخش‌های برنامه‌نویسی است و یکی از راه‌های دستیابی به این مقصود در اندروید، استفاده از کوروتین (Coroutines) است.

چرا برنامه‌نویسی اسنکرون؟

در برنامه‌نویسی اندروید کدهایی که ما در اکتیویتی و یا فرگمنت ها می‌نویسیم در ترد UI انجام می‌شود و اگر قسمتی از کدها برای اجرا نیاز به زمان بیشتری داشته باشند، موجب فریز شدن برنامه می‌شود. در چنین حالتی ما باید آن بخش از برنامه‌را در یک ترد (Thread) دیگر اجرا کنیم. برای این کار می‌توانیم از کوروتین استفاده کنیم تا آن قسمت از برنامه را در یک ترد دیگر اجرا کرده و آن را مدیریت کنیم.

RX Java vs Coroutines

در زبان جاوا Rx Java به کمک ما می‌آمد و اجازه می‌داد که عملیات‌ها را در تردهای مختلفی ایجاد و مدیریت کنیم. اما چه تفاوتی میان این دو وجود دارد و ما باید کدام یک را انتخاب کنیم:

مزایا و معایب RX Java و کوروتین

RxJava استیبل‌تر است: از آنجایی که زمان زیادی از پیدایش این کتابخانه می‌گذرد، بیشتر تست شده و اشکالات آن تا حد زیادی برطرف شده است. در طرف دیگر کوروتین جدیدتر است و هنوز مشکلاتی دارد و اگر بخواهید به آن سوییچ کنید باید تمام اعضای تیم آن را به‌خوبی یاد بگیرند، همچنین قسمت‌های زیادی از برنامه دستخوش تغییرات اساسی می‌شود که این امری زمان‌بر و پرهزینه است.

RxJava با کاتلین نیز سازگار است: در حالی که نمی‌توانید از کوروتین در جاوا استفاده کنید. هرچند به‌دلیل کوچ اکثر برنامه‌نویسان اندروید از جاوا به کاتلین، این مسأله چندان مهم به نظر نمی‌رسد.

API کوروتین ساده‌تر است: یادگیری RxJava همیشه برای برنامه‌نویسان تازه‌کار سخت و گیج‌کننده بوده است. شما باید با Streaming type های زیادی از جمله: Observable, Flowable, Maybe, Single, Completable آشنا شوید. اما در کاتلین ما فقط با دو مفهوم flow و suspend functions سروکار داریم. در RxJava گاهی تعداد متدها به‌قدری زیاد، پیچیده و تو در تو می‌شود که فهم کدها بسیار سخت و امکان ایجاد باگ در آن زیاد می‌شود.

مدیریت DataLeak در RXJava بسیار سخت‌تر است: ‌مدیریت LifeCycle ها در کاتلین به مراتب آسان‌تر از RXJava است. در قسمت‌های بعدی بیشتر با این موضوع آشنا می‌شویم.

سرعت بالاتر کوروتین:  در بررسی‌ها و بنچمارک‌های انجام شده، کوروتین عملکرد بهتری از خود به جای گذاشته است.

در قسمت بعدی اولین پروژه خود با کوروتین را در اندروید استودیو ایجاد می‌کنیم و کمی با متدهای ساسپند (suspend) کار خواهیم کرد.

 

منابع:

https://kotlinlang.org/docs/coroutines-guide.html

https://blog.danlew.net/2021/01/28/rxjava-vs-coroutines

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *