HTML5 vs Native

Debat tentang aplikasi seluler

Michael Mahemoff
Michael Mahemoff

Pengantar

Aplikasi seluler dan HTML5 adalah dua teknologi terpanas saat ini, dan ada banyak yang tumpang tindih. Aplikasi web berjalan di browser seluler dan juga dapat dikemas ulang sebagai aplikasi native di berbagai platform seluler. Dengan beragamnya platform yang didukung, digabungkan dengan kecanggihan browser seluler, developer beralih ke HTML5 sebagai solusi "write satu, jalankan banyak". Namun, apakah itu benar-benar layak? Masih ada alasan kuat untuk menggunakan native, dan jelas, banyak developer akan memilih rute tersebut. Artikel ini adalah debat antara native versus web.

Kekayaan Fitur

Poin: Native dapat melakukan lebih banyak hal

Kita dapat membagi fungsi seluler menjadi dua dimensi: pengalaman aplikasi itu sendiri dan cara aplikasi terhubung ke dalam ekosistem perangkat, misalnya untuk Android, ini akan menjadi fitur seperti widget dan notifikasi. Native unggul dalam kedua dimensi tersebut.

Dalam hal pengalaman aplikasi, aplikasi native dapat melakukan lebih banyak hal. Pengguna dapat dengan mudah mendapatkan peristiwa geser, bahkan mutlitouch, untuk platform yang mendukungnya. Fungsi ini biasanya dapat bertindak saat tombol keras yang ditekan, seperti tombol penelusuran dan kontrol volume Android. Mereka juga dapat mengakses perangkat keras, seperti GPS dan kamera. Dan dengan izin pengguna, beberapa platform akan memberikan akses tak terbatas ke sistem operasi. Coba deteksi sisa daya baterai dengan HTML5.

Ini lebih dari sekadar pengalaman dalam aplikasi. Sistem operasi seperti Android menyediakan berbagai cara bagi aplikasi untuk berinteraksi dengan pengguna, dan tentu saja, dengan aplikasi lain. Anda memiliki widget aktif di halaman beranda. Anda memiliki notifikasi, yang muncul di status bar perangkat. Dan Anda memiliki intent, yang memungkinkan aplikasi mengumumkan dirinya untuk menyediakan layanan umum yang mungkin diperlukan aplikasi lain pada kesempatan tertentu.

Kontrasepsi: Fitur native dapat ditingkatkan, dan web tetap mengejar ketertinggalan

Memang benar bahwa banyak fitur dalam aplikasi yang tidak dapat dijangkau untuk aplikasi HTML5. Tidak peduli seberapa menarik keterampilan web-fu Anda, jika aplikasi Anda terjebak di sandbox tanpa API kamera, aplikasi tidak akan tertangkap dalam waktu dekat. Untungnya, Anda tidak harus menggunakan {i>sandbox<i} itu. Jika benar-benar memerlukan aplikasi web untuk mengambil foto, Anda dapat membuat aplikasi native, yang dilengkapi dengan tampilan web tersemat yang menyediakan sebagian besar antarmuka pengguna. Berikut adalah cara kerja framework PhoneGap open source: mengisi kesenjangan dengan mengekspos fitur native sebagai layanan web, yang dipanggil oleh tampilan web menggunakan API jaringan standar. Saat mem-build aplikasi campuran seperti ini, Anda juga dapat terhubung ke fitur platform tersebut seperti widget, notifikasi, dan intent.

Membuat aplikasi campuran - native plus web - hampir tidak menjadi solusi ideal. Hal ini menambah kerumitan dan hanya berlaku untuk aplikasi web yang digabungkan sebagai aplikasi native, bukan situs tradisional yang diakses dari browser seluler. Tapi itu mungkin tidak diperlukan untuk waktu yang lama. Standar web berkembang dengan cepat, dan browser seluler modern juga mengimbanginya. Penyimpanan offline, geolokasi, grafik kanvas, dan pemutaran video/audio, semuanya menikmati dukungan luas di antara smarpthone modern, misalnya. Kamera pun mulai didukung - mulai Android 3.1, foto dan video dapat diambil menggunakan standar web. Dan browser iOS terbaru mendukung WebSocket untuk streaming 2 arah, serta deteksi orientasi perangkat.

