Semua orang berbicara tentang Reactive Programming dan Anda penasaran mempelajari hal baru yang di sebut Reactive Programming ini. Mungkin Anda pernah melihatnya menggunakan beberapa teknik tetapi Anda masih sedikit bingung. Pada artikel ini, kita akan mempelajari konsep dasar Reactive Programming.
Menurut wikipedia :
Reactive Programming adalah paradigma pemrograman yang berorientasi pada stream data dan penyebaran perubahan. Ini berarti bahwa harus memungkinkan untuk mengekspresikan stream data statis atau dinamis dengan mudah dalam bahasa pemrograman yang digunakan, dan bahwa model eksekusi yang mendasarinya akan secara otomatis menyebarkan perubahan melalui stream data.
Dengan kata sederhana, dalam pemrograman Reactive Programming stream data yang di pancarkan oleh satu komponen dan struktur dasar yang di sediakan oleh pustaka Reactive Programming akan menyebarkan perubahan tersebut ke komponen lain yang terdaftar untuk menerima perubahan data tersebut. Singkat cerita: Reactive Programming terdiri dari tiga poin kunci.
Kami akan membahas poin-poin ini secara rinci satu per satu.
Dapat di amati tidak lain adalah stream data. Observable mengemas data yang dapat di teruskan dari satu thread ke thread lainnya. Mereka pada dasarnya memancarkan data ecara berkala atau hanya sekali dalam siklus berdasarkan konfigurasinya. Ada berbagai operator yang dapat membantu observer untuk memancarkan beberapa data spesifik berdasarkan peristiwa tertentu, tetapi kami akan membahasnya di bagian yang akan datang.
Observer menghabiskan stream data dipancarkan oleh yang observable. Observer subscribe ke observable menggunakan metode subscribeOn() untuk menerima data yang dipancarkan oleh observable. Setiap kali observable memancarkan data, semua observer yang terdaftar menerima data dalam callback onNext(). Di sini mereka dapat melakukan berbagai operasi seperti mengurai respons JSON atau memperbarui UI. Jika ada kesalahan yang di lontarkan dari observable, observer akan menerimanya di onError() .
Ingatlah bahwa Reactive Programming adalah untuk pemrograman a sinkron dan kami memerlukan manajemen thread. Ada di mana jadwal datang ke dalam gambar. Penjadwal adalah komponen dalam Reactive Programming yang memberi tahu observable dan observer, di thread mana mereka harus di jalankan. Anda dapat menggunakan metode observasiOn() untuk memberi tahu observer, tentang thread mana yang harus Anda amati. Selain itu, Anda dapat menggunakan scheduleOn() untuk memberi tahu observable, di thread mana Anda harus menjalankan. Ada thread default utama yang di sediakan di Reactive ProgrammingJava seperti Schedulers.newThread() akan membuat latar belakang baru itu. Schedulers.io() akan mengeksekusi kode pada thread IO.
General Marble Diagram
Dalam pemrograman reaktif, kami memiliki tool fungsional yang memungkinkan untuk menggabungkan beberapa stream. Bersama-sama, ini adalah pemrograman fungsional.
Pemrograman fungsional berguna saat kita ingin memfilter stream untuk mendapatkan peristiwa tertentu yang ingin kita ketahui. Berbagai tool juga memungkinkan kita untuk memetakan nilai data antar stream.
Penjelasan singkat tentang stream adalah urutan peristiwa yang terjadi secara berurutan dari waktu ke waktu. Stream memberi kita nilai, kesalahan, dan sinyal lengkap. Dengan itu, kita bisa memutuskan apa yang terjadi selanjutnya. Ketika stream diamati atau di dengarkan, peristiwa yang kita inginkan adalah apa yang kita tanggapi. Ini juga di kenal sebagai Pola Desain Pengamat.
Reactive Framework , juga dikenal sebagai framework pemrograman reaktif , dibuat dengan tujuan mengungkapkan logika aplikasi melalui stream yang memicu apa yang dikenal sebagai side-effects.
Ada berbagai framework pemrograman yang tersedia untuk kita gunakan dalam membuat stream dan pengkodean untuk side-effects yang di inginkan. Framework sangat kuat, kurva pembelajarannya bisa sangat sulit, dan kesulitannya terkadang terlalu berat bagi sebagian orang untuk mau menggunakannya
RxJS adalah salah satu tool yang bisa di gunakan. Ini adalah ekstensi reaktif atau Rx, berbasis perpustakaan di javascript. Mempelajari RxJS tidak mudah dan membutuhkan waktu dan latihan yang signifikan untuk mempelajari dan mengimplementasikan framework.
RxAndroid dibuat untuk berjalan mirip dengan RxJava, tetapi sama sulitnya dengan RxJS. Jika kita memiliki latar belakang atau setidaknya pemahaman awal tentang pemrograman reaktif, akan lebih mudah untuk memahami apa yang terjadi.
Sekarang setelah kita mendapatkan semua dasar-dasarnya, berikut adalah beberapa fakta menarik tentang framework pemrograman reaktif.
Setiap peristiwa akan datang dari stream data. Itu berarti setiap pesan, panggilan, dan bahkan kegagalan, akan terjadi sebagai akibat dari streaming. Untuk mengamati apa yang terjadi di stream kita, kita perlu tahu observable mana yang akan kita gunakan dalam kode kita.
Di dalam pekerjaan kode, kami akan membuat stream data yang tidak sinkron secara inheren . Di dalam kode, pengamatan dapat di anggap panas atau dingin.
Observasi dingin bersifat pasif dan tidak melakukan apa pun kecuali di aktifkan melalui berlangganan dengan ekstensi reaktif. Pikirkan tentang unduhan file tidak ada yang terjadi sampai kita mengklik tombol untuk mengunduh.
Observable panas aktif tanpa pelanggan individu. Pertimbangkan cara kerja ticker saham – informasi tersedia bagi siapa saja yang ingin melihatnya tanpa harus mengklik apa pun. Observable panas paling baik untuk mengirim data yang sama ke banyak penerima atau berbagi koneksi baru dengan banyak penerima.
Reactive Framework terbuat dari sistem reaktif. Sistem reaktif di rancang untuk menjadi responsif, tangguh, dan mampu menyampaikan pesan secara stabil. Menjadi responsif berarti bahwa sistem kami harus menangani berbagai permintaan dalam waktu yang wajar, meskipun ada kalanya ada lebih banyak permintaan dari biasanya.
Pesan yang stabil sangat penting karena bagian yang berbeda dari sistem reaktif bergantung pada interaksi melalui pesan asinkron.
Pemrograman reaktif memungkinkan untuk mengekspresikan stream data statis atau dinamis melalui aplikasi seluler yang sangat interaktif serta aplikasi web.
Menggunakan Rx, semuanya bisa menjadi stream. Seperti pemrograman lainnya, Rx dimulai sebagai stream permintaan, di ikuti oleh respons, dan kemudian d akhiri dengan memberikan respons atau mencari tahu apa yang harus dilakukan dengan respons tersebut.
Sebagai contoh, Netflix menggunakan pemrograman reaktif dalam jajarannya. Platform ini menerima lebih dari 400 miliar permintaan setiap hari. Semua acara berjalan berdampingan dan menghasilkan respons yang cepat dan andal terhadap klik yang diterima dari konsumen di seluruh dunia.
Semuanya interaktif dengan menggunakan pemrograman reaktif. Setiap aplikasi yang kami gunakan bersifat reaktif di bagian depan, tetapi hanya sejak penerapan pemrograman reaktif, hal itu juga terjadi di bagian belakang.
Sifat asinkron dari pengembangan aplikasi reaktif telah menghasilkan pemrograman yang berkomunikasi dengan obrolan yang lebih sedikit daripada pendahulunya. Hasil bagi konsumen mencakup lebih banyak efisiensi dengan data yang bergerak dan merespons hampir secara real-time.