Sudah pada tahap desain aplikasi seluler, penting untuk memahami bahasa mana yang lebih menguntungkan untuk digunakan untuk proyek tertentu. Seiring dengan pengembangan asli (misalnya, untuk iOS - Swift atau Objective-C, untuk Android - Java atau Kotlin), kerangka kerja lintas platform seperti React Native dan Flutter digunakan. Kami di SimbirSoft menawarkan beberapa kriteria yang akan membantu dalam memilih bisnis dan pengembang seluler.

Masalah pilihan
Di dunia sudah ada sekitar lima miliar smartphone, menurut berbagai perkiraan, hingga 80% dari mereka menggunakan sistem operasi Android, dan kurang dari 20% menggunakan iOS. Namun, masing-masing negara memiliki karakteristiknya sendiri, misalnya, di Amerika Serikat lebih dari 65% smartphone bekerja di iOS. Saat membuat aplikasi seluler, paling sering diperlukan untuk merilis versi di iOS dan Android. Untuk melakukan ini, Anda dapat beralih ke pengembangan asli atau lintas platform ("hibrid").
Pengembangan asli adalah solusi klasik yang membutuhkan aplikasi penulisan untuk setiap platform secara individual, menggunakan bahasa yang berbeda dan mempertimbangkan fitur masing-masing platform. Saat membuat beberapa versi proyek, beberapa tim bekerja secara bersamaan.
Berkat kerangka lintas platform, menjadi mungkin untuk "membunuh dua burung dengan satu batu" sekaligus dan menyiapkan versi untuk iOS dan Android dengan satu alat. Di antara kerangka kerja tersebut sangat luas:
- Bereaksi Asli dari Facebookuntuk aplikasi iOS, Android dan Windows
menggunakan bahasa JavaScript dan perpustakaan React.js sebagai alat pengembangan utama.
- Berkibar dari Googleuntuk aplikasi Android, iOS dan Fuchsia (untuk detail lihat
artikel kami di Habré )
menggunakan bahasa Dart, yang juga berfungsi untuk pemrograman web.
Popularitas React Native and Flutter semakin meningkat, meskipun pada kecepatan yang berbeda, menurut statistik Google Trends.Perkembangan asli
Baik pengembangan asli dan lintas-platform memiliki karakteristik mereka sendiri. Kami menggunakan kedua pendekatan tersebut dalam praktik divisi mobile mobile.SimbirSoft. Di antara kelebihan pengembangan asli adalah sebagai berikut:
- operasi aplikasi yang stabil dan cepat;
- masa pakai maksimum aplikasi;
- aplikasi ini lebih fleksibel dan terukur, berkat penggunaan alat "asli";
- lebih sedikit pembatasan pada arsitektur dan fitur;
- antarmuka persis sama dengan platform.
Pengembangan hibrida
Kerangka kerja lintas platform “menyesuaikan” aplikasi untuk beberapa sistem operasi, sehingga tidak perlu membuat elemen unik untuk setiap platform. Sebagai hasilnya:
- lebih sedikit spesialis yang dibutuhkan;
- membutuhkan lebih sedikit waktu dan sumber daya;
- kecepatan pengembangan meningkat.
Jika logika aplikasi sama pada semua platform dan antarmuka sederhana, pengembangan hybrid membantu membawa produk ke pasar lebih cepat. Kami merekomendasikan kerangka kerja seperti React Native dan Flutter dalam kondisi berikut:
- jika dalam waktu singkat Anda perlu menulis aplikasi prototipe untuk beberapa platform;
- jika aplikasi mengambil semua informasi dari server, logika diimplementasikan pada server, dan animasi dan antarmuka tidak masalah;
- jika jumlah minimum fitur asli digunakan, seperti pemberitahuan push, pembelian dalam aplikasi, geolokasi, dll.;
- jika kinerja sedang dapat diterima, dan konten diunduh dari Internet.
Kriteria Pemilihan untuk Native, React Native, dan Flutter
Untuk bisnis
1. Ketersediaan
Beberapa perusahaan, ketika mereka menghubungi kami untuk pengembangan aplikasi mobile, perhatikan biaya sebagai salah satu kriteria paling signifikan untuk mereka. Pada saat yang sama, biaya dan kebutuhan untuk spesialis tergantung pada metode pengembangan.
AsliBiasanya, studio seluler memiliki sumber daya yang cukup untuk pengembangan aplikasi asli dari segala kompleksitas.
Bereaksi Asli dan BergetarAda lebih sedikit spesialis di bidang ini di pasar. Mungkin ada kesulitan dalam mengembangkan aplikasi besar.
Kami merekomendasikan teknologi asli ke bisnis ketika aplikasi dirancang untuk operasi jangka panjang (dengan kata lain, "rentang hidup"). Ini juga bermanfaat jika ada kebutuhan untuk kinerja tinggi, antarmuka dan animasi yang kompleks, konsumsi daya yang rendah, integrasi dengan sumber daya pihak ketiga (API, dll.). Aplikasi asli lebih menguntungkan dalam jangka panjang karena biaya dukungan teknis yang lebih rendah.
Kami merekomendasikan teknologi lintas platform untuk pengujian hipotesis cepat, pengembangan prototipe, dan aplikasi dengan batasan yang jelas untuk masa operasi, misalnya, dikembangkan untuk acara tertentu.
Memo untuk bisnis:
untuk aplikasi yang kompleks - kami merekomendasikan pengembangan asli;
untuk aplikasi sederhana - hibrida.2. Kecepatan + tugas yang cocok
Waktu untuk memasarkan ditentukan terutama oleh ukuran tim yang tersedia dan fitur aplikasi seluler.
Bekerja dengan kerangka kerja lintas-platform dapat lebih menguntungkan dan lebih cepat jika aplikasi sederhana, dengan UI yang sama, tanpa rincian platform-spesifik, seperti akses ke kamera, bekerja dengan sistem file dan sidik jari, runtime permissons. Di sini, pengembangan hybrid menghemat waktu dengan menggunakan kembali hampir semua kode dan UI untuk dua platform. Namun, jika Anda perlu membuat tampilan kustom yang kompleks, pengembangan lintas-platform melambat.
Berbicara tentang waktu pengembangan aplikasi seluler, penting untuk dipahami bahwa tidak ada “istilah rata-rata untuk rumah sakit”. Misalnya, dalam praktik kami, kami merilis aplikasi mobile perbankan dalam 100 hari, sekarang kami berpartisipasi dalam pengembangan lebih lanjut dari produk ini. Pada saat yang sama, ada aplikasi sederhana (waktu peluncuran - sekitar dua minggu), dan proyek skala besar dengan periode pengembangan lebih dari satu tahun.
3. Keamanan dan prospek
Ketika memilih bahasa, penting bagi bisnis untuk mengevaluasi keandalan dan keamanannya hari ini dari sudut pandang teknis, serta prospek untuk pengembangan lebih lanjut, dan risiko usang.
Dalam hal keandalan, pengembangan asli berada di depan semua pesaingnya. Perkembangan perpustakaan utama telah berlangsung selama beberapa tahun, sebagian besar bug telah diperbaiki di dalamnya, bahasa asli - seperti Java, Objective-C, Swift, Kotlin - terus berkembang. Di antara pengembang seluler, Anda dapat mendengar pendapat bahwa pada tahun 2020an, pengembangan Android asli sebagian akan digantikan oleh Flutter, tetapi sejauh ini ini hanya asumsi.
React Native menyediakan semua alat untuk membuat aplikasi seluler yang aman, misalnya, Skype, Instagram, Facebook dan produk terkenal lainnya. Masalah keamanan hanya dimungkinkan saat menggunakan modul pihak ketiga selama pengembangan. Pada saat yang sama, JavaScript sedang berkembang aktif, fitur-fitur baru sedang dirilis, dan di masa mendatang, risiko keusangan adalah minimal.
Dalam kasus pengembangan Flutter, risikonya lebih tinggi, karena kerangka kerjanya masih muda, rilisnya baru dirilis pada Desember 2018. Sejauh ini ada masalah, misalnya, pada satu waktu atau yang lain, perakitan perpustakaan hanya tersedia untuk satu platform, terjadi crash di Android Studio, ada bug di beberapa plugin dan perpustakaan. Di sisi lain, semua ini sedang diselesaikan dan diperbaiki. Kami tidak dapat mengecualikan risiko bahwa Google akan berhenti mendukung Flutter, seperti halnya dengan proyek lain perusahaan. Namun, Fuchsia OS ditulis di Flutter, di mana beberapa pengembang melihat pengganti untuk Android.
Untuk pengembang
Di atas, kami menggambarkan faktor-faktor yang memperhitungkan bisnis dan kontraktor. Ada juga kriteria teknologi yang terutama diurus oleh manajer proyek. Sebagai contoh:
- Tingkat pengetahuan bahasa asli dan preferensi timSetiap studio ponsel memiliki preferensi sendiri dalam pilihan teknologi. Pengembangan asli membutuhkan pengetahuan paling lengkap dari masing-masing bahasa. Namun, karena penggunaan alat asli sistem, ada sedikit pembatasan dan kesulitan saat menyesuaikan atau mengakses alat khusus platform (tidak seperti React Native dan Flutter). Jika Anda memiliki pengalaman dalam JavaScript, pengembang seluler dapat dengan mudah beralih ke React Native (tidak perlu lagi belajar bahasa Dart, seperti halnya Flutter) atau Dart (pengetahuan tentang TypeScript akan menjadi nilai tambah yang besar).
Bereaksi Asli menggunakan modul asli di bawah tenda. Akibatnya, jika ada kebutuhan untuk kustomisasi (dan ini tidak didukung di luar kotak), perlu untuk bekerja dengan modul asli. Misalnya, dalam praktik kami ada kasus ketika Anda harus menyesuaikan perpustakaan Yandex.Maps untuk menampilkan komponen visual khusus pada peta.
Flutter, tidak seperti React Native, menonjol dengan mesin grafisnya sendiri. Di satu sisi, ini memungkinkan Anda untuk tidak menyentuh asli sama sekali ketika mengembangkan aplikasi sederhana. Di sisi lain, jika Anda perlu mengakses asli, ini berarti kesulitan tambahan (misalnya, pesan dengan tipe data dasar dan JSON) dan ketidakmampuan untuk menggunakan komponen grafis asli.
- Ambang masukJika pengembang memutuskan untuk mempelajari bahasa baru, ketersediaan komunitas, serta informasi latar belakang dan dokumentasi, menjadi masalah penting.
Flutter dan React Native terus berkembang, mereka memiliki komunitas profesional yang aktif dan dokumentasi yang baik. Pada saat yang sama, pengembangan asli berada di depan kerangka kerja, berkat komunitas yang lebih besar dan lebih banyak materi pelatihan dan forum, yang menggambarkan proses pengembangan komponen kompleks.
"Cheat Sheet" untuk seleksi
Tabel perbandingan berikut akan membantu menyederhanakan pemilihan dan menjawab pertanyaan dalam kasus apa metode implementasi ini atau itu cocok (atau tidak cocok) untuk membuat aplikasi seluler.

