RxSwift dan coroutine di Kotlin - pilihan dalam pengembangan seluler dari AGIMA dan GeekBrains

RxSwift dan coroutine di Kotlin - pilihan dalam pengembangan seluler dari AGIMA dan GeekBrains

Pengetahuan itu bagus, luar biasa. Namun latihan juga diperlukan agar Anda dapat menggunakan data yang diterima, memindahkannya dari status “penyimpanan pasif” ke status “penggunaan aktif”. Betapapun bagusnya pelatihan teori, kerja “di lapangan” tetap diperlukan. Hal di atas berlaku untuk hampir semua bidang studi, termasuk, tentu saja, pengembangan perangkat lunak.

Tahun ini, GeekBrains, sebagai bagian dari fakultas pengembangan seluler di universitas online GeekUniversity, mulai bekerja dengan agensi interaktif AGIMA, yang timnya adalah pengembang profesional (mereka membuat proyek kompleks dengan beban tinggi, portal perusahaan, dan aplikasi seluler, itu saja). AGIMA dan GeekBrains telah membuat mata kuliah pilihan untuk mendalami isu-isu praktis pengembangan aplikasi seluler.

Suatu hari kami berbicara dengan Igor Vedeneev, seorang spesialis iOS, dan Alexander Tizik, yang berspesialisasi dalam Android. Berkat mereka, mata kuliah pilihan tentang pengembangan seluler diperkaya dengan materi praktis kursus khusus tentang kerangka RxSwift и coroutine di Kotlin. Dalam artikel ini, para pengembang berbicara tentang pentingnya setiap area bagi programmer.

Pemrograman reaktif di iOS menggunakan RxSwift sebagai contoh

RxSwift dan coroutine di Kotlin - pilihan dalam pengembangan seluler dari AGIMA dan GeekBrains
Guru pilihan Igor Vedeneev: “Dengan RxSwift, lamaran Anda akan terbang”

Informasi apa yang diterima siswa selama mata kuliah pilihan?

Kami tidak hanya berbicara tentang kemampuan kerangka kerja, tetapi juga menunjukkan cara menggunakannya dalam kombinasi klasik MVVM + RxSwift. Beberapa contoh praktis juga dibahas. Untuk mengkonsolidasikan data yang diperoleh, kami menulis aplikasi yang sedekat mungkin dengan kondisi operasi lapangan. Ini akan menjadi aplikasi pencarian musik menggunakan API Pencarian iTunes. Di sana kami akan menerapkan semua Praktik Terbaik, ditambah mempertimbangkan opsi yang lebih sederhana untuk menggunakan RxSwift dalam paradigma MVC.

RxSwift - mengapa programmer iOS membutuhkan kerangka kerja ini, bagaimana cara membuat hidup lebih mudah bagi pengembang?

Arus RxSwift berfungsi dengan aliran peristiwa dan koneksi antar objek. Contoh paling sederhana dan paling jelas adalah binding: misalnya, Anda dapat memperbarui antarmuka hanya dengan menetapkan nilai baru dalam variabel di viewModel. Dengan demikian, antarmuka menjadi berbasis data. Selain itu, RxSwift memungkinkan Anda mendeskripsikan sistem dalam gaya deklaratif, yang memungkinkan Anda mengatur kode dan meningkatkan keterbacaan. Semua ini membantu mengembangkan aplikasi dengan lebih efisien.

Bagi seorang pengembang, pengetahuan tentang kerangka kerja juga merupakan nilai tambah yang baik dalam resume, karena pemahaman tentang pemrograman reaktif, dan khususnya pengalaman dengan RxSwift, dihargai di pasar.

Mengapa memilih kerangka kerja khusus ini dibandingkan kerangka kerja lainnya?

RxSwift memiliki komunitas terbesar. Artinya, kemungkinan besar masalah yang dihadapi pengembang telah diselesaikan oleh seseorang. Juga sejumlah besar binding di luar kotak. Selain itu, RxSwift adalah bagian dari ReactiveX. Artinya ada analog untuk Android, misalnya (RxJava, RxKotlin), dan rekan-rekan di bengkel bisa berbicara bahasa yang sama satu sama lain, meskipun ada yang bekerja dengan iOS, ada yang bekerja dengan Android.

Kerangka kerja ini terus diperbarui, bug kecil diperbaiki, dukungan untuk fitur dari versi baru Swift ditambahkan, dan pengikatan baru ditambahkan. Karena RxSwift adalah open source, Anda dapat mengikuti semua perubahannya. Selain itu, Anda dapat menambahkannya sendiri.

