Penjelasan Reactive programming

Reactive programming atau pemrograman reaktif adalah suatu model algoritma pemrograman dengan melihat data sebagai aliran yang dapat diproses. Pada umumnya, data tersebut berupa list. Pemrograman reaktif disebut juga pemrograman bergaya deklaratif. Anda mungkin pernah melihat gambar ini dalam library RxJava



Tapi apakah Anda paham gambar di atas?[2] Konsep ini memang sulit dipahami tanpa dicoba langsung dengan kode. Untuk mempermudah pemahaman Anda, saya akan mencobakannya langsung dengan bahasa Java dan Kotlin.


Misalkan Anda punya sebuah list CharSequence dengan elemen sebagai berikut:

  1. " Meja "

  2. "Kursi "

  3. "Nama: Budi"

  4. null

  5. "Android OS"

  6. "Tahun: 1974"

  7. "18 meter"


Anda ingin melakukan hal ini pada list tersebut:
Mengambil semua elemen yang tidak berisi nilai null.
Mengubah elemen tersebut menjadi String
Membersihkan semua spasi putih untuk merapikan teks.
Mengambil teks yang hanya berisi tanda titik dua (:).
Menjadikan semua huruf uppercase.
Anda dapat menciptakan algoritma berikut untuk melakukan hal tersebut:

  1. List<CharSequence> list = ...

  2. List<String> newList = new ArrayList<>();

  3. for (CharSequence text : list) {

  4. if (text != null) {

  5. String s = text.toString().trim();

  6. if (s.contains(":")) {

  7. newList.add(s.toUpperCase());

  8. }

  9. }

  10. }


Kodenya lumayan panjang, bukan? Sekarang mari kita coba dengan fitur pemrograman reaktif yang tersedia pada library Kotlin.

  1. val list = ...

  2. val newList = list.filter { it != null }

  3. .map { it.toString().trim() }

  4. .filter { it.contains(":") }

  5. .map { it.toUpperCase() }


Bagaimana? Simpel bukan? 10 baris vs 5 baris kode. Menurut saya kode kedua lebih mudah dibaca. Nah, cara saya memperlakukan data yang ada dalam list tersebut adalah contoh kecil pemrograman reaktif.
Kode Kotlin tersebut memang kelihatan simpel. Tapi bagaimana kalau kita tulis dalam Java 7? Perhatikan kode berikut:

  1. List<String> newList = Observable.fromIterable(list)

  2. .filter(new Predicate<CharSequence>() {

  3. @Override

  4. public boolean test(CharSequence text) throws Throwable {

  5. return text != null;

  6. }

  7. })

  8. .map(new Function<CharSequence, String>() {

  9. @Override

  10. public String apply(CharSequence text) throws Throwable {

  11. return text.toString().trim();

  12. }

  13. })

  14. .filter(new Predicate<String>() {

  15. @Override

  16. public boolean test(String o) throws Throwable {

  17. return o.contains(":");

  18. }

  19. })

  20. .map(new Function<String, String>() {

  21. @Override

  22. public String apply(String o) throws Throwable {

  23. return o.toUpperCase();

  24. }

  25. })

  26. .toList()

  27. .blockingGet();


Kodenya menjadi panjang dan menggila. Sekarang mari kita convert ke Java 8:

  1. List<String> newList = Observable.fromIterable(list)

  2. .filter(text -> text != null)

  3. .map(text -> text.toString().trim())

  4. .filter(o -> o.contains(":"))

  5. .map(String::toUpperCase)

  6. .toList()

  7. .blockingGet();


Hmm… Masih bisa diterima lah. Anda sekarang tahu bahwa pemrograman reaktif paling cocok untuk bahasa pemrograman yang sudah mendukung lambda expression, misalnya Kotlin, Javascript, dan Java 8+.
Inilah contoh lain dari pemrograman reaktif.

Kesimpulan
Pemrograman reaktif memang powerful. Kita tidak hanya bisa memanipulasi sebuah data, namun juga bisa memilih di thread mana data tersebut akan dimanipulasi dan ke thread mana data tersebut akan dikirim. Thread yang bekerja dalam operasi reaktif juga bisa dihentikan di tengah jalan. Anda akan tahu betapa luar biasanya faedah pemrograman reaktif jika pernah melakukan operasi yang bersifat blocking, seperti pengambilan data dari internet.

Penulusuran terkait:
reactive programming android
belajar reactive programming
reactive programming android tutorial
reactive programming java
apa itu reactive
rxjava tutorial indonesia
belajar rxandroid
medium rxjava android

Related Posts:


0 Response to "Penjelasan Reactive programming"

Post a Comment