Apa pro dan kontra dari pendekatan aplikasi seluler HTML5, asli dan hibrida?

25

Saya ingin mengembangkan aplikasi seluler. Baru-baru ini saya membaca sebuah artikel di Telerik Forum , yang membandingkan antara tiga jenis aplikasi seluler dan saya tidak tahu yang mana yang harus saya pilih untuk memulai. Berikut adalah gambar yang menjelaskan pro dan kontra dari berbagai pilihan desain ponsel

Bagan desain seluler Telerik

Untuk memutuskan di antara pilihan desain ini, saya ingin lebih memahami pro dan kontra dari setiap pilihan arsitektur yang tercantum dalam diagram. Apa pro dan kontra dari setiap pendekatan arsitektur?

Anyname Donotcare
sumber
5
Pertanyaan ini tampaknya didasarkan pada prototipe ini . Pertanyaan aslinya menarik 88 jawaban, hanya satu yang patut dicontoh. Saya menghargai upaya penulis untuk mengajukan pertanyaan awal, tetapi sejarah tidak memandang baik pertanyaan-pertanyaan semacam ini , dan saya telah memilih untuk menutup pertanyaan ini.
Robert Harvey
1
@just_name Ketika menanyakan mana yang lebih baik adalah di luar topik, saya merevisi pertanyaan Anda untuk meminta daftar pro dan kontra untuk setiap pendekatan arsitektur. Saya kemudian membuka kembali pertanyaan Anda. Semoga Anda mendapatkan jawaban yang lebih baik sekarang.
maple_shaft
Berdasarkan kata-kata saya berharap untuk melihat diskusi tentang beberapa prinsip umum non-penuaan (misalnya usia baterai, terhubung / terputus dll). Sebaliknya ada HTML5 vs hal asli.
Den
Anda mungkin menemukan artikel ini tentang proses pengambilan keputusan LinkedIn menarik.
Brian

Jawaban:

23

Saya seorang pengembang seluler yang telah menghabiskan banyak waktu mempertimbangkan masalah ini.

Kenapa kamu bertanya?

Kemungkinan besar, Anda berharap dapat mengurangi biaya pengembangan aplikasi dengan:

  • Menggunakan keterampilan pengembangan HTML5 / Javascript yang ada
  • Menargetkan banyak platform tanpa menulis banyak aplikasi dari awal
  • Tidak harus memelihara banyak basis kode di masa depan

Alasannya juga termasuk:

  • Pengembangan HTML5 / Javascript dianggap "lebih mudah" daripada pengembangan platform asli
  • Menghindari pembayaran biaya pendaftaran program pengembang
  • Menghindari pembatasan konten appstore (perjudian dll)
  • Menghindari pembelian perangkat keras pengembangan (mis. Mac untuk pengembangan iPhone)

Definisi

Mari kita menetapkan apa yang kita maksud dengan masing-masing dari tiga pendekatan yang disebutkan:

Native
Suatu aplikasi yang diinstal pada suatu perangkat, biasanya dari app store-nya (walaupun terkadang dapat di-sideload). Untuk keperluan diskusi ini, UI aplikasi asli biasanya tidak terdiri dari tampilan web layar penuh saja.

Web seluler
Ini sebenarnya bisa berupa halaman web apa saja, namun untuk diskusi ini mari kita pertimbangkan aplikasi web satu halaman yang mencoba meniru tampilan dan nuansa aplikasi asli. Ini bukan aplikasi asli, itu berjalan di browser perangkat.

Hybrid
aplikasi Hybrid instanceofaplikasi asli.

Sebagian besar orang mungkin memahami aplikasi hybrid sebagai aplikasi web seluler satu halaman (sekali lagi kemungkinan besar meniru tampilan dan nuansa aplikasi asli), tetapi dikemas sebagai aplikasi asli dengan akses ke layanan asli (à la Phonegap).

Namun sebenarnya ada spektrum antara model Phonegap dan sepenuhnya asli yang akan saya bahas nanti.

Web seluler

