Kenapa aplikasi web tidak berjalan seefisien aplikasi asli di iPhone?

7

Saya membandingkan aplikasi web Twitter dengan aplikasi asli, dan melihat beberapa perbedaan dalam kinerja mereka. Saya mengamati bahwa menggulir di browser tidak semulus aplikasi asli, di antara beberapa kebiasaan kecil lainnya. Saya percaya aplikasi web dapat bekerja secepat jika tidak lebih cepat dalam versi aplikasi web, jadi sulit bagi saya untuk memahami perbedaannya. Saya percaya WebKit dipanggang langsung ke inti iOS.

Awalnya Apple ingin menyimpannya sebagai aplikasi web saja, tetapi sekarang saya bertanya-tanya apakah fokus mereka lebih mengarah ke asli.

Jim Marcus
sumber

Jawaban:

9

Fokus bergeser dari WebApps ke Native ketika App Store diluncurkan dengan rilis iPhone 3G dengan iOS 2.0.1, yang diperkenalkan pada 9 Juni 2008 di WWDC.

Awalnya Aplikasi Web dimaksudkan untuk digunakan dengan iphone pertama, tetapi pergeseran besar terjadi dengan rilis iOS khusus (atau iPhone OS seperti yang disebut saat itu) Kit Pengembangan Perangkat Lunak diumumkan pada acara Roadmap Perangkat Lunak iPhone pada 6 Maret, 2008. SDK memungkinkan pengembang untuk membuat aplikasi menggunakan Xcode yang secara native akan berjalan di iPhone, iPod Touch dan iPad. Bahkan sebelum itu, aplikasi yang disertakan ditulis secara asli meskipun Steve Jobs pernah berkomentar:

Mesin Safari lengkap ada di dalam iPhone. Jadi, Anda dapat menulis Web yang luar biasa   Aplikasi 2.0 dan Ajax yang terlihat persis dan berperilaku tepat   suka aplikasi di iPhone. Dan aplikasi ini dapat diintegrasikan dengan sempurna   Layanan iPhone. Mereka dapat melakukan panggilan, mereka dapat mengirim email, mereka   dapat mencari lokasi di Google Maps.

Dan coba tebak? Tidak ada SDK yang Anda butuhkan! Anda sudah mendapatkan semua yang Anda butuhkan   jika Anda tahu cara menulis aplikasi menggunakan paling banyak   standar web modern untuk menulis aplikasi luar biasa untuk iPhone saat ini. Begitu   pengembang, kami pikir kami punya cerita yang sangat manis untuk Anda. Kamu bisa   mulailah membangun aplikasi iPhone Anda hari ini.

Perbedaannya sesederhana perbedaan lama antara aplikasi yang "ditafsirkan" dan "dikompilasi".

Aplikasi asli ditulis menggunakan bahasa tingkat lebih rendah (Objective C, C, C ++ menggunakan lingkungan pengembangan Xcode) dan dikompilasi dengan API yang dirancang untuk mengekstraksi kecepatan dan efisiensi maksimum menggunakan algoritma dan fungsi yang ditulis khusus terhadap perangkat keras yang dimaksudkan untuk menjadi jalankan. Mengkompilasi kode menjadi kode mesin yang langsung dieksekusi hampir selalu merupakan metode eksekusi tercepat untuk tugas perangkat lunak yang diberikan.

WebApps adalah bagian umum dari kode yang tidak dikompilasi yang tidak dapat menggunakan API ini dan harus membuatnya kembali atau tidak menggunakannya. Mereka ditulis dalam bahasa tingkat yang lebih rendah seperti Javascript, Python, atau Perl dan mereka ditafsirkan melalui lingkungan runtime pada titik eksekusi, yang memungkinkan fleksibilitas tertentu dengan mengorbankan kecepatan mentah. Fungsi gulir adalah salah satu contoh di mana aplikasi asli memiliki akses ke rutinitas yang sangat optimal untuk memungkinkan pengguliran yang sangat licin, tetapi aplikasi web tidak karena tidak memiliki pengetahuan atau akses ke API yang relevan. Banyak aplikasi web yang dikompilasi dengan cepat menggunakan teknik kompilasi 'tepat pada waktunya', tetapi sementara ini dapat memperoleh beberapa peningkatan kecepatan, ia tidak dapat memenuhi kekurangan platform API yang dioptimalkan dengan tepat pada bahasa tingkat yang lebih tinggi daripada Javascript (yang merupakan satu-satunya runtime sisi klien yang benar-benar didukung iOS, meskipun OS lain, seluler, dan desktop mungkin memiliki akses ke yang lain) tempat aplikasi web iOS ditulis. Runtime lain tersedia untuk digunakan selama mereka menjalankan sisi server, yang memberikan kinerja lebih lanjut.

Dalam kasus spesifik Twitter, aplikasi twitter sama sekali tidak menggunakan webkit, itu menggunakan rutinitas lain yang ditulis dalam tujuan C yang lagi-lagi (kata kunci yang saya kira) dioptimalkan untuk hasil terbaik dengan cara yang tidak dapat dicapai oleh apa pun di browser. Anehnya, saya pikir aplikasi asli Facebook aku s sebenarnya pembungkus terselubung di sekitar webkit UI.

stuffe
sumber
Saya dapat mengonfirmasi bahwa Facebook memang merupakan gabungan dari aplikasi web dan asli. Ini masih terasa aneh karena aplikasi web ringan dan harus memiliki kecepatan gulir yang sama dengan yang dikatakan aplikasi iPod.
Jim Marcus
1
Bukankah "Mereka ditulis dalam bahasa tingkat rendah seperti Javascript" menjadi bahasa tingkat yang lebih tinggi?
Jonathan.
Terima kasih atas kompilasi / interpretasi catatan, persis apa yang perlu dikatakan. Juga, jika saya ingat, ada periode waktu singkat di mana Apple tidak membiarkan aplikasi web tertentu menggunakan mesin JS yang lebih baik. Ini selama iOS 4.x.
jmlumpkin