В середине мая компания Google провела ежегодную конференцию Google I/O 2017. Мы не писали о ней отдельное мнение, но нашли интересный материал в англоязычном блоге Tech Specs. С разрешения автора, публикуем перевод его статьи.

Это адаптированный перевод статьи из личного блога Даниэля Матте TechSpecs.blog. Много технической информации, мало картинок.

Курсивом выделены пометки редакции.

Android

В этом году конференция Google I/O показала огромное количество изменений. Улучшения Android и вовсе оказались самыми серьезными с 2014 года.

Не буду ходить вокруг да около — изменения с Android 5.0 до Android O сблизили платформу с iOS. Я считаю, что команда разработчиков установила правильные приоритеты для улучшения системы, даже если из-за этого пришлось пожертвовать очевидными для пользователей изменениями.

Kotlin

Самым большим событием стала официальная поддержка языка программирования Kotlin. Это удивительно, ведь на прошлогодней конференции разработчики игнорировали запросы о поддержке Kotlin. И хотя большинство участников команды использовали этот язык программирования, похоже, они предполагали, что в обозримом будущем Java останется основным языком разработки для платформы.

Я не программист, поэтому мои суждения о языках программирования наверняка ложны. Однако, судя по тому, что я читал о Kotlin в интернете, это хороший язык. Он изначально разработан для беспроблемной интеграции в Android. Теперь, когда Android SDK официально поддерживает этот язык, он наверняка может полностью заменить Java для любого разработчика ПО. В начале наверняка будут какие-то пробелы в инструментарии, однако это наиболее простой переход для разработчика, который только возможен.

Следующим шагом станет перенос интерфейсов программирования приложений (API) на Kotlin. Не думаю, что кто-то будет скучать по Java.

Новая архитектурная модель

Главный кошмар Android-разработчика — длительная и принудительная продолжительность поддержки приложений для старых версий ОС. Поэтому команда Android представила новую архитектурную модель. Бесценное улучшение, однако оно принуждает разработчиков использовать новые классы (элементы ПО, которые частично или полностью описывают абстрактный тип данных).

По словам Йигита Бояря, эта модель ближе к Reactive, нежели к стандартному шаблону проектирования приложений Model-View-ViewModel (упрощает работу с базами данных и отслеживает жизненный цикл отдельных активностей).

Android O повышает скорость работы системы — возможно, это самое важное обновление с выхода Android 5.0 Lollipop. Одной из ключевых особенностей новой версии стал отказ от очередности привязки данных, в результате чего уменьшилось количество системного «мусора» после включения устройства. Я был приятно удивлен, как нововведение сказывается на быстродействии смартфона Nexus 6P.

Подробнее об очередности привязки данных (binder lock contention) читайте в объяснении Дианы Хакборн.

Значительно ускорилась и загрузка ОС — например, смартфоны Pixel с Android O стартуют в два раза быстрее. Благодаря разным оптимизациям ускорилась и загрузка программ. Я думаю, что эти улучшения возникли из-за многочисленных видеороликов со сравнениями скорости загрузки ПО на смартфонах. Предупреждаю вас: эти тесты нельзя считать адекватным мерилом скорости работы устройства.

Новый рендер

Еще одной важной особенностью Android O стала опциональная модель отрисовки изображения, которую можно активировать в настройках для разработчиков. О ней мало что известно, кроме того что она базируется на графической библиотеке Skia. Я ничего не знаю о графических библиотеках, но Android и Fuchsia OS используют Skia с первого дня. Поэтому преимущества нового рендера неочевидны.

Возможно, это переписанная версия на Vulkan или оптимизированный для современного «железа» инструмент разработки — однако я не нашел о ней информацию в интернете.

Улучшения ART

Среда выполнения ART перешла с автоматического алгоритма очистки памяти после закрытия приложения на параллельную модель постоянной очистки памяти. По заявлению компании, такая модель требует меньше времени для перераспределения памяти и в целом расходует ее меньше. Интересно, какие у нее недостатки.