Pembatasan teknis
Pertama-tama mari kita daftarkan beberapa batasan teknis pada aplikasi web seluler yang dapat dengan sendirinya menjadi pemecah kesepakatan tergantung pada apa yang Anda lakukan:

  • Hanya HTML / kanvas UI
  • Tidak ada akses ke acara dan layanan perangkat tertentu (ini banyak didokumentasikan)
  • Tidak dapat dicantumkan di toko aplikasi (memengaruhi kemampuan menemukan)
  • Dapat menjadi layar penuh dan memiliki ikon homescreen di iOS, namun ini adalah pengalaman yang tidak biasa dan asing bagi sebagian besar pengguna

Jika Anda dapat hidup dengan semua hal di atas, baca terus untuk mengetahui lebih lanjut tentang tantangan aplikasi web gaya halaman tunggal. Namun bagian ini tidak akan lengkap tanpa merujuk ke aplikasi FT.

Financial Times
The FT aplikasi web adalah contoh yang terkenal dari gaya ini aplikasi. Berikut ini adalah fitur menarik dari surat kabar Guardian Inggris tentang hal itu.

Ini tentu saja merupakan prestasi rekayasa yang luar biasa. Perhatikan bahwa saat ini masih hanya tersedia di iOS saja - ini memberitahu saya bahwa mereka menemukan bahwa menyelesaikan tantangan pengembangan lintas-browser yang maju menjadi sangat sulit.

Aplikasi web gaya asli satu halaman

Bagian ini berlaku untuk web seluler dan aplikasi gaya Phonegap.

Tampilan dan nuansa gaya asli dalam aplikasi web biasanya dicapai dengan kerangka kerja seperti Sencha Touch yang menyediakan serangkaian komponen UI untuk Anda gunakan.

Kerangka kerja seperti itu baik untuk UI yang sangat sederhana. Namun mereka kurang fleksibel. Anda tidak akan dapat mengimplementasikan desain aplikasi asli apa pun menggunakan Sencha, Anda harus menyesuaikan desain Anda dengan apa yang dapat ditampung oleh kerangka kerja.

Cara utama yang digunakan kerangka kerja ini adalah mencoba meniru seluk-beluk UI platform itu sendiri. Efek memantul kecil yang menyenangkan yang Anda dapatkan ketika Anda menggulir ke akhir daftar di iPhone? Kerangka kerja Anda perlu meniru itu dalam Javascript. Tidak mungkin untuk membuatnya ulang sepenuhnya, itu akan cenderung melambat, dan pengguna Anda akan terjebak di "lembah luar biasa" dari aplikasi yang terlihat seperti asli, tetapi jelas tidak, dan non-teknis pengguna tidak akan bisa tahu persis mengapa.

Mitos "HTML5 / Javascript mudah"

Fragmentasi perangkat di dalam browser web sudah marak, dan ketika Anda melampaui HTML dan CSS yang paling dasar, Anda akan melihat hal-hal tidak berjalan sesuai harapan Anda. Anda mungkin mendapati diri Anda menghabiskan lebih banyak waktu untuk memecahkan masalah UI fiddly daripada Anda telah menghemat melakukannya dua kali secara native. Jika Anda menggunakan bahasa asli, perhatikan bahwa tampilan web aplikasi asli tidak sama dengan browser perangkat dan memiliki masalah fragmentasi sendiri.

Dan ketika aplikasi Anda menjadi lebih kompleks secara fungsional, Anda akan menemukan bahwa Anda membutuhkan lebih dari keterampilan jquery dasar untuk menjaga Javascript Anda bersih dan terawat.

Yang mengatakan, sangat mungkin untuk membuat aplikasi sederhana dan fungsional dengan cepat dengan pendekatan ini. Tapi itu cukup jelas ketika aplikasi melakukannya.

Lebih jauh di sepanjang spektrum

Jadi, kami menginginkan UX yang lebih baik daripada yang bisa ditawarkan aplikasi gaya Phonegap, tanpa harus menulis semuanya dari awal beberapa kali. Apa yang bisa kita lakukan?

Bagikan kode non-UI

Ada berbagai teknik yang tersedia untuk berbagi logika bisnis di berbagai platform asli. Google telah meluncurkan J2ObjC yang menerjemahkan Java ke dalam Objective-C. Dengan anjak kode yang cermat, perpustakaan Java dapat digunakan di Android dan iOS.