Secara keseluruhan, perangkat seluler terus berkembang. Namun, web juga terus berkembang dan cepat. Di antara browser desktop saja, ada lima vendor browser utama yang mengembangkan standar dan menambahkan fitur dengan sangat cepat. Meskipun bukan proses yang mudah untuk memindahkan fitur ini ke perangkat seluler, banyak dari mereka telah berhasil masuk ke browser seluler.

Native adalah target yang bergerak cepat, tetapi web menutup celahnya.

Pertunjukan

Poin: Native berjalan lebih cepat

Aplikasi native tidak memiliki kendala runtime web yang harus ditangani. Keduanya berjalan mendekati logam dan dapat memanfaatkan peningkat performa seperti akselerasi GPU dan multithreading.

Penghitungan: Saat ini, runtime web jauh lebih cepat, dan sebagian besar aplikasi tidak memerlukan kecepatan tersebut

Tidak heran jika web menjadi lebih cepat dalam beberapa tahun terakhir. V8, mesin JavaScript yang disertakan dengan Chrome, merupakan pengembangan besar dalam performa web saat diluncurkan, dan sejak saat itu semakin cepat:

Grafik performa V8

Mesin rendering grafis juga telah mempercepat web, dan sekarang akselerasi hardware mulai terjadi. Lihat lonjakan kecepatan yang disediakan kanvas yang diakselerasi hardware:

Grafik kanvas dengan akselerasi hardware

Selain itu, Web Workers API yang baru memungkinkan multithreading, dan developer web modern juga dapat memanggil berbagai library yang dioptimalkan untuk performa, serta teknik pengoptimalan performa yang telah diteliti dengan baik. Meskipun sebagian besar konten tersebut dimulai di web desktop, iklan tersebut masih relevan untuk perangkat seluler, dan ada peningkatan perhatian pada perangkat seluler, misalnya pakar performa Steve Souders memiliki halaman khusus untuk alat performa seluler.

Tidak semua platform seluler telah menjangkau setiap platform seluler, tetapi tren ini menunjukkan bahwa mereka akan segera hadir. Penting juga untuk diperhatikan bahwa sebagian besar aplikasi seluler bukanlah game 3D terbaru, tetapi pada dasarnya berbasis informasi: berita, email, jadwal, jaringan sosial, dll. Kunjungi beberapa situs dari perangkat seluler Anda, misalnya Gmail, Amazon, Twitter, dan Anda dapat memastikan bahwa performa web seluler sudah lebih dari cukup. Untuk game, tema dasar sudah layak dengan kanvas 2D, dan WebGL mulai muncul di perangkat seluler - lihat Firefox 4. Hingga saat ini tersebar luas, ada kumpulan framework yang terus berkembang yang mengompilasi aplikasi WebGL ke aplikasi native yang dapat memanfaatkan OpenGL, misalnya ImpactJS.

Pengalaman Developer

Poin: Native lebih mudah dikembangkan

Aplikasi native menggunakan bahasa pemrograman yang andal (misalnya Java, Objective C, C++) yang dirancang untuk pengembangan aplikasi yang kompleks dan memiliki rekam jejak yang telah terbukti. API ini didesain dari bawah ke atas untuk mendukung platform yang ada. Anda dapat dengan mudah men-debug aplikasi di emulator desktop yang memberikan representasi mirip dari perangkat target.

Yang membuat pengembangan web sangat menyusahkan adalah keberagaman browser dan runtime yang besar. Saat aplikasi Anda berjalan, tidak ada jaminan fitur X akan tersedia. Dan jika ya, bagaimana browser akan menerapkannya? Standar terbuka untuk penafsiran.

Kontrasepsi: Web sering kali lebih mudah dikembangkan, terutama jika menargetkan beberapa perangkat

