آموزش RxJava

دسته بندی: آموزش جاوا (Java)

آموزش rxjava

آنچه در این صفحه می خوانید:

معرفی RxJava

RxJava یک اجرای VM جاوا است که از Reactive Extension استفاده می کند. در اصل این کتابخانه است که به شما کمک می کند با استفاده از جریان های قابل مشاهده برنامه های ناهمزمان و مبتنی بر رویداد را تهیه کنید. در RxJava همه چیز در یک جریان داده واکنشی است.

هنگامی که مشترک (Observer) شروع به گوش دادن به آن می کند، بخشی از داده ها را منتشر می کند. بلوک های ساختمان اصلی RxJava قابل مشاهده و ناظر هستند. می توانید جریان داده ناهمزمان را در هر موضوع ایجاد کنید. که توسط برنامه ریزان امکان پذیر است. به طور خلاصه RxJava = قابل مشاهده + برنامه ریز + Observer.

این الگوی مشاهده گر را برای پشتیبانی از توالی داده ها / رویدادها گسترش و به اپراتورهایی اضافه می کند، که این امکان را می دهد توالی ها را به صورت اعلانی تنظیم کنید، در حالی که نگرانی هایی راجع به مواردی مانند نخ سطح پایین، هماهنگ سازی، ایمنی موضوع و ساختار داده های همزمان حذف می کند.

چرا RxJava را در نظر می گیریم؟

RxJava توسعه را آسان می کند زیرا باعث افزایش سطح انتزاع در اطراف threading می شود. یعنی، به عنوان توسعه دهنده، دیگر لازم نیست نگران جزئیات نحوه انجام عملیاتی باشید که باید در موضوعات مختلف اتفاق بیفتد. این امر جذاب است زیرا درست کردن موضوع چالش برانگیز است و در صورت عدم اجرای صحیح، می تواند باعث اشکال زدایی و رفع برخی از سخت ترین اشکالات شود. واضح است که این بدان معنی نیست که RxJava ضد گلوله است و هنوز درک این مسئله که در بک اند اتفاق می افتد مهم است. با این حال، RxJava قطعاً می تواند زندگی شما را آسان تر کند.

ویژگی های RxJava

کاربران انتظار داده های real-time را دارند. آنها اکنون پست خود را می خواهند. می خواهند بلیط آنلاین خود را اکنون دریافت کنند. برنامه وب آنها باید پاسخگو باشد. شما می خواهید وقتی آماده شد نتیجه را به سمت شما سوق دهد. حتی بهتر، هنگام کار با مجموعه های نتایج، می خواهید نتایج فردی را دریافت کنید زیرا آنها آماده هستند. توسعه دهندگان ابزارهایی برای فشار داده ها دارند، این کار ساده است. توسعه دهندگان برای واکنش به فشار داده ها به ابزارهایی نیاز دارند.

Rx ابزاری قدرتمند است که می تواند مسئله را با سبکی اعلانی زیبا حل کند. Rx با برنامه نویسان کاربردی آشنا است. Rx چندین مزیت دارد:

  • Unitive:

کوئری انجام شده در Rx به همان سبک مانند برنامه نویسی تابعی، مانند جریان های جاوا انجام می شود. در Rx، تحولات سبک تابعی در جریان رویدادها استفاده می شود.

  • قابل توسعه:

RxJava را می توان با عملگرهای سفارشی گسترش داد. RxJava تمام قابلیت توسعه را ارائه می دهد.

  • اعلانی:

تحولات عملکردی به شیوه اعلامی خوانده می شوند.

  • Composable:

اپراتورهای Rx می توانند برای تولید عملیات پیچیده تر ترکیب شوند.

  • تحول گرا:

اپراتورهای Rx می توانند یک نوع داده را به دیگری تبدیل کنند، و در صورت نیاز جریان ها را کاهش دهند، نقشه برداری یا گسترش دهند.

