Почему веб-приложения работают не так эффективно, как нативные приложения на iPhone?

7

Я сравнивал веб-приложение Twitter с нативным приложением и заметил пару различий в том, как они работают. Я заметил, что прокрутка не была настолько гладкой в ​​браузере, как нативное приложение, среди нескольких других мелких странностей. Я считаю, что веб-приложение может работать так же быстро, если не быстрее, в версии веб-приложения, поэтому мне трудно понять разницу. Я верю, что WebKit встроен прямо в ядро ​​iOS.

Изначально Apple хотела сохранить его только в качестве веб-приложений, но теперь мне интересно, сместился ли их фокус в сторону нативных приложений.

Jim Marcus
источник

Ответы:

9

Фокус сместился с WebApps на Native, когда App Store был представлен с выходом iPhone 3G с iOS 2.0.1, который был представлен 9 июня 2008 года на WWDC.

Изначально веб-приложения предназначались для использования с первым iphone, но основной сдвиг произошел с выпуском специального программного обеспечения для iOS (или iPhone OS, как его называли тогда), анонсированного 6 марта на мероприятии iPhone Software Roadmap, 2008. SDK позволяет разработчикам создавать приложения с использованием Xcode, которые будут изначально работать на iPhone, iPod Touch и iPad. Даже до этого включенные приложения были написаны изначально, несмотря на то, что Стив Джобс однажды заметил:

Полный движок Safari находится внутри iPhone. И так, вы можете написать удивительный веб   Приложения 2.0 и Ajax, которые выглядят точно и ведут себя точно   как приложения на iPhone. И эти приложения могут прекрасно интегрироваться с   услуги iPhone. Они могут позвонить, они могут отправить электронное письмо, они   можно найти местоположение на Google Maps.

И угадай что? Там нет SDK, что вам нужно! У вас есть все, что вам нужно   если вы знаете, как писать приложения, используя наиболее   современные веб-стандарты для написания удивительных приложений для iPhone сегодня. Так   разработчики, мы думаем, у нас есть очень приятная история для вас. Вы можете   начните создавать свои приложения для iPhone сегодня.

Разница столь же проста, как и разница между «интерпретированными» и «скомпилированными» приложениями.

Нативные приложения написаны с использованием языков более низкого уровня (Objective C, C, C ++ с использованием среды разработки Xcode) и скомпилированы с API-интерфейсами, которые предназначены для извлечения максимальной скорости и эффективности с использованием алгоритмов и функций, которые написаны специально для оборудования, для которого они предназначены. запускать на. Компиляция кода в непосредственно исполняемый машинный код почти всегда является самым быстрым способом выполнения для данной программной задачи.

WebApps - это общие не скомпилированные фрагменты кода, которые не могут использовать эти API и должны либо воссоздавать их, либо не использовать их. Они написаны на языках более низкого уровня, таких как Javascript, Python или Perl, и интерпретируются через среду выполнения на этапе выполнения, что обеспечивает определенную гибкость за счет необработанной скорости. Функция прокрутки является одним из примеров того, где собственное приложение имеет доступ к высокооптимизированным подпрограммам, позволяющим осуществлять суперскользкую прокрутку, но веб-приложение этого не делает, потому что оно не знает или не имеет доступа к соответствующим API. Многие веб-приложения компилируются на лету с использованием методов компиляции «вовремя», но, хотя это может привести к некоторым улучшениям скорости, оно не может удовлетворить отсутствие надлежащей оптимизированной платформы API на языке более высокого уровня, чем Javascript (который является единственным среда выполнения на стороне клиента, которую фактически поддерживает iOS, хотя другие ОС, мобильные и настольные компьютеры могут иметь доступ к другим), в которые записаны веб-приложения iOS. Другие среды выполнения доступны для использования, если они выполняют на стороне сервера, что обеспечивает дальнейшее снижение производительности.

В конкретном случае Twitter приложение для твиттера просто не использует webkit, оно использует другие подпрограммы, написанные на цели C, которые снова (ключевое слово, я полагаю) оптимизированы для достижения наилучших результатов, чего не может достичь ни один браузер. Как ни странно, я думаю, что Facebook родное приложение является на самом деле это тонко завуалированная оболочка вокруг веб-интерфейса.

stuffe
источник
Я могу подтвердить, что Facebook действительно является гибридом веб-приложения и нативного приложения. Это все еще кажется странным, потому что веб-приложения легки и должны иметь такую ​​же скорость прокрутки, как, скажем, приложение iPod.
Jim Marcus
1
Разве «Они написаны на языках более низкого уровня, таких как Javascript», не должны быть языками более высокого уровня?
Jonathan.
Спасибо за скомпилированные / интерпретированные заметки, именно то, что нужно было сказать. Кроме того, если я помню, был короткий период времени, когда Apple не позволяла определенным веб-приложениям использовать лучший движок JS. Это было во время iOS 4.x.
jmlumpkin