Mari kita bahas teknologi inti terlebih dahulu. Memang benar bahwa standar web awalnya tercipta pada era ketika web pada dasarnya adalah tentang dokumen, bukan aplikasi. JavaScript dibangun dan di-deploy hanya dalam 10 hari. Namun, mereka ternyata jauh lebih mampu daripada yang dibayangkan - developer web telah belajar memanfaatkan bagian yang baik dan menjinakkan bagian yang buruk, dengan pola yang kini dipahami untuk desain yang dapat diskalakan. Selain itu, standar tersebut juga tidak berubah, dan upaya seperti HTML5, CSS3, dan EcmaScript Harmony meningkatkan pengalaman developer. Apakah Anda lebih memilih C++, Java, atau JavaScript adalah perdebatan keagamaan, dan juga bergantung pada code base lama Anda. Tapi kita pasti bisa memasukkan JavaScript sebagai tantangan yang serius akhir-akhir ini.

Sisi lain dari fragmentasi browser/runtime adalah fakta bahwa semua lingkungan ini ada sejak awal. Kembangkan aplikasi Android di Java, dan Anda dihadapkan pada port penuh ke Objective C untuk mendukung iOS. Kembangkan sebuah aplikasi web sekali saja dan aplikasi ini akan berjalan di Android dan iOS, belum lagi WebOS, BlackBerry, Windows Mobile, dan... yah, begitulah teorinya. Dalam praktiknya, Anda harus menyesuaikan semuanya untuk setiap platform jika benar-benar ingin mendapatkan pengalaman yang benar. Namun Anda juga harus melakukannya di native, untuk sebagian besar sistem operasi seluler - ada versi dan perangkat yang berbeda.

Kabar baiknya adalah "fragmentasi" selalu seperti ini di web, dan ada teknik terkenal untuk menanganinya. Yang terpenting, prinsip {i>progressive enhancement<i} mendesak developer untuk menargetkan perangkat dasar terlebih dahulu, dan menambahkan lapisan keunggulan khusus platform jika tersedia. Fungsi deteksi fitur juga membantu. Sekarang, kami memiliki dukungan library mulai dari Modernizr untuk mendukung desain web yang responsif. Dengan penggunaan teknik ini secara bijak, Anda dapat memperluas jangkauan ke sebagian besar perangkat, bahkan "ponsel menengah" lawas, bahkan faktor bentuk seperti smartwatch dan TV, terlepas dari merek dan OS-nya. Saksikan demonstrasi multi-UI kami di Google IO 2011, di mana kami menargetkan faktor bentuk yang berbeda (ponsel menengah, smartphone, tablet, desktop, TV) dengan basis kode umum logika dan markup.

Lihat dan Rasakan

Poin: Tampilan dan nuansa platform yang cocok untuk native

Salah satu fitur penting dari setiap platform adalah tampilan dan nuansanya. Pengguna mengharapkan kontrol ditampilkan secara konsisten dan dimanipulasi dengan cara yang sama. Ada idiom tertentu yang berbeda-beda dari satu platform ke platform yang lain, misalnya apa yang terjadi saat pengguna melakukan "penahanan lama" (terus menyentuh sebuah elemen selama beberapa detik)? Plaform memiliki idiom standar untuk hal-hal semacam itu, dan Anda tidak dapat memenuhi semuanya dengan satu aplikasi HTML5.

Selain itu, tampilan dan nuansa platform diatur oleh library software native platform, yang widgetnya mengenkapsulasi jenis tampilan dan nuansa yang diharapkan pengguna. Anda mendapatkan banyak tampilan dan nuansa yang diharapkan "secara gratis" hanya dengan menggunakan toolkit native.

Penghitungan: Web memiliki tampilan dan nuansanya sendiri, dan Anda juga dapat menyesuaikan antarmuka web untuk platform yang paling penting bagi Anda

Seperti yang dijelaskan di bagian sebelumnya, cara pengembangan web adalah menulis versi dasar "satu ukuran cocok untuk semua", lalu menyempurnakannya secara bertahap. Meskipun peningkatan ini biasanya didasarkan pada fitur, Anda juga dapat meningkatkannya dengan menargetkan platform yang paling penting bagi Anda. Ini semacam "deteksi browser", yang terkadang tidak disukai komunitas web, terutama karena ada begitu banyak kemungkinan browser di luar sana. Namun, jika Anda melihat dua atau tiga platform dengan prioritas yang sangat tinggi, dan bersedia melakukan upaya tambahan untuk bersaing dengan alternatif native, ini mungkin adalah cara yang tepat.