مزایای استفاده از RxJava

  • جریان های ناهمزمان

شما باید یک درخواست به پایگاه داده ارسال کنید، و سپس بلافاصله باید دریافت پیام و تنظیمات را شروع کنید. پس از اتمام همه چیز، به نمایش پیام خوش آمدید نیاز دارید.

  • رویکرد تابعی

اگر با برنامه نویسی کاربردی، به ویژه با مفاهیم نقشه و فشرده آشنایی داشته باشید، اداره کردن RxJava برای شما راحت تر خواهد بود. می توان گفت برنامه نویسی کاربردی شامل استفاده فعال از توابع به عنوان پارامترها و همچنین نتایج در توابع دیگر است. به عنوان مثال، نقشه تابعی از مرتبه بالاتر است که در بسیاری از زبان های برنامه نویسی استفاده می شود. برای هر عنصر موجود در لیست اعمال می شود، لیستی از نتایج را برمی گرداند.

  • ذخیره سازی آسان می شود.

قطعه کد بعد از موفقیت در اولین بار، از روش حافظه پنهان استفاده می کند.

  • اپراتورهایی با زمان بند

اپراتورهای متنوعی وجود دارد که برای عملکرد نیاز به تعیین زمان بند دارند. در عین حال، آنها روش های اضافه بار خود را دارند که از ()computation() ،delay به عنوان زمان بندی استفاده می کنند.

  • استفاده از آبجکت

با کار با Objects باید توجه داشته باشید که بطور پیش فرض توالی تغییرات داده ارسال شده به موضوع onNext در همان موضوع اجرا خواهد شد (پیاده سازی می شود)، که برای فراخوانی از روش ()Next استفاده می شد، تا مشاهده گر عملگر در این دنباله ظاهر نمی شود.

هنگامی که ما از Rx استفاده می کنیم، به ما کمک می کند:

  • بدون ایجاد کلاس های حافظه پنهان، حافظه پنهان را ذخیره کنید.
  • ترکیب دریافت درخواست و پردازش نتایج و خلاص شدن از استاندارد AsyncTask
  • کاهش نشت حافظه 90٪
  • بهینه سازی کد برای افزایش پاسخ برنامه
  • روش های ساده تر برای ترکیب

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

مثال RxJava

محاسبات پس زمینه ساده:

یکی از موارد استفاده رایج برای RxJava اجرای برخی محاسبات، درخواست شبکه بر روی موضوع پس زمینه و نمایش نتایج (یا خطا) در موضوع UI است:

import io.reactivex.rxjava3.schedulers.Schedulers;