Perpustakaan seperti Calatrava dan Kirin memungkinkan basis kode yang ditulis dalam Javascript (dan karenanya apa pun yang dapat dikompilasi ke Javascript) untuk dimanipulasi dari kode asli. Penafian: Saya bekerja untuk Platform Masa Depan yang menciptakan Kirin; kami telah sangat sukses menggunakannya di iOS dengan Javascript yang dihasilkan dari Java dengan GWT, dengan kode Java juga dijalankan secara native di Android.

Gunakan tampilan web ... jika perlu

Tampilan web layar penuh memiliki banyak pekerjaan yang harus dilakukan untuk dapat meniru transisi layar dan efek pantulan. Tetapi tampilan web di dalam aplikasi asli chrome dapat dibedakan dari asli.

Ada metode standar dan didokumentasikan dengan baik untuk aplikasi asli dan tampilan web untuk berkomunikasi.

Daftar dan tabel dapat bekerja dengan sangat baik ketika dilakukan dengan cara ini, namun entri teks adalah contoh dari sesuatu yang terbaik ditangani secara native (untuk kontrol penuh atas keyboard).

Singkatnya

Pendekatan yang tepat untuk Anda tergantung pada seberapa rumit aplikasi Anda, dan tingkat UI apa yang akan Anda setujui.

Moto saya: gunakan tampilan web di mana saja Anda bisa, tetapi pastikan pengguna Anda tidak dapat memberi tahu .

funkybro
sumber
2
Jawaban bagus! Dan bagus Anda berbicara tentang J2ObjC, saya tidak menyadarinya.
momo
4

Pertama periksa survei ini untuk mengetahui apa yang sedang terjadi!

perbandingan antara ketiga jenis: Memahami Opsi Pengembangan Aplikasi Seluler Anda

Perbandingan antara asli dan hyprid:

HTML5 vs Asli

HTML5 vs Native App: Yang mana yang harus dipilih ??

Yang ini sangat bagus: Aplikasi asli HTML5 v: pertimbangan utama untuk strategi seluler Anda

Komentar:

  • Anda dapat memilih salah satu dari mereka tergantung pada apa yang Anda miliki (keterampilan) dan apa yang bisa Anda dapatkan (tampilan dan rasa, kinerja, fungsionalitas, ...)
  • Setiap pengembang aplikasi seluler harus memiliki visi / persyaratan yang jelas tentang aplikasi yang akan dikembangkannya untuk versi pertama dan yang akan datang! hanya untuk memastikan bahwa opsi yang akan digunakannya tidak akan membatasi dirinya di beberapa titik.
  • Tidak ada yang seperti memiliki pengalaman nyata dengan tiga cara dan tetap up to date pada saat yang sama, ini akan memberi Anda rasa dan kemampuan untuk mengambil keputusan yang benar.
Abdurahman
sumber
2

Jika Anda perlu mengakses perangkat keras ponsel, Anda harus membangun aplikasi asli (dalam HTML5 Anda dapat mengakses beberapa komponen perangkat keras perangkat seperti GPS).

Jika Anda lebih nyaman dengan pengembangan web, Anda harus tetap menggunakannya kecuali Anda perlu membuat aplikasi asli.

Sejauh apa yang harus Anda ketahui, saya akan mengatakan bahwa Anda harus mengingat semua ukuran layar yang berbeda (termasuk orientasi vertikal dan horizontal). Anda harus mengingat berbagai versi OS (ini lebih untuk Android). Karena ini adalah perangkat seluler, ada kemungkinan bahwa pengguna akan menjawab panggilan telepon itu teleponnya dan mereka juga tidak memiliki kekuatan komputasi desktop atau server.

DFord
sumber
2