Di mana sebaiknya RxSwift digunakan?

  1. Binding. Biasanya, kita berbicara tentang UI, kemampuan untuk mengubah UI, seolah-olah bereaksi terhadap perubahan data, dan tidak secara eksplisit memberi tahu antarmuka bahwa sudah waktunya untuk memperbarui.
  2. Hubungan antara komponen dan operasi. Hanya sebuah contoh. Kita perlu mendapatkan daftar data dari jaringan. Faktanya, ini bukanlah operasi yang sederhana. Untuk melakukan ini, Anda perlu mengirim permintaan, memetakan respons ke dalam array objek, menyimpannya ke database, dan mengirimkannya ke UI. Biasanya, berbagai komponen bertanggung jawab untuk melakukan operasi ini (kami menyukai dan mengikuti prinsip-prinsipnya PADAT?). Dengan memiliki alat seperti RxSwift, menjadi mungkin untuk menggambarkan APA yang akan dilakukan sistem, dan BAGAIMANA sistem akan melakukannya di tempat lain. Hal ini menyebabkan pengorganisasian kode yang lebih baik tercapai dan keterbacaan meningkat. Secara relatif, kode dapat dibagi menjadi daftar isi dan buku itu sendiri.

Coroutine di Kotlin

RxSwift dan coroutine di Kotlin - pilihan dalam pengembangan seluler dari AGIMA dan GeekBrains
Guru mata kuliah pilihan Alexander Tizik: “Perkembangan modern membutuhkan sarana teknis modern”

Apa yang akan diajarkan di fakultas GeekBrains sebagai bagian dari kuartal bermerek?

Teori, perbandingan dengan pendekatan lain, contoh praktis di Kotlin murni dan model aplikasi Android. Sedangkan untuk latihannya, siswa akan diperlihatkan sebuah aplikasi yang semuanya terikat dengan coroutine. Faktanya adalah bahwa sebagian besar aplikasi sepenuhnya asynchronous dan komputasi paralel. Namun coroutine Kotlin memungkinkan kode yang membingungkan, heterogen, atau terlalu rumit dan menuntut kinerja direduksi menjadi satu gaya yang mudah dipahami, sehingga memperoleh manfaat dalam eksekusi dan kinerja yang benar.

Kita akan belajar menulis kode idiomatik dalam coroutine yang memecahkan masalah praktis dan dapat dimengerti pada pandangan pertama bahkan tanpa pengetahuan mendalam tentang cara kerja coroutine (yang tidak dapat dikatakan tentang perpustakaan seperti RxJava). Kita juga akan memahami cara menggunakan konsep yang lebih kompleks, seperti model aktor, untuk menyelesaikan masalah yang lebih kompleks, seperti gudang data dalam konsep MVI.

Ngomong-ngomong, ada kabar baik lainnya. Saat mata pelajaran pilihan sedang direkam, pembaruan pada perpustakaan Kotlin Coroutines dirilis, tempat kelas tersebut muncul Flow - analog dari tipe Flowable и Observable dari RxJava. Pembaruan ini pada dasarnya menjadikan fitur coroutine lengkap dari sudut pandang pengembang aplikasi. Benar, masih ada ruang untuk perbaikan: meskipun faktanya berkat dukungan coroutine di kotlin/native, aplikasi multi-platform di Kotlin sudah dapat ditulis dan tidak mengalami kekurangan RxJava atau analognya di Kotlin murni, dukungan untuk coroutine di kotlin/native belum lengkap. Misalnya, tidak ada konsep aktor. Secara umum, tim Kotlin mempunyai rencana untuk mendukung aktor yang lebih kompleks di semua platform.

Kotlin Coroutines - bagaimana cara mereka membantu pengembang Kotlin?

Coroutine memberikan peluang besar untuk menulis kode yang dapat dibaca, dipelihara, dan aman, asinkron, dan konkurensi. Anda juga dapat membuat adaptor untuk kerangka kerja dan pendekatan asinkron lainnya yang mungkin sudah digunakan dalam basis kode.

Apa perbedaan Coroutine dengan thread?

Tim Kotlin menyebut coroutine sebagai thread yang ringan. Selain itu, coroutine dapat mengembalikan sejumlah nilai, karena, pada intinya, coroutine adalah penghitungan yang ditangguhkan. Itu tidak secara langsung bergantung pada thread sistem; thread hanya mengeksekusi coroutine.

Masalah praktis apa yang dapat diselesaikan dengan menggunakan Coroutine, yang tidak dapat atau sulit diselesaikan dengan menggunakan Kotlin “murni”?

Setiap tugas asinkron, paralel, “kompetitif” diselesaikan dengan baik menggunakan coroutine - baik itu memproses klik pengguna, online, atau berlangganan pembaruan dari database.

Di Kotlin murni, masalah ini diselesaikan dengan cara yang sama seperti di Java - dengan bantuan ribuan kerangka kerja, yang masing-masing memiliki kelebihan dan kekurangannya sendiri, namun tidak satupun yang memiliki dukungan tingkat bahasa.

Sebagai kesimpulan, patut dikatakan bahwa kedua mata kuliah pilihan (dan juga mata kuliah utama) diperbarui sesuai dengan perubahan kondisi eksternal. Jika pembaruan penting muncul dalam bahasa atau kerangka kerja, guru mempertimbangkan hal ini dan memodifikasi program. Semua ini memungkinkan Anda untuk terus memantau proses pengembangan.

Sumber: www.habr.com

Tambah komentar