Новый iPad усложняет жизнь разработчиков HTML 5

Новый Apple iPad, уже оцененный пользователями за дисплей с высоким разрешением, не вызывает подобного восторга у некоторых разработчиков HTML 5 . Операционная система iOS 5.1 усложняет хранение данных HTML 5, не предлагает расширенной поддержки HTML 5, а веб-производительность нового планшета в лучшем случае приравнивается к iPad 2.

Новый iPad

Пока нельзя говорить о каких-то серьезных проблемах, и никто не утверждает, что Apple отказывается от дальнейшей агрессивной поддержки новых веб-стандартов, которые в конечном итоге позволят приложениям, работающим на основе браузеров, вести себя так, как ведут себя нативные приложения. Но для некоторых сегодняшнее решение Apple является компромиссом, с которым трудно жить.

Компания Sencha, создатель инструментов на базе HTML 5, на прошлой неделе разместила показатели тестов «HTML 5 Scorecard» для нового iPad и iOS 5.1, назвав результаты «неоднородными» для Apple. Подсчеты показателей основывались на двух критериях: полноте (сколько различных инструментов HTML 5 присутствует) и правильности (насколько хорошо эти элементы поддерживаются) – об этом рассказывает Адития Бэнсод (Aditya Bansod), старший директор по управлению продуктами Sencha. Также в его отчет вошли результаты пары проверок, тестирующих веб-производительность нового планшета.

«Планшет по-прежнему остается лучшей HTML 5 платформой на рынке»

— говорит Бэнсод.

«Но мы изначально надеялись на большее [в новом iPad]. Вместо этого мы топчемся на месте, и даже немного сдали назад. Apple на этот раз нас немного разочаровала».

Усложнилось хранение веб-данных

Одно из изменений, впервые появившееся в начале 2011 года в бета-версии iOS 5.1, ограничивает некоторые аспекты локального хранения HTLM 5 данных. Данные, которые хранятся локально с использованием функций хранения HTML 5, больше не воспринимаются операционной системой как устойчивые, постоянные. Это стало проблемой для разработчиков, использующих эти функции с localStorage или с WebSQL как механизм хранения. Поскольку операционная система видит эти данные не как постоянные, а как временные, то может уничтожить их в любой момент, без предупреждения, в том числе в случае нехватки памяти.

Веб-разработчики быстро заметили эти изменения еще в январе прошлого года, тогда о них много писали на разных форумах, в том числе на форуме Phonegap на сайте Google Groups, где один из разработчиков на днях вновь поделился своими проблемами.

Проблема касается подгруппы iOS-приложений, которые иногда называют «гибридными приложениями», со встроенной функцией WebView.

«WebViews поддерживает HTML5 приложения, которые находятся внутри нативных пакетов, таких, как PhoneGap или Sencha Touch»

— пишет Бэнсод.

«Они предоставляют встроенный веб-браузер, который размещается в нативном приложении, обеспечивая распределение веб-приложений в нативных магазинах приложений. WebViews является характерной чертой всех современных операционных систем».

До появления iOS 5.1, приложения с WebView могли хранить данные локально, и они хранились как постоянные данные при помощи HTML 5 хранилища.

«В частности, если ваше приложение использовало localStorage или WebSQL, то они считались частью данных приложения»

— поясняет Бэнсод. Если выпускалась новая версия приложения, то эти данные все равно продолжали храниться.

Теперь все по-другому.

«Возможно, причина в том, что Apple не может обеспечить надежного резервного копирования iCloud, или синхронизации с iCloud всего, что не хранится в нативном [iOS] хранилище CoreData»

— предполагает Бэнсод. Один разработчик на форуме Phonegap сказал (со слов «одного парня из Apple»), что причина изменений в следующем:

«они это сделали, чтобы сэкономить место, потому что при загрузке приложений загружается много контента в UIWebView, это занимает много места [с резервным копированием в сервисе Apple iCloud]. Но они совсем забыли о нас, бедных разработчиках, полагающихся на LocalStorage или WebSQL для хранения пользовательских данных».