Если вы хотите узнать об этом больше, посмотрите презентацию ART. Возможно, вас удивит, что среда наконец-то начала поддерживать автоматическую векторизацию. Я не буду объяснять здесь принцип работы параллельных компьютерных вычислений ОКМД (SIMD), но в будущем, возможно, напишу об этом отдельную статью.

Оптимизация использования WakeLock

Теперь консоль для разработчиков Play Developer Console помечает плохо оптимизированные приложения, которые тормозят и часто пробуждают устройство. Будущие обновления платформы ограничат разработчиков в использовании фоновых процессов, которые не дают смартфону уйти в «сон». Пользователи по достоинству оценят это нововведение.

Project Treble

Так как Google разрабатывает новые версии Android не прилюдно, о проекте Project Treble известно мало. Если отбросить размытые маркетинговые формулировки, то мы знаем, что аппаратные компоненты, которые зависят от производителя устройства, теперь работают в каком-то виде «песочницы».

Удивительно, но теперь можно обновлять драйвер графического ускорителя через магазин приложений Play Store. Подозреваю, это заслуга именно Project Treble.

Project Treble снижает зависимость от обновлений ПО комплектующих вендоров (вроде Qualcomm). Это должно помочь экосистеме устройств на Android, однако я сомневаюсь, что это будет распространяться повсеместно, в том числе на небольшие компании типа MediaTek. Проект не повлияет и на то, что в ядре Linux нет стабильного драйверного ABI.

Android Go

После анонса Android Go я сразу заинтересовался, не изменилось ли в платформе управление памятью. Последний раз требования к количеству ОЗУ резко возросли вместе с выходом Android 5.0. Сейчас нет спецификаций основного документа совместимости для версии Android O, поэтому не ясно, изменятся ли минимальные требования к количеству оперативной памяти. Однако, судя по конференции об ART, общий расход ОЗУ должен снизиться.

Также Google предоставила Android-разработчикам процесс-аналог App Slicing в iOS (он определяет, какие данные приложения нужны для конкретного устройства и загружает только подходящие данные, чем экономит память смартфона). Вдобавок, Android O поддерживает защищённые элементы памяти — прямо как зашифрованное пространство Secure Enclave в технике Apple.

Глубинное обучение

Google уделила на конференции много внимания машинному обучению — сейчас TensorFlow это самая популярная библиотека глубинного обучения. Хоть она и была доступна на Android с самого начала (и позднее стала доступна на iOS), Apple представила в iOS 10 оптимизированные для выполнения на мобильном графическом ускорителе фреймворки и библиотеки свёрточной нейронной сети раньше Google. Поэтому упрощенная версия библиотеки TensorFlow Lite это важный анонс.

В ближайшем будущем TensorFlow Lite усовершенствует новый интерфейс программирования приложений Android Neural Network и позволит разработчикам ускорить алгоритмы работы ИИ при помощи графических ускорителей и цифровых сигнальных процессоров.

Виртуальная реальность

Джонни Ли, исследователь человеко-компьютерного взаимодействия, подтвердил, что система отслеживания дополненной реальности Google Visual Positioning Service это рекламное название для системы изучения местности Area Learning и функции измерения глубины Point clouds, которые хранятся в облаке. Самостоятельные же шлемы виртуальной реальности Daydream используют для оценки положения и ориентации в пространстве стереовизуальную одометрию, метод одновременной локализации и построения карты 3D SLAM. Отклонения шлемы корректируют при помощи системы изучения местности.

Google продвигает на рынке комбинацию «железа» и программных алгоритмов как WorldSense — технологию, которая базируется на проекте Tango. Также компания показала потрясающую технологию виртуальной реальности Seurat, которая в реальном времени отрисовывает высокодетализированное изображение на мобильном устройстве благодаря неопределенному виду отрисовки светового поля. Технология может быть любой, но это не магия — посмотрите не менее впечатляющую демо-версию «восьмипространственной» голографической технологии отрисовки светового поля OTOY.