Sejauh versi dasar pengukuran, web memiliki tampilan dan nuansanya sendiri, dan kita bahkan dapat mengatakan setiap platform seluler memiliki "tampilan dan nuansa web" sendiri yang ditetapkan oleh browser default dan runtime web. "Tampilan dan nuansa web" mungkin tidak masalah bagi pengguna, dan pada kenyataannya, memungkinkan Anda mencapai tingkat konsistensi yang lebih baik dengan pengalaman penjelajahan desktop, serta pengalaman pada perangkat lain yang mungkin digunakan pengguna. Selain itu, ada banyak aplikasi sukses yang tidak banyak mendukung tampilan dan nuansa native. Hal ini tentu saja benar untuk game (apakah game seluler favorit Anda mengikuti tampilan dan nuansa OS seluler?), dan bahkan juga berlaku untuk aplikasi konvensional lainnya, misalnya lihat klien asli Twitter yang lebih populer di platform pilihan Anda, dan Anda akan melihat berbagai macam mekanisme antarmuka pengguna yang berfungsi.

Visibilitas

Poin: Aplikasi native lebih mudah ditemukan

Mekanisme distribusi aplikasi, seperti Android Market dan Apple App Store, menjadi sangat populer dalam beberapa tahun terakhir dan merupakan dorongan utama untuk seluruh industri seluler. Semua developer dapat mengirimkan aplikasi native mereka ke marketplace, tempat pengguna dapat menemukannya melalui kombinasi penjelajahan, penelusuran, dan mendapatkan rekomendasi. Tidak hanya itu, tetapi jika Anda sudah melakukan pekerjaan dengan benar, rating dan komentar yang bagus akan meyakinkan pengguna untuk menekan tombol instal yang penting.

Counterpoint: Sebenarnya, aplikasi web lebih mudah ditemukan

Web bisa dikatakan sebagai media yang paling mudah ditemukan yang pernah dibuat. Di URL sederhana, kami memiliki (setidaknya) ID unik untuk semua hal yang pernah dipublikasikan di web, yang mencakup aplikasi apa pun yang dipublikasikan di situs standar. Mesin telusur memudahkan Anda menemukan konten dan situs lain yang dapat ditautkan ke konten tersebut, termasuk katalog aplikasi web yang mirip dengan marketplace seluler. Tentu saja, setiap individu dapat berbagi aplikasi web dengan teman-temannya hanya dengan menautkannya dalam email dan pesan jaringan sosial. Link juga dapat dikirim melalui SMS, sehingga pengguna seluler dapat mengklik link dan meluncurkan aplikasi di browser perangkat mereka.

Kami belum memiliki marketplace yang sama tempat pengguna dapat memberi rating dan komentar pada aplikasi, tetapi hal ini juga berubah. Baca terus...

Monetisasi

Poin: Native dapat dimonetisasi

"Usia 6 tahun membuat aplikasi saat jam makan siang, menjual satu juta salinan masing-masing $3". Anda melihat hal tersebut akhir-akhir ini sering terjadi, jadi tidak banyak developer besar dan kecil yang memilih marketplace seluler untuk monetisasi. Platform seluler menawarkan beberapa cara bagi developer untuk menagih langsung aplikasi mereka. Yang paling mudah adalah pembayaran hanya sekali, untuk membuka aplikasi selamanya. Ada juga pembayaran dalam aplikasi dan mekanisme langganan yang ditawarkan dalam beberapa platform, dan keduanya terintegrasi erat dalam mekanisme yang konsisten dan aman. Metode pembayaran baru ini memungkinkan pengembang untuk mengonversi aplikasi sukses menjadi sumber pendapatan jangka panjang.

Selain pembayaran aplikasi, Anda dapat memonetisasi dengan model web tradisional, seperti iklan dan sponsor.

