ART и Dalvik: Как оно работает
12

Android KitKat

Внутри последней итерации операционной системы Android нашлось место для многих изменений и усовершенствований. Большинство из них сразу же бросается в глаза даже рядовому пользователю данной системы. Это, конечно же, установка в качестве стандартного месседжера приложения Hangouts, переделанное меню набора номеров и добавление клавиатуры Emoji. Бывалые же приверженцы Android наверняка ощутят прилив производительности в сравнении с более старыми ее релизами. Однако не обошлось и без скрытых сторон, которые, согласно логике, должны представлять интерес лишь для разработчиков. Впрочем, значимость одного из подобных нововведений особенно велика. Кроме того, вскоре оно коснется каждого из нас, а потому умолчать о его подробностях было бы просто преступлением.

Наверное, многие из вас хотя бы краем уха слышали о том, что в Android KitKat появился особый режим. Суть его заключается в более быстром запуске приложений и в более стабильном и плавном их выполнении. Возможно, попытки разобраться в данном вопросе самостоятельно не были увенчаны успехом. Оно и неудивительно: слова «виртуальная машина» и «компиляция» способны испугать кого-угодно, особенно, если информация потребляется из англоязычного источника. Для решения данной проблемы мы решили разобраться в сути вопроса самостоятельно, изложив его в максимально доступном виде.

Немного базовых понятий

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

Dalvik Art

В качестве среды выполнения в нашей любимой операционной системе Android используются виртуальные машины, первая из которых — Dalvik — заработала еще в далеком 2007 году. Именно ей мы и обязаны периодическими зависаниями интерфейса и порой медлительными запусками приложений. Впрочем, данная проблема уже скоро может стать частью истории.

Почему именно виртуальные машины?

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

Второй плюс — кросплатформенность. Виртуальная машина сможет запустить приложение, даже если оно создано на PC.

Преимущества и недостатки Dalvik

Dalvik, как и все в этом мире, неидеальна. Причиной периодических подергиваний интерфейса является тип преобразования кода приложения в аппаратный. Данная машина проделывает это в прямом эфире, а называется такой тип компиляции Just-In-Time. Соответственно, предугадать появление багов практически невозможно, поскольку подобное может произойти в любой момент. Особенно велика вероятность подобного во время первого запуска, когда часть преобразованного кода даже не сохранена в кеше.

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

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

Nexus 5

Исправить вышесказанное призвана новая виртуальная машина, которая успела отметиться далеко не самым замысловатым названием — Android Runtime. Или же сокращенно — ART.

Преимущества и недостатки ART

Новая виртуальная машина обрела жизнь вместе с Android 4.4 KitKat, однако на презентации ей не уделили должного внимания. Причиной этого является то, что ART все еще находится на экспериментальной стадии. Впрочем, хотя и Dalvik используется в качестве машины по умолчанию, переключиться на Android Runtime можно уже сейчас.
Однако не спешите это делать. Сначала необходимо ознакомиться с особенностям новой версии.

Наиболее заметным преимуществом ART является новый тип компиляции, который получил название Ahead-Of-Time. Читатели, знающие английский язык, наверняка сразу же догадались, в чем дело. А дело в том, что процесс преобразования кода в новой версии осуществляется до запуска приложения — еще во время установки. Соответственно, сразу же вырисовываются несколько минусов, о которых, справедливости ради, стоит упомянуть. Это, во-первых, более длительный процесс установки, а во-вторых, больший объем конечного размера приложения. Еще один недостаток является следствием незрелости ART: виртуальная машина на данный момент работает далеко не со всеми приложениями.

Nexus

Впрочем, список заслуг куда более значимый. Это, к примеру, более плавная работа интерфейса и более быстрая загрузка приложений. Кроме того, поскольку процесс компиляции осуществляется лишь единожды, он не будет в дальнейшем нагружать процессор, что станет причиной улучшенной автономности устройства.

Переключиться на виртуальную машину ART в меню разработчика могут владельцы устройств под управлением Android 4.4 с процессором Snapdragon.

Итог

Развитие данной технологии имеет огромный потенциал. На карте стоит развенчание мифа о медлительности и нестабильности Android, что не только порадует владельцев устройств под ее управлением, но и ликвидирует наиболее серьезный аргумент в спорах со стороны приверженцев iOS.

На данный момент представители компании Google не сообщают о сроках окончательного внедрения и замены Dalvik на ART. Хочется верить, что это произойдет уже очень скоро.

Теги

12 комментариев Оставить свой

  1. burivuh #

    ART может и перспективный, но со стабильностью у него явные проблемы. Если телефон или планшет имеют deodex прошивку и кастомное recovery — лучше для улучшения производительности не ART включать, а поставить dalvic bionic patch.

  2. AlanWake #

    во! в кои века нормальным языком описанная функция
    правда теории больше чем практики, с какими популярными программами ART работает быстрее чем прошлый вариант?

    • Королев Михаил #

      Торетически со всеми.

      • AlanWake #

        ок, по другому спрошу — практически, с какими он работает ХУЖЕ ?

        • it-trend #

          Вы заметите улучшения с теми приложениями, которые были проблемы. Рывки там. Если сравнивать одновременно на двух телефонах с Dalvik и с ART, то тоже будет часто заметно ускорение интерфейса.
          Проблема была в приложениях, которые вообще не работали. Вроде в Whatsapp. Так как одновременно две виртуальных машины не работают, с этим приходилось бы мириться. Последние версии Whatsapp в ART заработали.

  3. it-trend #

    Ребята, вам нужно или редактора, или возможность выделенные по Ctrl+Enter отправлять.

  4. Andy #

    о чем статья? ни о чем
    что в ней рассказано, практически ничего, все это давно было итак известно

    заходя в статью «ART и Dalvik: Как оно работает» хочется действительно понять как оно работает, а в итоге имеем поверхностное все известное объяснение

  5. Vsevolod #

    мне как бывшему пользователю ios, и новому android было интересно. Спасибо

    • SkyRider #

      И мне тоже. К тому же приобрел жене Nexus 5, а всего ещё не знаешь в Android 4.4.2
      Протестирую и отпишусь какие же приложения работают на ART. А вообще было бы хорошо кому нибудь из вас статейку такую подготовить. Думаю многим будет интересно!

  6. pushistiy kote #

    спс за статью теберь с еще большим нетерпением жду обновления))

  7. igorvek #

    Эх линукс! Что можно сказать, сырьё, баги, недоработки. Хотя надо отдать должное — хорошо лечится ребутом. Застрял телефон не отвечает, не звонит, — ребут; застрял навигатор, увел в подворотню с кирпичем, — ребут вам в лечение, так с линуксом с 2006 и мучаюсь, купил смартфон на андроиде, а это оказывается снова линукс!

Новый комментарий