Rekomendasi
Jika pilihan dibuat untuk kerangka kerja, kami sarankan Anda untuk memperhatikan aspek-aspek pekerjaan berikut:
PeringkatAnda perlu menguji semua platform yang terlibat (iOS, Android). Penting untuk menilai secara obyektif tingkat pengetahuan dan pengalaman semua peserta proyek sehingga peringkat dalam jam tidak berubah menjadi terlalu rendah. Pertimbangkan risiko bug dalam kerangka React Native and Flutter sendiri selama pengembangan.
DesainBeberapa elemen sulit (atau bahkan tidak mungkin) untuk diurai dalam Flutter atau React Native. Untuk alasan ini, desain harus disetujui oleh pengembang - dan sebelum pelanggan jatuh cinta dengan gambar yang dibuat dengan indah.
CI / CDPada Bereaksi Asli, masalah khusus dengan perakitan otomatis tidak dikesampingkan (misalnya, karena pemasangan perpustakaan di berbagai platform). Perlu meletakkan cadangan risiko lebih banyak.
Layar splashImplementasi splash screen pada Flutter lebih cepat daripada pada React Native, di mana elemen ini hanya dapat digambar secara asli, dengan probabilitas bug yang tinggi. Saat menggunakan React Native pada layar splash dengan semua render dan perbaikan bug, disarankan untuk meletakkan lebih banyak waktu.
Tata letakSaat menggunakan React Native, pengaturan huruf pada iOS dan Android perlu dilakukan secara bersamaan untuk menghindari masalah saat mengadaptasi tata letak untuk salah satu sistem.
Pengembangan paralel web dan selulerJika versi web aplikasi ditulis dalam Bereaksi, lebih sedikit waktu yang dihabiskan untuk mengembangkan aplikasi seluler pada Bereaksi Asli - karena logika komponen yang sama.
DebugJika aplikasinya besar, React Native membuat pengujian dan pengujian unit lebih mudah. Pada Flutter, Anda perlu meluangkan lebih banyak waktu pada perbaikan bug, karena log tidak informatif.
Aplikasi bekerja dengan file sistemHal ini diperlukan untuk meminta izin ke kartu-sd, sementara itu tidak mungkin untuk mendapatkan nama dan jalur dengan setiap file. Untuk mengirim file, Anda harus menggunakan ContentResolver. Untuk meminimalkan risiko, berikan waktu untuk semua operasi yang terkait dengan sistem file.
Pengiriman majelis ke klienTidak ada perbedaan signifikan dari pengembangan asli, Anda dapat memilih layanan yang nyaman: Crashlytics, TestFairy, TestFlight.
React Native vs Flutter
Kami di SimbirSoft menggunakan React Native dan Flutter, tergantung pada sifat aplikasi. Kami berbagi beberapa pengamatan dari praktik kami yang membantu menyediakan fitur bekerja dengan kerangka kerja tertentu.

Untuk meringkas
Pengembangan aplikasi mobile asli dan hybrid memiliki kelebihan dan kekurangan, yang diperhitungkan oleh bisnis dan kontraktor ketika memilih teknologi. Di antara kriteria yang paling signifikan adalah waktu dan biaya pengembangan dan pemeliharaan, kepatuhan pada tugas, keselamatan dan prospek, tingkat pengembangan masyarakat. Berdasarkan pengalamannya, pengembang seluler membantu memilih solusi terbaik untuk setiap aplikasi spesifik. Kami berharap kriteria dan tabel perbandingan kami bermanfaat bagi Anda. Terima kasih atas perhatian anda!