Reaktif , kata yang berlebihan. Banyak hal berubah menjadi Reaktif secara ajaib akhir-akhir ini. Dalam posting ini, kita akan berbicara tentang Pemrograman Reaktif , yaitu model pengembangan yang terstruktur di sekitar aliran data asinkron.
Saya tahu Anda tidak sabar untuk menulis aplikasi reaktif pertama Anda, tetapi sebelum melakukannya, ada beberapa hal yang perlu diketahui. Menggunakan pemrograman reaktif mengubah cara Anda mendesain dan menulis kode. Sebelum melompat di kereta, ada baiknya mengetahui kemana tujuan Anda.
Dalam posting ini, kami akan menjelaskan 5 hal tentang pemrograman reaktif untuk melihat apa yang berubah untuk Anda.
Saat menggunakan pemrograman reaktif, aliran data akan menjadi tulang punggung aplikasi Anda. Peristiwa, pesan, panggilan, dan bahkan kegagalan akan disampaikan oleh aliran data. Dengan pemrograman reaktif, Anda mengamati aliran ini dan bereaksi ketika suatu nilai dipancarkan.
Jadi, dalam kode Anda, Anda akan membuat aliran data apa pun dan dari apa pun: peristiwa klik, permintaan HTTP, pesan yang diserap, pemberitahuan ketersediaan, perubahan pada variabel, peristiwa cache, pengukuran dari sensor, secara harfiah apa pun yang dapat berubah atau terjadi. Ini memiliki efek samping yang menarik pada aplikasi Anda: secara inheren menjadi tidak
Reactive eXtension ( http://reactivex.io, alias RX) adalah implementasi dari prinsip pemrograman reaktif untuk " menyusun program asinkron dan berbasis acara dengan menggunakan urutan yang dapat diamati ". Dengan RX, kode Anda membuat dan berlangganan aliran data bernama Observables . Sementara Pemrograman Reaktif adalah tentang konsepnya, RX memberi Anda kotak peralatan yang luar biasa. Dengan menggabungkan pola server dan iterator serta idiom fungsional, RX memberi Anda kekuatan super. Anda memiliki gudang fungsi untuk menggabungkan, menggabungkan, memfilter, mengubah, dan membuat aliran data. Gambar berikut mengilustrasikan penggunaan RX di Java
Meskipun RX bukan satu-satunya implementasi prinsip pemrograman reaktif (misalnya kita dapat mengutip BaconJS - http://baconjs.github.io ), ini adalah yang paling umum digunakan saat ini. Di sisa posting ini, kita akan menggunakan Rx Java.
Pada titik ini, Anda mencoba melihat aliran berbeda (atau yang dapat diamati) apa yang akan Anda tangani dalam program Anda. Tetapi ada dua kelas aliran: panas dan dingin. Memahami perbedaan adalah kunci untuk berhasil menggunakan pemrograman reaktif.
Observable dingin itu malas. Mereka tidak melakukan apa-apa sampai seseorang mulai mengamati mereka ( berlangganan di RX). Mereka hanya mulai berjalan ketika mereka dikonsumsi. Aliran dingin digunakan untuk mewakili tindakan asinkron, misalnya, bahwa itu tidak akan dieksekusi sampai seseorang tertarik pada hasilnya. Contoh lain adalah unduhan file. Itu tidak akan mulai menarik byte jika tidak ada yang akan melakukan sesuatu dengan data. Data yang dihasilkan oleh aliran dingin tidak dibagikan di antara pelanggan dan ketika Anda berlangganan, Anda mendapatkan semua item.
Aliran panas aktif sebelum berlangganan seperti ticker saham, atau data yang dikirim oleh sensor atau pengguna. Data tidak tergantung pada pelanggan individu. Ketika seorang pengamat berlangganan ke observable panas, ia akan mendapatkan semua nilai dalam aliran yang dipancarkan setelah berlangganan. Nilai dibagikan di antara semua pelanggan. Misalnya, bahkan jika tidak ada yang berlangganan termometer, termometer mengukur dan menerbitkan suhu saat ini. Ketika pelanggan mendaftar ke aliran, secara otomatis menerima ukuran berikutnya.
Mengapa sangat penting untuk memahami apakah aliran Anda panas atau dingin? Karena itu mengubah cara kode Anda menggunakan item yang disampaikan. Jika Anda tidak berlangganan hot observable, Anda tidak akan menerima data, dan data ini hilang.
Ada satu kata penting dalam definisi pemrograman reaktif : asinkron. Anda diberi tahu saat data dipancarkan dalam aliran secara asinkron – artinya secara independen ke aliran program utama. Dengan menyusun program Anda di sekitar aliran data, Anda menulis kode asinkron: Anda menulis kode yang dipanggil saat aliran memancarkan item baru. Utas, kode pemblokiran, dan efek samping adalah hal yang sangat penting dalam konteks ini. Mari kita mulai dengan efek samping.
Fungsi tanpa efek samping berinteraksi dengan program lainnya secara eksklusif melalui argumen dan nilai pengembaliannya. Efek samping bisa sangat berguna dan tidak dapat dihindari dalam banyak kasus. Tetapi mereka juga memiliki jebakan. Saat menggunakan pemrograman reaktif, Anda harus menghindari efek samping yang tidak perlu, dan memiliki niat yang jelas saat menggunakannya. Jadi, rangkul kekekalan, dan fungsi bebas efek samping. Sementara beberapa kasus dibenarkan, penyalahgunaan efek samping menyebabkan badai petir: keamanan utas.
Itulah poin penting kedua: utas. Sangat menyenangkan untuk mengamati aliran dan diberi tahu ketika sesuatu yang menarik terjadi, tetapi Anda tidak boleh lupa siapa yang menelepon Anda, atau lebih tepatnya di utas mana fungsi Anda dijalankan. Sangat disarankan untuk menghindari penggunaan terlalu banyak utas dalam program Anda. Program asinkron yang mengandalkan banyak utas menjadi teka-teki sinkronisasi yang sulit yang sering berakhir sebagai perburuan kebuntuan.
Itulah poin ketiga: jangan pernah memblokir. Karena Anda tidak memiliki utas yang memanggil Anda, Anda harus yakin untuk tidak pernah memblokirnya. Jika Anda melakukannya, Anda dapat menghindari item lain yang akan dipancarkan, mereka akan di-buffer sampai ... buffer penuh (tekanan balik dapat terjadi dalam kasus ini, tetapi ini bukan topik dari posting ini). Dengan menggabungkan RX dan asynchronous IO Anda memiliki semua yang Anda butuhkan untuk menulis kode non-blocking, dan jika Anda ingin lebih, lihat Eclipse Vert.x, sebuah toolkit reaktif ting reaktivitas dan asinkron.
Mungkin bagian yang paling membingungkan. Menggunakan pemrograman reaktif tidak membangun sistem reaktif . Sistem reaktif, sebagaimana didefinisikan dalam manifesto reaktif , adalah gaya arsitektur untuk membangun sistem terdistribusi yang responsif . Sistem Reaktif dapat dilihat sebagai sistem terdistribusi yang dilakukan dengan benar. Sistem reaktif dicirikan oleh empat sifat:
Terlepas dari kesederhanaan prinsip-prinsip dasar sistem reaktif ini, membangun salah satunya adalah rumit. Biasanya, setiap node perlu merangkul model pengembangan non-pemblokiran asinkron, model konkurensi berbasis tugas dan menggunakan I/O non-pemblokiran. Jika Anda tidak memikirkan poin-poin ini terlebih dahulu, itu akan menjadi piring spageti dengan cepat.
Pemrograman Reaktif dan Ekstensi Reaktif menyediakan model pengembangan untuk menjinakkan binatang asinkron. Dengan menggunakannya dengan bijak, kode Anda akan tetap dapat dibaca, dan dimengerti. Namun, menggunakan pemrograman reaktif tidak mengubah sistem Anda menjadi Sistem Reaktif. Sistem Reaktif adalah tingkat berikutnya.
Hallo saya trainer Android Mobile di Mataweb dan saya sudah berpengalaman lebih dari 5 tahun. jadi kali ini saya akan share tutorial ataupun tips seputar mobile aplikasi. Salam kenal