Flowable.fromCallable(() -> { Thread.sleep(1000); // imitate expensive computation return "Done"; }) .subscribeOn(Schedulers.io()) .observeOn(Schedulers.single()) .subscribe(System.out::println, Throwable::printStackTrace);

Thread.sleep(2000); // <--- wait for the flow to finish

این سبک از روش های زنجیر زدن به یک fluent API گفته می شود که شبیه به الگوی سازنده است. با این حال، انواع واکنشی RxJava تغییر ناپذیر است. هر یک از روش های متداول، Flowable جدید با رفتار اضافه شده را برمی گرداند برای مثال، نمونه را می توان به شرح زیر بازنویسی کرد:

Flowable<String> source = Flowable.fromCallable(() -> {
    Thread.sleep(1000); //  imitate expensive computation
    return "Done";
});

Flowable<String> runBackground = source.subscribeOn(Schedulers.io());

Flowable<String> showForeground = runBackground.observeOn(Schedulers.single());

showForeground.subscribe(System.out::println, Throwable::printStackTrace);

Thread.sleep(2000);

به طور معمول، می توانید محاسبه ها یا blocking IO را از طریق subscribeOn به برخی thread دیگر منتقل کنید. پس از آماده شدن داده ها، می توانید از طریق ObserveOn در پیش نما یا GUI پردازش کنید.

آیا این نوشته را دوست داشتید؟
pluralsight-angular-denver-19-a-deep-dive-into-rxjs-subjects

دوره Denver '19 انگولار: بررسی عمیق RxJS Subjects


در این دوره، Michael Hladky و Jan-Niklas Wortmann نحوه استفاده از موضوعات برای حل مشکلات چندپخشی، پیاده سازی حافظه پنهان، نگهداری مشترکان و پیاده سازی...

1399/09/26 814 بازدید
pluralsight-reactive-programming-in-java-12-with-rxjava-2

برنامه نویسی واکنش گرا در Java 12 با RxJava 2


در این دوره، شما توانایی پیاده سازی تکنیک های برنامه نویسی واکنش گرا برای استفاده کامل تر از پردازنده چند هسته ای کامپیوتر مدرن را کسب خواهید کرد. در ...

1399/09/19 1118 بازدید
pluralsight-droidcon-boston-19-finite-state-machines-to-the-rescue-get-complex-app-flows-under-control

دوره Droidcon Boston '19: ماشین های حالت متناهی در Rescue: کنترل جریان های پیچیده برنامه


ما از Kotlin و RxJava پایه برای ایجاد و تولید یک ماشین حالت متناهی عمومی استفاده خواهیم کرد که به ما امکان می دهد منطق حالت و UI را به خوبی جدا کنیم. ...

1399/09/03 835 بازدید
pluralsight-droidcon-boston-19-asynchrony-in-kotlin-how-you-can-choose-between-using-rx-or-using-coroutines

دوره Droidcon Boston '19: غیرهمزمانی در کاتلین: انتخاب بین Rx و استفاده از کوروتین ها


زمان آن فرا رسیده است که اندیشیدن به معماری برنامه اندروید خود را شروع کنیم. ما در این سخرانی، گزینه ها را برای دو نامزد محدود می کنیم. مورد اول فریمو...

1399/09/01 767 بازدید
pluralsight-droidcon-boston-19-achieving-fully-reactive-code-using-both-livedata-and-rxjava

دوره Droidcon Boston '19: دستیابی به کد کاملا واکنشگرا با LiveData و RxJava


در این سخنرانی، بررسی خواهیم کرد که برنامه نویسی واکنشگرا و تاریخچه آن چیست. سپس به روش هایی که جامعه Android از تکنولوژی های واکنشی استفاده کرده است ...

1399/08/12 711 بازدید
linkedin-rxjava-design-patterns-for-android-developers

آموزش RxJava: الگوهای طراحی برای توسعه دهندگان اندروید


در این دوره ی پروژه محور، مدرس دوره به شما درباره ابعاد مهم RxJava آموزش می دهد تا از الگوهای طراحی ساده در برنامه نویسی واکنش گرا استفاده کند. همچنین...

1398/12/26 5437 بازدید زیرنویس دارد
technics-publications-android-reactive-programming-with-rxjava

آموزش برنامه نویسی واکنش گرا در اندروید با RxJava


RxJava تبدیل به مهم ترین مهارت برای توسعه اندروید است. RxJava، ماشین مجازی جاوا Reactive Extension را پیاده سازی می کند. در این مجموعه ویدیویی چهار کل...

1397/07/19 4161 بازدید
treehouse-rxjava

آموزش RxJava


در این آموزش تصویری برنامه نویسی واکنش پذیر Java با RxJava را فرامیگیرید.مدرس این دوره شما را با مفاهیم و پیاده سازی RxJava در برنامه هایتان آشنا می س...

1397/04/14 4243 بازدید
برنامه-نویسی-واکنش-پذیر-java-با-rxjava

برنامه نویسی واکنش پذیر Java با RxJava


در این آموزش تصویری برنامه نویسی واکنش پذیر Java با RxJava را فرامیگیرید. این دوره آموزشی محصول موسسه Pluralsight می باشد. سرفصل های دوره: مفاهی...

1394/12/27 3389 بازدید