«Для разработчиков, которые опирались на localStorage или WebSQL как на механизмы хранения данных в приложениях, нарушение этих механизмов стало большой проблемой. Но существуют различные обходные пути, например, применять плагин PhoneGap-SQLPlugin, который использует базу данных SQLite, или писать собственные мосты JavaScript для CoreData»

— пишет также Бэнсод. Для некоторых разработчиков это будет означать перекодировку приложения.

В итоге приложение без использования обходного пути будет «забывать» данные. Пользователи могут терять данные при повторном входе на сайт, потому что приложения, используемые ими для хранения соответствующих данных, больше не будут этого делать.

Некоторые разработчики до последнего надеялись, что данные изменения являются ошибочными, и Apple поспешит их исправить. 7 марта этого года, после анонса нового iPad и iOS 5.1, они обнаружили, что Apple вытолкнула их на освоение вообще новых территорий.

«Они это сделали. Apple выпустила свои приложения с этими багами. У меня уже есть рассерженные пользователи, которые теряют сделанную ими работу при пользовании моим приложением»

— высказался еще один разработчик с ником Sam на форуме Phonegap.

Как показало обсуждение темы выпуска одного из плагинов Phonegap участником организации-фонда Apache Software Foundation, идти обходными путями не так-то просто.

В развитии HTML 5 функций нет прогресса

В анализе Sencha также обнаружилось отсутствие некоторых новых HTML 5 функций в iOS 5.1 и в новейшей мобильной версии браузера Apple Safari.

«Сравнение iOS 5.0 и iOS 5.1 показывает отсутствие каких-либо новых функций. iOS по-прежнему обеспечивает лучшую поддержку HTML5 на любом мобильном браузере, но в ее последней версии не увеличилась глубина поддержки стандартов браузером Mobile Safari»

— пишет Бэнсод.

Safari 6 на Mac, к примеру, поддерживает функцию под названием Cascading Style Sheets (CSS), с помощью которой можно легко создавать и изменять макеты цифровых журналов. Но ее нет в текущей версии Safari в устройствах на базе iOS 5.1.

«Мы очень хотели убедиться в том, что WebGL [интерфейс программирования приложений JavaScript для рендеринга 3D-графики без плагина], который на сегодня доступен только для Apple iAd, имеется в обычном, публичном браузере. Сайт haz.io [который оценивает поддержку вашим браузером развивающихся веб-стандартов] пишет, что WebGL поддерживается в Mobile Safari, но когда мы использовали демо-хранилище Khronos для тестирования, нам не удалось поработать со всеми желаемыми данными»

— пишет Бэнсод.

Веб-производительность

Для оценки веб-производительности нового iPad компания Sencha воспользовалась рядом специальных тестов, в которых сравнивала новый iPad, iPad 2 (оба с iOS 5.1), планшет Motorola Xoom на базе Android 3.0, и планшет RIM Playbook на базе Tablet OS 1.0. Команда Бэнсода запустила тест SunSpider и V8 Benchmark Suite, чтобы измерить уровни производительности JavaScript.

Все знают, но лучше напомнить: в новом iPad используется версия двухъядерного чипа Apple A5 с четырехъядерным графическим процессором.

В целом новый iPad (названный «Retina iPad» в тестах Sencha) оказался несколько замедленным в шести из девяти тестов SunSpider. В семи тестах V8 новый iPad в целом обошел iPad 2, но они оба отстали от планшета Motorola.

В большинстве случаев веб-браузинга у пользователей нового iPad не возникает никаких проблем. Но появляется существенная разница между двумя iPad, когда дело доходит до отображения сложных веб-страниц. К примеру, новый iPad заметно загружает элементы в нижней части страницы, которая при этом прокручивается, что редко происходит в iPad 2.

Бэнсод предполагает, что одной из причин отсутствия роста производительности нового iPad является то, что Apple добавила четырехъдерную графику и увеличила память, при этом не сделала память быстрее. Это означает, что загрузка изображений и прочей графики в GPU занимает больше времени и пропускной способности, чем «устройство могло бы обеспечить в режиме реального времени».

Источник: macworld.com