Bagi saya ketika menulis aplikasi konsumen apa pun, yang paling penting untuk keberhasilannya adalah penerimaan dan persepsi pengguna terhadap aplikasi tersebut. Karena itu empat alasan untuk mendukung aplikasi asli, meskipun ada biaya tambahan yang terkait dengan pembelajaran, pelatihan dan kehilangan WORA (menulis setelah dijalankan di mana saja) adalah:

  1. Lebih cepat App startup
  2. bergulir halus
  3. Lebih banyak aplikasi konsistensi yang mengikat lebih konsisten dengan OS dan aplikasi lainnya
  4. Lebih cepat respon App UI

Apa yang Anda inginkan di atas segalanya adalah pengalaman pengguna yang luar biasa yang membantu aplikasi Anda berhasil di tempat pemotongan pasar tenggorokan. Tentu saja ada pengecualian terutama kurangnya skillet, kurangnya waktu dan anggaran. Terkadang aplikasi diarahkan untuk sekelompok pengguna bisnis terbatas yang mungkin tidak terlalu peduli tentang hal-hal ini.

Alasan yang mirip dengan ini adalah Facebook membuang strategi aplikasi mereka demi aplikasi asli untuk iOS dan Android:

Silahkan baca:

Mark Zuckerberg: Kesalahan Terbesar Kami Bertaruh Terlalu Banyak pada HTML5 http://techcrunch.com/2012/09/11/mark-zuckerberg-our-biggest-mistake-with-mobile-was-betting-too-much-on- hTML5 /

Mengapa Facebook Menyingkirkan Web Seluler & Pergi Asli dengan Aplikasi iOS Baru-nya http://readwrite.com/2012/08/23/how-facebook-ditched-the-mobile-web-went-native-with-its-new- ios-app # awesm = ~ o9jDrRefxdgnpS

Semoga ini membantu.

MickJ
sumber
2

Dengan di bawah ini, sikap saya saat ini pada bencana ini adalah bahwa hibrida yang baik untuk memulai dengan, untuk mengeksplorasi aplikasi Anda, cepat iterate pada umpan balik pelanggan dan menstabilkan set fitur. Kemudian, untuk menulis ulang aplikasi ke asli sesuai dengan spesifikasi, untuk meningkatkan pengalaman.

Saya telah meninggalkan Web Seluler, karena melayani tujuan yang sama sekali berbeda. Jika Anda ingin berada di app store, Native / Hybrid adalah cara yang tepat. Jika Anda ingin menyederhanakan penyebaran dan rela mengorbankan pengalaman dan kemampuan teknis, buka Mobile Web.

Pro / Kontra Asli :

  • Pro: Ini cocok dengan sisa pengalaman perangkat, tidak ada masalah lembah yang aneh .
  • Pro: Sebagian besar memberikan pengalaman UI yang konsisten dan lancar, tidak ada penundaan, tidak ada gagap.
  • Pro: Beberapa batasan teknis, Anda dapat sepenuhnya memanfaatkan perangkat.
  • Pro: Alat asli memberikan kepatuhan dengan validasi toko aplikasi.
  • Pro: Kerangka kerja asli mencakup penyesuaian per versi platform, lebih sedikit waktu yang dihabiskan untuk fine tuning.
  • Con: Ini build untuk bertahan, dan karenanya membutuhkan lebih banyak waktu untuk membangun.
  • Con: Membutuhkan pengembang poliglot yang sulit ditemukan, mahal.
  • Con: Perlu membiasakan setiap platform perangkat API (iOS / Android / dll).
  • Con: kurva belajar curam.
  • Con: Berbeda toolset per platform.

Pro / Kontra Hybrid :

  • Pro: Basis kode tunggal untuk menargetkan beberapa platform perangkat.
  • Pro: Siklus pengembangan cepat, fleksibilitas yang bagus dalam tata letak, sempurna untuk pembuatan prototipe dan MVP .
  • Pro: Kurva belajar yang nyaman, banyak dokumentasi, kerangka kerja untuk membantu Anda.
  • Pro: pengembangan toolset Tunggal. alat debugger Chrome sangat baik.
  • Pro: Satu basis kode untuk menargetkan beberapa platform perangkat.
  • Pro: Banyak pengembang yang tersedia, mudah dipelajari.
  • Con: Membutuhkan kerangka UI yang layak untuk mengadaptasi UI untuk setiap platform yang berbeda agar konsisten dengan pengalaman perangkat. Ada solusi seperti Kendo UI , Sencha Touch .
  • Con: Perlu sangat sadar tentang memori dan menghitung penggunaan, beberapa CSS, javascript loop serius dapat memperlambat aplikasi. Tidak ada alat yang sangat bagus untuk debug pada perangkat.
  • Kontra: Belum matang, segalanya tiba-tiba bisa berubah, alat menjadi lebih baik.
