Предлагаем вашему вниманию вольный сокращенный перевод статьи, написанной инженерами китайского подразделения Intel и посвященной анализу трендов в области операционных систем для смартфонов.
Мир вокруг нас становится все шире. Мы перемещаемся на большие расстояния вместе со своими мобильными устройствами, помогающими нам поддерживать связь с родными и коллегами и предоставляющими огромное количество различных сервисов. Основой же любого функционала мобильного устройства является его операционная система. Исходя из собственного опыта в разработке таких ОС и своего видения сегодняшней ситуации на рынке, мы выделяем несколько параметров, по которым, на наш взгляд, будет оцениваться любая будущая ОС – это ощущения пользователей, управление энергопотреблением, поддержка облачных технологий и открытость. В данной статье мы покажем результаты наших исследований текущих мобильных ОС, исходя из приведенной группы критериев.
Введение
Дизайн мобильных ОС прошел эволюцию от ОС для настольных ПК через встраиваемые ОС до тех продуктов, которые мы видим в смартфонах сейчас. В течение этого процесса архитектура ОС менялась от сложной к простой и остановилась где-то на середине. Сама же эволюция приводилась в движение технологическими достижениями в аппаратной и программной области, а также в интернет сервисах.
В недавнем прошлом модель использования мобильных устройств была весьма простой. Пользователь запускал приложения для управления данными или оффлайновых игр, иногда загружал статические веб-странички или пользовался почтой. Сейчас ситуация поменялась кардинальным образом: больше нет «предустановленных» функций, устройство выступает неким порталом в среду, где множество игроков – сервис провайдеры, независимые разработчики и т.д. – предоставляют огромное количество сервисов.
Модели использования мобильных устройств
С точки зрения моделей потребления, все представители мобильных ОС сегодняшнего дня (такие как Apple iOS, Google Android, Microsoft Windows) имеют больше сходных черт, нежели различий:
- Все они имеют документированные SDK с прописанными API, что позволяет разработчикам создавать приложения под эти ОС;
- Все они имеют он-лайн каталоги приложений, где разработчики публикуют свои приложения и откуда пользователи их скачивают;
- В каждой реализована многозадачность и поддержка 3D-графики, широко используются датчики и сенсорные экраны;
- Во всех системах большое внимание уделено гладкости и отзывчивости во взаимодействии с пользователем;
- Использование интернет далеко ушло от статических страниц, HTML5 становится платформой по умолчанию для Web-приложений;
- Все ОС поддерживают мобильные системы платежей;
- Все системы сфокусированы на оптимизации энергопотребления.
Общность нынешних мобильных ОС обусловлены глобальностью технологических трендов в аппаратной и программных областях, а также в коммуникациях. Проанализируем теперь ОС нового поколения с точки зрения критериев, приведенных выше. Отметим сразу, что в довольной большой степени они конфликтуют друг с другом.
Ощущения пользователей
Традиционное понятие производительности с трудом применимо к мобильным устройствам. Вместо статической производительности по отношению к смартфонам логичнее оперировать понятием комфортности для пользователя, способностью оптимально реагировать на его действия, выраженной в чувствительности, плавности, логичности и точности работы. Совершенно обычна ситуация, когда устройство А уступает Б по совокупности бенчмарков, однако с точки зрения пользовательского восприятия ценится выше, ведь тесты, измеряя те или иные подсистемы смартфона, не принимают в расчет взаимодействие с пользователем, а человек оценивает прежде всего это.
Возьмем для примера видео. Традиционные тесты оперируют рядом метрик, таких как FPS или количество потерянных кадров. В этом подходе есть как минимум две проблемы. Первая: воспроизведение видео – это только одно действие из целого комплекса, включающего запуск плеера, загрузку в него видеоданных, процесс перемотки и т.д. С точки зрения пользователя, оценивать нужно все вместе. Другая проблема состоит в том, что FPS как ключевая величина гладкости взаимодействия не всегда отражает ощущения пользователя. Например, при скроллинге изображения в приложении Gallery3D на устройстве Б мы видим ощутимые подтормаживания, а на устройстве А всё идет гладко, хотя FPS на нем ниже. Чтобы понять, в чем проблема, мы нанесли период отрисовки фреймов на ось времени. Теперь, наверное, причина видна всем: кроме FPS как такового, надо учитывать его стабильность, то есть вводить метрику максимального отклонения от средней величины.
Фреймрейты в приложении Gallery3D на устройствах А и Б
В качестве сравнения приведем график фреймрейта устройства Б после его оптимизации. Как видим, средний FPS почти не изменился, чего не скажешь об ощущениях пользователя.
Фреймрейт на устройстве Б после оптимизации
Не следует забывать, что ощущение пользователей – понятие субъективное. В современной науке используется несколько методов отслеживания реакции пользователей: мониторинг движения глаз, пульса и т.д. При создании программного обеспечения мы должны подходить к вопросу системно, используя все возможные методы анализа. Разработав же систему метрик (скажем, уже упоминавшиеся чувствительность, плавность, логичность и точность) необходимо определить границы их комфортности для пользователя. В таблице ниже приведены некоторые полученные опытным путем величины.
Отлично | Хорошо | Допустимо | |
Время задержки | ≤100 ms | ≤200 ms | ≤500 ms |
Графическая анимация | ≥120 fps | ≥60 fps | ≥30 fps |
Воспроизведение видео | ≥60 fps | ≥30 fps | ≥20 fps |
Очевидно, что эти данные носят статистический характер и должны применяться с оглядкой на человеческую натуру.
Основываясь на нашем опыте разработки под Android, мы пришли к выводу, что пользовательская оптимизация (ПО) приложений во многом схожа с оптимизацией распараллеливанием, только более сложна в реализации по следующим причинам:
- ПО затрагивает множество программных и аппаратных компонент, а также их взаимодействие;
- ПО вынуждена считаться с вопросами энергопотребления, поскольку это также влияет на ощущения пользователей;
- ПО оперирует жесткими временными рамками; приложение должно работать с комфортной пользователю скоростью, не быстрее и не медленее;
- ПО носит во многом субъективный характер, и многое зависит от чутья разработчика.
Управление энергопотреблением
Энергоэффективность всегда была головной болью для разработчиков мобильных ОС. Прожорливость приложений постоянно растет, и прогресс в аккумуляторных технологиях за ней хронически не успевает. Вот почему важность управления питанием все время возрастает, и для решения этой проблемы необходимо применять поистине глобальный подход.
За последнее десятилетие значительных успехов в области экономии энергии достигли мобильные процессоры. Современные модели поддерживают технологии динамического изменения напряжения и частоты, таких как Enhanced Intel SpeedStep. Со стороны ОС управлением режимами работы процессора занимаются специальные компоненты ядра, такие, например, как cpufreq в Linux. В настоящее время мы наблюдаем процесс перемещения передового фронта борьбы за энергоэффективность от процессоров (где уже сделано немало) к другим системам мобильных устройств. Например, внедрение динамического управления графическим процессором (подобного тому, что применяется в ЦПУ) позволяет в некоторых случаях экономить до 50% энергии. Внимания заслуживают также системы ввода-вывода; повышение их интеллектуальности, способности самостоятельно выбирать оптимальный режим работы также положительно скажется на потреблении.
В нынешних ОС ситуация с энергопотреблением такова. ОС Android исповедует принцип «гибкого саспенда». Не имея средств управления рабочим энергопотреблением устройства, Android агрессивно пытается перевести систему в состояние саспенда, если в ней не происходит ничего интересного, что определяется отсутствием блокировок (wakelock). Windows 8 предлагает принципиально новое состояние устройства, названное «подключенным ждущим режимом». В отличие от традиционного ждущего режима S3, при котором приостанавливаются все системные процессы, здесь система продолжает работать в чрезвычайно экономном режиме, позволяя, например, принимать e-mail. Подключенный ждущий режим реализован аппаратно в процессоре и программно в ядре системы.
Корректность работы приложений с точки зрения энергопотребления остается ахиллесовой пятой обоих описанных подходов к сбережению. Недавние исследования показали, что бесплатные приложения Android потребляют 75% энергии впустую, показывая рекламу в свернутом режиме и не отдавая блокировку. То же самое справедливо и для Windows 8, где даже одно приложение, написанное неверно с точки зрения энергоэффективности, не позволит всей системе уйти в подключенный ждущий режим. В настоящее время не существует четкого понимания, как бороться с такого рода «кривыми» приложениями.
Открытость
Другой важной отличительной чертой мобильной ОС является ее открытость. Под открытостью мы понимаем меру свободы в использовании, распространении, настройки и усовершенствовании ОС для своих нужд. Существует отдельное исследование, посвященное открытости ОС с точки зрения разработчика; здесь же мы рассматриваем ее в рамках экосистемы, то есть всех сторон, так или иначе связанных с эксплуатацией этой ОС.
Еще совсем недавно большинство телефонов имели внутри себя закрытое ПО, куда не имели доступ сторонние разработчики; пользователям же приходилось довольствоваться встроенным инструментарием. В процессе эволюции появились смартфоны с операционными системами, допускающими установку стороннего ПО, которое взаимодействовало с ОС посредством API; разработчикам были предоставлены соответствующие инструменты программирования (SDK). Хорошим примером ОС подобного рода является Apple iOS. Большую свободу для всей экосистемы предоставляют ОС с открытым кодом, как, например, Android; преимущества открытого кода может почувствовать даже конечный пользователь, не имеющий отношения к программированию – они, например, в количестве производителей, использующих эту ОС и, в конечном счете, количестве моделей.
Поддержка облачных технологий
Облачные технологии находят все более широкое распространение в мобильных ОС; в большинстве своем, приложения, их использующие, представляют собой веб-сайты, открывающиеся в браузере или веб-приложения. Очень часто приложения созданы на HTML5, поэтому реализация данной технологии в мобильной ОС находится в центре внимания ее разработчиков. Сайт html5test.com оценивает количественно поддержку HTML на различных платформах, приведем результаты в виде таблицы (в статье приведены устаревшие данные, мы публикуем самые актуальные — прим. переводчика). Нам особенно приятно, что Tizen, новичок в мире мобильных ОС, занимает первое место в этом рейтинге.
Браузер | Платформа | Оценка + бонус |
---|---|---|
Tizen 2 | 492 + 16 | |
BlackBerry 10 | BlackBerry Q10 или Z10 | 485 + 11 |
Dolphin Engine Beta | Android 2.2 или выше | 469 + 3 |
Opera Mobile 14 | Android | 448 + 11 |
Tizen 1 | 426 + 16 | |
Firefox Mobile 22 | Различные платформы | 422 + 14 |
Chrome 25 | Android 4 | 417 + 11 |
Браузеры сторонних производителей находятся в менее выигрышной ситуации по сравнению со встроенными в ОС, поскольку не имеют такого контроля над системой и процессом ее разработки. В идеале, браузер должен работать в своей собственной среде, к этому стремятся все разработчики; про Firefox OS сейчас слышали уже многие, а вот на этом видео можно посмотреть превью Opera OS. Отметим, впрочем, что независимые разработчики по-прежнему легко удерживаются в топе, очередной прорыв – китайский браузер Dolphin Engine (прим. переводчика).
Веб приложения, то есть локальные программы, использующие веб-технологии, требуют поддержки со стороны мобильной ОС (и не только) в виде среды исполнения, фреймворков и средств разработки.
- Среда исполнения обеспечивает работоспособность приложения. Свое происхождение она ведет от браузера, однако более интегрирована в исполняемую среду самой ОС;
- Веб фреймворк предоставляет богатые функционально библиотеки для разработки приложений, примером могут служить jQueryMobile или Sencha;
- Средства разработки должны быть гибкими, чтобы разработчики могли использовать их для своих разнообразных нужд.
HTML5 декларируется как кросс-платформенный стандарт, однако в реальности поддержка HTML5 у разных платформ не одинакова и процесс ее стандартизации сейчас в самом разгаре. Для преодоления несовместимости создан фреймворк PhoneGap, который поддерживается всеми основными мобильными ОС. Желание иметь общий для всех HTML5 есть у всех участников экосистемы, однако реализовать его не так-то просто, поскольку разработчики мобильных ОС постоянно внедряют в него свои собственные идеи.
Проблема производительности беспокоит всех разработчиков, имеющих дело с HTML5. На наш взгляд, наиболее актуальные аспекты оптимизации под мобильные операционные системы таковы:
- Аппаратное ускорение. Графика и видео должны иметь аппаратное ускорение;
- Поддержка многопоточности. Web Worker должен непременно поддерживаться в HTML5;
- Оптимизация движка JavaScript. JIT (Just In Time) включена во всех основных реализациях JavaScript;
- Поддержка нативных или гибридных приложений – возможность использования существующих системных библиотек будет еще одним подходом при создании веб-приложений
Подводя итог всему сказанному, еще раз отметим, что несмотря на некоторые различия в подходах, все мобильные ОС развиваются в одном направлении, в какой-то степени сближаясь друг с другом. Думается, что эта тенденция сохранится и в дальнейшем, что идет только на руку как пользователям, так и разработчикам приложений.
Автор: saul