ART
В Android со времен первой версии изменилось всё. Кроме одного – виртуальной машины Dalvik. Dalvik – это то, что позволяет работать большинству приложений. Для облегчения их создания Google создала фреймворк на Java. Язык этот популярный, в меру современный, многим известный. Но есть нюанс – все Java-программы исполняются не самой системой, а виртуальной машиной.
С одной стороны это замедляет их скорость работы, а с другой – повышает простоту разработки, а также значительно упрощает переносимость приложений между системами. Все эти заявления, что Android-приложения могут работать в BlackBerry 10, Sailfish OS и даже Windows означает, что в этих ОС просто реализована и запущена своя виртуальная машина Java, совместимая с Dalvik.
Изначально Dalvik был создан с учетом одноядерных низкопроизводительных устройств, располагающих малым объемом памяти - как оперативной, так и постоянной. Разумеется, с течением времени Dalvik дорабатывался. Так он обзавелся поддержкой JIT-компиляции, одновременной сборкой мусора, многопоточности и так далее. По сравнению с первым Android-смартфоном HTC G1 производительность современных устройств выросла в 50 раз. С такими ресурсами латания дыр в Dalvik уже недостаточно.
И вот мы имеем Android 5.0, а вместе с ним виртуальную машину ART или Android RunTime. Google ее написала с нуля и внедрила в Android 4.4, но лишь как опцию – разработчики могли тестировать под ART свои приложения. В версии 5.0 кроме ART ничего не осталось.
Что дает ART? Собственно, все. Виртуальная машина использует все преимущества современных комплектующих, обеспечивая не только прирост производительности, но и снижение энергопотребления. Причем разработчикам нет нужды переделывать свои программы – ART как базовая среда исполнения оптимизирует их работу своей повышенной эффективностью. Вот такая лафа досталась всем тем, кто получит Android 5.0.
Одно из главных различий между Dalvik и ART – это смена способа компиляции с JIT на AOT. JIT (just-in-time) заставлял Dalvik компилировать приложение при каждом запуске. В итоге оно максимально оптимизировалось под имеющееся на устройстве ресурсы. AOT (ahead-of-time) предполагает компиляцию только один раз, что создает «усредненный» исполняемый байт-код, который может работать не так быстро.
Однако ART сделан умнее – из Play Store система получает APK-файл с неоткомпилированным кодом. Дальше, при установке, происходит компиляция, учитывающая все особенности устройства. И в результате получается оптимизированное под конкретный смартфон (планшет, машину, компьютер, часы и т.д.) приложение, запуск которого становится заметно короче, поскольку компилировать его больше не надо.
Как не парадоксально, но ART лучше функционирует и на слабых устройствах с малым объемом оперативной памяти. После работы JIT откомпилированный код оставался в оперативной памяти и не записывался на флэш-накопитель. ART, как вы понимаете, сразу исполняет сохраненный откомпилированный код, не загружая его в оперативную память.
Не сложно догадаться, как все описанное влияет на повышение эффективности энергопотребления. Каждый раз, компилируя приложение при запуске, происходит серьезная нагрузка на процессор. Пусть кратковременная, но если ее убрать и заменить менее ресурсоемкой операцией, то заряд аккумулятора будет расходоваться не так быстро.
И в довершение ко всему ART получил одновременный сборщик мусора – это специальный механизм очистки памяти. Dalvik, при загрузке нового приложения, запускает сборщик, временно останавливая все процессы. ART делает сборку мусора не так часто и паузы при остановке не такие долгие. В итоге это сказывается на плавности анимации и общей отзывчивости интерфейса.
При этом надо понимать, что не все приложения для Android пишутся на Java. Существует еще так называемый NDK – Native Development Kit. Он предоставляет API для таких языков, как C и C++. Приложения, созданные на них, работают значительно быстрее, но их переносимость на другие системы значительно хуже. Разумеется, они исполняются самой ОС – никакого посредника в виде виртуальной машины им не требуется.
Но особо беспокоиться не стоит – NDK использует совсем малый процент приложений. Обычно это тесты производительности, трехмерный игры, браузеры и тому подобные. Все остальное, например, оболочки, панели уведомлений, Gmail (и почтовые клиенты), карты и практически любое 2D-приложение написаны на Java. По статистике таких 85%.
И остается еще одно важное изменение, которое приносит ART – поддержка 64-битных процессоров и 64-битной адресации памяти. Android наконец-то стал 64-битным, а потому именно начиная с версии 5.0 начнут появляться с объемом оперативной памяти более 3 Гбайт. При этом можно ожидать прироста скорости и здесь. Не везде, конечно – в основном в ресурсоемких приложениях, работающих с медиа, архивацией или криптографией. Но в любом случае это все будет «бесплатно».
Что касается совместимости приложений с ART, то по идее проблем с этим должно быть минимум. Напомним, что ART присутствовал в Android 4.4 с осени 2013 года, а позже разработчики могли проверить все в Android L.
Итого Android 5.0 предложил не только кардинальные изменения в принципах построения интерфейсов, но еще в нем заменили его главный компонент – виртуальную машину Java. Эта система действительно получила право смены мажорной цифры в индексе.
Уведомления Android 5.0
Казалось бы, Google чуть ли не «изобрела» панель уведомлений в своем Android. Все остальные в том или ином виде скопировали ее. Даже Apple сделала в своей iOS. Но нет, Android 5.0 опять усовершенствовали по части уведомлений. В Google искренне верят, что пределу совершенства нет и это прекрасно.
В новой системе опять пересмотрели дизайн панели уведомлений. Она теперь совмещена с быстрыми настройками. В Android 4.4, напомним, есть отдельный экран для уведомлений и отдельный для настроек. Переключение между ними происходило нажатием на специальную кнопку. Теперь же все выведено на одном экране, причем даже на планшетах. Стягивая вниз панель уведомлений, отдельным фрагментом сверху там представлено несколько настроек. Если нажать на эту мини-панель пальцем или стянуть ее вниз, раскроется полный список.
Google отказался от фона на панели уведомлений, да и пропал «ухват» снизу. Сами уведомления теперь сделаны не темными, а светлыми с круглым значком слева. В быстрых настройках теперь не только «выключатели» - иконки, включающие или выключающие тот или иной компонент. Здесь появились ярлыки для вызова полного экрана настроек, а часть из них вызывает еще одну панель с расширенными настройками прямо поверх текущей.
И самое приятное, что список быстрых параметров пополнили кнопки для блокировки смены ориентации (в «голом» Android такая была только на планшетах) и фонарика. А вот кнопка «автоматическая яркость» пропала. Теперь система всегда подстраивается под текущее освещение и регулировать яркость можно отталкиваясь от данного уровня.
Расширенный вариант быстрых настроек есть для профиля пользователя, мобильной сети передачи данных и передачи изображения на другие устройства. С первого можно быстро переключиться на другую учетную запись, либо вызвать все настройки – об этом подробно рассказано ниже. На втором можно посмотреть объем трафика, превышен ли лимит. Ну а третий экран служит для трансляции изображения на другой экран. Устройства вроде Chromecast могут пользоваться этой функцией.
Серьезно изменилась система сортировки уведомлений. Она уже давно не происходит по времени. Еще в Android 4.2 были добавлены приоритеты уведомлений: min (минимальный – уведомления о погоде и т.п.), low (низкий – обновления приложений, системы и т.д.), default (по умолчанию), high (высокий – сообщения от мессенджеров, поступление новых писем) и max (максимальный – входящие звонки и будильники). Android 5.0 стал действовать еще более умным образом. Например, он учитывает, от кого пришло уведомление – если от контакта из избранного списка, значит оно поднимается выше. Также самые новые уведомления могут выводиться наверх. Теперь не сложно определить, из-за чего пикнул смартфон.
Самое приятное, что уведомления максимального приоритета больше не перекрывают весь экран. Знакомая ситуация: вы играете в игру и вас вот-вот убьют... и тут все замедляется, потом появляется экран с входящим звонком, а еще через секунду телефон начинает противно играть мелодию вызова. В такие моменты сложно кого-либо любить, согласитесь. Android 5.0 менее назойлив – такие события больше не закрывают весь экран, а появляются небольшой панелью сверху. И вам сразу предлагают действия с этим уведомлением: принять или отклонить. Замечательно, правда? Жалко только, что это пока не поддается настройке – только со стороны разработчиков.
Режим работы уведомлений теперь можно конфигурировать на панели регулировки звука. Нечто подобное некоторые производители смартфонов давно реализовали сами. Теперь эта функция идет «из коробки». Всего предложено три варианта: не беспокоить, важные и все. Не сложно догадаться, какие уведомления пропускаются в первом и последнем случае. Во втором останутся только те, что будут указаны в настройках.
Так можно оставить оповещения при звонке или поступлении сообщений. Можно настроить переключения режимов по времени. Замечательно стало, правда? Но учтите, все уведомления будут отображены на своей панели, стягиваемой сверху. Все описанное касается звуковых оповещений и оповещений, приводящих к миганию индикатора на смартфоне.