Bart Verkoeijen
sumber
2

Menjadi pengembang seluler sendiri, yang terburuk adalah akses offline. Anda cukup memaksa pengguna untuk online yang seharusnya bekerja di banyak aplikasi, tetapi tidak semuanya.

Aspek buruk besar lainnya adalah kelambatan. Waktu yang diperlukan untuk mengurai data jarak jauh dapat memakan waktu yang signifikan. Ya, Anda dapat mengambil data sebelumnya selama waktu buka, tetapi dalam semua kasus lainnya Anda tidak dapat menghindari kelambatan.

Saya menemukan bahwa aplikasi seperti itu mengakhiri aplikasi lebih mahal daripada yang asli. Saya tidak lagi merekomendasikan mereka ke klien saya.

deviDave
sumber
1

Masalah besar dengan aplikasi hybrid adalah fragmentasi kerangka kerja: ada jelas lebih banyak dari mereka (Ionic, Xamarin, React Native, dll) daripada ada platform mobile asli yang menarik (biasanya hanya dua, Android dan iOS). Kerangka kerja ini bersaing, muncul, tolak, jadi hybrid tidak akan menyelamatkan Anda dari melompat dari platform ke platform bahkan jika Anda berencana untuk menjaga tim Anda saat ini seumur hidup.

Google dan Apple mencoba yang terbaik dalam menyediakan dan mendukung para editor, pengadu, kerangka pengujian, alat refactoring, dan cara lain untuk mengembangkan platform mereka. Oleh karena itu saya akan mengambil kata-kata khas " hanya jauh lebih mudah untuk mengembangkan aplikasi hybrid, mengedit dengan editor favorit Anda dan buka di browser " dengan reservasi yang masuk akal. Xamarin dan React Native adalah platform pengembangan, sama seperti Swift atau Java / Android, dan sementara "hello world" mungkin terlihat lebih pendek, pada akhirnya harus mengambil waktu yang sebanding untuk belajar dengan benar.

Jika, untuk hal apapun, kebutuhan untuk komponen asli akan timbul (misalnya, ada pihak ketiga perpustakaan harus diintegrasikan), Anda akan berakhir dengan tiga kerangka daripada dua: iOS, Android dan kerangka hibrida Anda di atas, berakhir dengan arsitektur yang lebih kompleks. Men-debug aplikasi semacam itu, melangkah di antara panggilan lintas-lapisan, mencatat semua lapisan, menjaga kode tetap sinkron kadang-kadang mustahil.

Beberapa mengatakan " aplikasi akan terlihat sama persis untuk semua platform ". Apakah ini benar-benar hal yang baik? Aplikasi Android harus terlihat seperti aplikasi Android dan aplikasi iOS harus terlihat seperti aplikasi iOS.

Bagaimana dengan fitur-fitur baru? Dapat dipakai? Aplikasi instan sekarang ditawarkan oleh platform Android? Menampilkan data tambahan pada layar eksternal? Aplikasi hybrid sekarang mendukung banyak fitur asli, tetapi apakah mereka benar-benar mendukung semuanya ? Kapan saja, langsung?

Akhirnya, bukan hanya kinerja dan pengalaman pengguna, tetapi juga keamanan mungkin lebih pada sisi aplikasi asli. Kerangka Hybrid menambahkan lapisan tipuan yang mungkin memiliki bug sendiri, bug keamanan termasuk.

Sebagai penutup semua di atas, di bawah kemungkinan untuk memilih, saya pasti akan memilih dua aplikasi asli, satu untuk iOS, dan satu untuk Android atau sebagai alternatif hanya akan merancang versi mobile dari situs web tanpa repot dengan pengembangan aplikasi untuk platform apa pun. .

h22
sumber