Kontrasepsi: Monetisasi di web selalu dapat dilakukan, dan peluangnya semakin besar

Web tidak akan menjadi mesin industri modern jika tidak ada cukup peluang untuk memperoleh keuntungan. Meskipun mekanisme "bayar per penggunaan" langsung belum berkembang, ada berbagai keunggulan di mana solusi "software as a service" berbasis langganan benar-benar dapat digunakan. Contohnya meliputi Google Apps, rangkaian produk 37Signals, dan versi premium berbagai layanan email. Selain itu, pembayaran langsung bukan satu-satunya cara untuk mendapatkan keuntungan dari aplikasi web. Ada iklan online, link afiliasi, sponsor, promosi silang ke produk dan layanan lainnya.

Karena itu, sangat masuk akal bagi pengembang web untuk membaca berita utama dan mengalami sedikit kecemasan terhadap pembayaran. Anda tidak dapat mengirimkan URL web ke marketplace asli, jadi apa yang harus dilakukan oleh pengembang web? Yang Anda lakukan adalah membuat "aplikasi wrapper" native - untuk setiap platform yang ingin Anda targetkan, buat aplikasi native kosong yang hanya berisi tampilan web. Tampilan web adalah tempat Anda menyematkan aplikasi yang sebenarnya. Kemudian, cukup kirimkan aplikasi ini ke berbagai marketplace (dan semoga uangnya bermunculan!). Mungkin ada ratusan, bahkan ribuan, aplikasi berbasis web di marketplace utama saat ini, beberapa di antaranya dengan begitu licik melakukan asimilasi sehingga kami bahkan tidak mengetahui aplikasi web mereka sama sekali.

Kelemahannya adalah proses kompilasi silang setiap platform. Di sinilah framework seperti PhoneGap dapat membantu. Lebih menariknya lagi, ada layanan web seperti PhoneGap Build dan Apparatio yang sedang dalam pengembangan. Arahkan situs ini ke repositori kode Anda, lalu menampilkan aplikasi Android, aplikasi iOS, dan sebagainya... yang siap untuk Anda kirimkan ke toko masing-masing. Tidak perlu menginstal SDK native di komputer; yang Anda perlukan untuk membuat semua aplikasi native ini hanyalah editor kode dan browser web.

Apakah bursa akan mendukung aplikasi web secara langsung, tanpa semua biaya untuk menggabungkannya secara native? Masih belum jelas. Kami tahu bahwa Google memperkenalkan Chrome Web Store tahun lalu, dan meskipun hanya berlaku untuk desktop, toko tersebut telah memicu minat dari vendor browser lain, dan secara keseluruhan merupakan bagian dari tren pada katalog aplikasi web, termasuk beberapa upaya khusus seluler. Ini adalah masa awal untuk konsep toko web, tetapi tanda-tandanya terlihat menjanjikan.

Kesimpulan

Akan lebih baik untuk mengumumkan pemenang di sini, tetapi untuk saat ini, tidak ada pemenang yang jelas. Beberapa aplikasi paling cocok untuk native dan sebagian lainnya paling cocok untuk web. Stack web bisa dibilang memiliki lebih banyak momen, tetapi dalam hal kemampuan dan kualitas eksekusi, aplikasi native juga bergerak cepat. Dan kecuali ada saatnya teknologi web menjadi pengguna kelas satu di sebagian besar OS seluler, native akan selalu menjadi pertimbangan penting.

Salah satu teknik yang disebutkan dalam artikel ini adalah aplikasi campuran, dan ini mungkin menjadi kompromi terbaik bagi beberapa developer: tampilan web jika memungkinkan dan komponen native khusus platform yang tidak memungkinkan.

Jika Anda memilih jalur web, perhatikan standar web dan prinsip {i>progressive enhancement<i}. Web adalah teknologi yang mengetahui cara menarget banyak perangkat dan sistem operasi. Baik Anda menyebutnya "fragmentasi" atau "keragaman", web akan mendukungnya dan Anda dapat memanfaatkan semua karya seni sebelumnya yang ada.