Tujuan:
Menerapkan teknik pemrograman reaktif sederhana dengan Observable pada pustaka
ReactiveX.
Dasar Teori:
Secara sederhana, pemrograman reaktif adalah pemrograman dengan
asynchronous data streams. Termasuk events juga akan disampaikan dalam bentuk data
streams. Untuk mempermudah dalam memahami dan mengimplementasikan konsep
pemrograman reaktif, perkuliahan ini menggunakan pustaka ReactiveX Perlu ditekankan
di awal bahwa pada perkuliahan ini tidak membahas tentang “Functional Reactive
Programming”.
ReactiveX adalah pustaka untuk menyusun program asynchronous dan event-
based dengan menggunakan observable sequences. ReactiveX memperluas pola
perancangan Observer untuk mendukung urutan data atau peristiwa (events) dan
menambahkan operator yang memungkinkan untuk membuat urutan (sequence) secara
deklaratif, sekaligus juga mengabstraksi tentang hal-hal seperti low-level threading,
sinkronisasi, thread-safety, concurrent data structures, dan non-blocking I/O structure
sehingga dapat mempermudah dalam mengembangkan aplikasi interaktif. Komponen
utama pustaka Rx terdiri dari:
1. Observables
2. Operators
3. Schedulers
Kelas Observable<T> merupakan salah satu pondasi utama pada kode Rx, yaitu
kemampuan menyediakan sequence of events yang dapat memuat immutable snapshot
of data secara asinkron. Secara sederhana, observables memungkinkan kelas-kelas untuk
melakukan subscribe terhadap nilai-nilai yang dihasilkan kelas-kelas lainnya dari waktu ke
waktu. Kelas Observable<T> mengizinkan satu atau lebih observers untuk bereaksi
terhadap events secara real time dan memperbarui UI aplikasi, atau dapat juga
memproses dan menggunakan data baru atau data yang masuk. Kelas Observable<T>
mengimplementasikan interface ObservableSource<T> yang memiliki 3 jenis events,
yaitu:
next event, yaitu event yang membawa data terbaru (atau data berikutnya).
Melalui mekanisme ini, observers menerima values.
complete event, yaitu event yang menghentikan event sequence dengan hasil
sukses. Artinya, Observable telah mengakhiri life-cycle secara sukses dan tidak
akan meng-emit events lainnya.
error event, yaitu Observable berhenti karena terjadi error dan tidak akan
meng-emit events lainnya.
Prosedur Praktikum:
1. Memasukkan pustaka RxJava dan RxKotlin pada proyek IntelliJ
2. Membuat Observable sederhana yang meng-emit:
a. Next events
b. Complete event
8. Klik OK
9. Kita coba jalankan dengan meng-klik tombol Run.
10. Jika berhasil, maka akan muncul pesan: Process finished with exit code 0
Prosedur 2.2: Membuat Observable pertama
1. Pada file main.kt, tambahkan kode sbb:
2. Letakkan typing cursor (yang berkedip) di dalam kata just, kemudian letakkan
kursor mouse di atasnya. Ambil tangkapan layar dan tempel/paste di kolom
jawaban sbb:
Jawaban:
3. Jalankan kode tersebut dengan menekan tombol Run, apa yang tampil pada
IDE?
Jawaban:
5. Jalankan kode tersebut dengan menekan tombol Run, apa yang tampil pada
IDE?
Jawaban:
8. Jalankan kode tersebut dengan menekan tombol Run, apa yang tampil pada
IDE?
Jawaban:
13. Jalankan kode tersebut dengan menekan tombol Run, apa yang tampil pada
IDE?
Jawaban:
14. Kesimpulannya, jika kita membuat suatu instance dari Observable dengan
method just seperti kode yang telah ditulis, maka dia akan memancarkan
(meng-emit) event apa saja?
Jawaban:
Pada kode diatas, observable menghasilkan (emit) event Next yaitu nilai
satu, dua, dan tiga sebagai keluaran, kemudian menghasilkan Complete
event, yaitu kata selesai, sequence tersebut tidak menghasilkan event
onError dikarenakan tidak adanya error dalam sequence tersebut.