0

Среда выполнения art или dalvik?

ART или Dalvik на Android — что это такое, что лучше, как включить

25.02.2014&nbsp мобильные устройства

Google представила новую среду выполнения приложений как часть обновления Android 4.4 KitKat. Теперь, помимо виртуальной машины Dalvik, на современных устройствах с процессорами Snapdragon появилась возможность выбрать среду ART. (Если вы попали на эту статью с целью узнать, как включить ART на Android, пролистайте ее к окончанию, там дана эта информация).

Что такое среда выполнения приложений и причем тут виртуальные машины? В Android, для выполнения приложений, которые вы скачиваете в виде файлов APK (и которые не являются компилированным кодом) используется виртуальная машина Dalvik (по умолчанию, на данный момент времени) и задачи по компиляции ложатся именно на нее.

В виртуальной машине Dalvik для компиляции приложений используется подход Just-In-Time (JIT), подразумевающий компиляцию непосредственно при запуске или же при определенных действиях пользователя. Это может приводить к долгому времени ожидания при запуске приложения, «тормозам», более интенсивному использованию RAM.

Как на самом деле и что лучше, ART или Dalvik?

В Интернете есть уже множество различных сравнений работы Android устройств в двух средах и результаты разнятся. Один из самых масштабных и подробных таких тестов выложен на androidpolice.com (англ.):

  • производительность в ART и Dalvik,
  • время работы от батареи, энергопотребление в ART и Dalvik

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

Общий вывод большинства тестов — очевидной разницы при работе что с ART, что с Dalvik нет. Однако, новая среда и используемый в ней подход выглядят многообещающе и, возможно в Android 4.5 или Android 5 такая разница будет очевидна. (Более того, Google, возможно, сделает ART средой, используемой по умолчанию).

Еще пара моментов, на которые следует обратить внимание, если вы решите включить среду ART вместо Dalvik — некоторые приложения могут работать неправильно (или не работать вообще, например WhatsApp и Titanium Backup), а полная перезагрузка Android может занять 10-20 минут: то есть, если вы включили ART и после перезагрузки телефона или планшета он завис, ждите.

Android от А до Я: ART — новая среда выполнения приложений на Android 4.4 KitKat (замена Dalvik)

Ранее мы уже писали о том, что у виртуальной машины Dalvik в KitKat появился конкурент в виде ART. Настало время более подробно рассказать о том, что это такое, и какие преимущества ждут Android пользователей в скором времени.

ART (аббревиатура термина «Android Runtime») — это новая среда выполнения приложений, написанная на C/C++, которая отличается от существующей в Android виртуальной машины Dalvik тем, что все приложения в системе уже скомпилированы, а значит, потребность в JIT-компиляторе отпадает.

Таким образом, ART позволяет запускать приложения на разном железе (wiz. ARM,x86) без предварительной адаптации со стороны разработчиков. Помимо этого на запуск приложений в новых условиях уходит в два раза меньше времени. Не обошлось и без недостатков, один из которых связан с принципом работы в условиях ART. Данная среда приводит к тому, что вся необходимая информацию переводится в машинно-ориентированный язык еще во время установки приложений (AOT компиляция), а это требует дополнительного времени, из-за чего весь процесс установки очень сильно растягивается, а приложения занимают больше места, так как все время скомпилированы.

Хоть ART и присутствует в Android 4.4 KitKat, но по умолчанию по-прежнему используется виртуальная машина Dalvik. ART же все еще находится на стадии разработки, но каждый желающий уже может активировать новую технологию:

Settings -> Developer options -> Select runtime

Если вы такие решили протестить новую среду, то не стоит забывать, что первая загрузка может продлиться до 20 минут, а то и больше: системе потребуется много времени, чтобы перейти к новым принципам работы. Библиотека libdvm.so будут заменена на libart.so, а файлы ODEX на OAT. Последние можно найти .

Отметьте себе, что переходить на ART в случае с кастомными ROM’ами не рекомендуется, так как может возникнуть проблема несочетания с текущей версией Gapps приложений, что приведет к ошибкам, вылетам системы и сделает работу на устройстве невозможной.

Так как в Android 4.4 KitKat мы имеем дело лишь с прототипом новой среда выполнения приложений, то делать выводы, исходя из теперешних практических результатов, слишком рано. ART еще абсолютно не оптимизирована, но уже можно говорить о том, что в новых условиях приложения будут шустрее, анимация станет более плавной, а реакция на прикосновение к тачскрину улучшится. Помимо этого ART сможет сократить нагрузку на процессор: для работы большинства процессов необходимо будет задействовать лишь часть ядер. Это приведет к более эффективному использованию ARM архитектуры big.LITTLE, а значит, энергопотребление Android устройств удастся сократить, а время работы — увеличить.

Фактически ART включает в себя два бекенд компилятора. Как первый, так и второй — это AOT (Ahead-of-Time) компиляторы, причем один из них используется для распознавания машинного кода и работы с GCC, cl.exe (LLVM компилятор).

Влияние на разработчиков

Как ни странно, но на создание приложений переход на ART не должен отразиться. Специфика новой среды такова, что ART читает байт-код для Dalvik, а значит, новые знания и умения добывать не придется. Работа будет осуществляться все с тем же Java байт-кодом. С другой стороны у AOT компиляции есть один недостаток: ошибки, возникающие на разном железе. В связи с этим разработчикам придется тестировать свои приложения на большем количестве Android устройств. При этом прекомпиляция позволит сократить возможный объем работы, а создавать приложения с ART можно будет на любом языке с LLVM фронтэндом. Отдельно стоит отметить доступ к машинному коду: у разработчиков будет больше возможностей, но в случае ошибки готовый продукт может нанести вред Android устройству. Последний важный момент связан с использованием JNI — стандартного механизма для запуска кода под управлением виртуальной машины Java, с которым связано обеспечение двоичной совместимости.

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

В чём преимущество новой среды ART?

Инструменты ART и Dalvik выполняют схожие функции, поэтому выявить преимущества новой виртуальной машины можно лишь путём сравнения. Рассмотрим достоинства и недостатки каждой среды выполнения.

Среда выполнения Dalvik устанавливается с 2008 года. По сути, этот инструмент является ровесником операционной системы. Этот инструмент использует способ компиляции файлов JUST IN TIME. Суть заключается в том, что преобразователь кода активируется вместе с запуском приложения. Недостаток такого способа компиляции заключается в повышенном потреблении ресурсов процессора при запуске программ. В результате некоторые используемые файлы откровенно тормозят или вылетают.

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

Важно! При обновлении приложения кэш становится неактуальным, поэтому полностью избавиться от зависания приложений не получится!

ART в Android появился сравнительно недавно. В версии 4.4 новая среда проходила тестирование, а в Android 5.0 установлена по умолчанию. Разработчики учли ошибки предыдущей версии, поэтому работа новой среды выполнения заметно улучшилась. Например:

  • Изменился процесс компиляции. Виртуальное устройство работает по принципу AHEAD OF TIME. Расшифровка файлового кода происходит не в момент запуска, а в процессе установки. Это снижает потребление ресурсов оперативной памяти.
  • Стали поддерживаться 64-х битные ОС.
  • Виртуальная машина быстрее удаляет информационный мусор, соответственно зависания системы сведены к минимуму.

Среди выявленных недостатков выделяется следующее:

  • Приложения дольше устанавливаются.
  • Виртуальный инструмент занимает больше оперативной памяти.

Как активировать ART

Чтобы включить среду выполнения на мобильном устройстве, потребуется выполнить такую последовательность действий:

  • Переходим в меню настройки. На мобильных устройствах этот раздел изображён в виде иконки с шестерёнкой.

  • Twitter
  • Blogger

Рис.1 Перейдите в раздел «Настройки»

  • Прокручиваем список вниз.
  • Заходим в раздел «О телефоне», находим графу «Номер сборки» и нажимаем несколько раз. Это откроет доступ к возможностям разработчика, и в меню настройки появится соответствующий пункт.
  • Twitter
  • Blogger

Рис.2 Несколько раз нажмите на графу «Номер сборки»

  • Переходим в раздел для разработчиков и нажимаем пункт «Среда выполнения». Здесь отмечаете использование ART.
  • Twitter
  • Blogger

Рис.3 В пункте «Среда выполнения» отмечаете использование ART

Важно: описанная процедура актуальна для Android 4.4 и старше. Если вы используете старую версию, то смартфон по умолчанию использует Delvik, соответственно пункт меню «Среда выполнения» отсутствует.

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

Что выбрать?

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

ПОСМОТРЕТЬ ВИДЕО

Если позволяет объём памяти, лучше выбирать ART. Этот инструмент не перегружает процессор и быстрее работает с приложениями. Кроме того, это новая система, которая будет дорабатываться, и обрастать новыми возможностями.

В новой версии Android появилось одно важное, хотя и не очень заметное, на первый взгляд, нововведение — появилась новая виртуальная машина ART. О том, что такое ART, виртуальная машина и почему она новая, рассказывается в англоязычном блоге Атиф Хана (Aatif Khan), запись из которого мы и решили перевести для вас. Отдельную благодарность за помощь выражаем Анжелу Божинову.

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

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

Что такое среда выполнения приложений (виртуальная машина)?

Обсуждение Dalvik и ART невозможно без понимания азов, поэтому сначала поговорим о виртуальной машине как таковой. Среда выполнения приложений — это набор инструкций, выполняемых для перевода кода приложения в код, понятный компьютеру. Виртуальная машина задействуется, даже не являясь частью основной программы. В целом, все «управляемые» компьютерные языки (Java в Android, С# в Windows Phone, ECMAScript в браузерах) требуют такую среду для понимания языка, на котором написано приложение.

Android использует виртуальную машину для выполнения DEX-файлов (аналог EXE в Windows), которые содержатся в APK-архиве Android-приложения. Существует сразу два преимущества такого решения. Во-первых, каждое приложение выполняется в системе, изолированной от ядра ОС, так что последнее чувствует себя более-менее в безопасности. Во-вторых, использование виртуальной машины открывает дорогу кросс-платформенным приложениями, то есть приложение может работать на ARM-смартфоне, MIPS-планшете или x86-компьютере.

Как известно, все это время в Android использовалась виртуальная машина Dalvik, с которой наверняка встречался каждый, кто хоть немного вникал в особенности ОС.

Что же такое Dalvik и в чем его проблема?

Вот и главный вопрос. Dalvik используется в Android с первой версии ОС, с 2007 года, а серьезное изменение за все это время было практически одно — появление в Froyo «компиляции на ходу», более известной как JIT. Главная ее особенность — приложение полностью компилируется при открытии или запуске пользователем соответствующих инструкций. Это очень полезное исправление, так как до 2.2 все приложения компилировались шаг за шагом, что уменьшало скорость работы; единственный минус такого решения — при старте программы на процессор идет серьезная нагрузка.

Во избежание дополнительной работы при повторном запуске программы, система собирает вместе все скомпилированные за время использования приложения инструкции и отправляет их в кэш, который хранится в файловой системе с расширением *.ODEX (Optimized Dalvik EXecutable). Как только вы во второй раз запустите приложение, Dalvik уже не будет заниматься компиляцией, а загрузит уже оптимизированные под ваше устройство данные в память. Однако вызов функции приложения, не использовавшейся ранее, приведет к новому компилированию инструкций. Если в этот момент система проводит стороннюю работу (например, прослушивание музыки или обновление приложений), то из-за перегрузки процессора и подсистем ввода/вывода у памяти можно пронаблюдать ощутимые рывки и тормоза. Вот тут и появляется ART.

ART пока эксперимент

Безусловно, в данный момент ART лишь тестируется и доступен только для устройств на версии Android 4.4 и чипсетах от Qualcomm. Однако вы можете уже сейчас переключиться с Dalvik на ART через скрытые инструменты разработчиков (меню открывается после нескольких тапов по номеру сборки в информации об устройстве). Заметим, что не все приложения смогут работать в ART без дополнительных обновлений; кстати, первый запуск в режиме ART может занять до 30 минут.

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

Отзывы о новой технологии смешанные. Пользователи флагманов с четырехъядерными процессорами и 2 Гб оперативной памяти могут по-настоящему оценить прирост скорости при переключении на ART. Некоторые отмечают 50% прирост в скорости устройства и 30% — в автономности; другие утверждают, что это лишь эффект плацебо.

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

С выходом новых версий Android эта ОС требовала все больше и больше оперативной памяти (ОЗУ). Первые аппараты с ней имели 256 МБ ОЗУ, но сегодня одного гигабайта уже может оказаться недостаточно. Однако в Google взялись за оптимизацию и выпустили Android 4.4 KitKat. Эта версия операционной системы работает быстрее, но при этом требует меньше ресурсов. Подобное стало возможным благодаря переходу с системы Dalvik на ART. О том, что это такое и почему смартфоны с Android 4.4 и будут работать быстрее на слабых процессорах, читайте ниже.

Одной из причин популярности мобильной ОС Google стала сравнительная легкость разработки приложений для нее. Благодаря этому магазин программ Google Play быстро наполнился утилитами. Подобное стало возможно с помощью виртуальной машины Dalvik, которая преобразовывала код приложений в понятный процессору мобильника или планшета. Программисты пишут так, как им удобно, и им не нужно заботиться о том, какой чипсет стоит в гаджете пользователя: от Qualcomm, Intel, Mediatek, nVidia, Samsung или другого вендора.

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

Google уже давно начала бороться с этой проблемой: первым серьезным шагом стал проект Project Butter, анонсированный вместе с Android 4.1 Jelly Bean. Благодаря ему операционная система стала несколько быстрее реагировать на действия пользователя, но в целом проблема осталась. Поэтому в Google создали готовят ART — замену виртуальной машине Dalvik.

Зачем Android нужна виртуальная машина

Любая программа использует множество стандартных действий: вывод изображения на экран, запись файлов в память, передачу файлов по Bluetooth или Wi-Fi. Чтобы облегчить программистам жизнь, операционная система имеет встроенные функции для выполнения этих заданий. Разработчику достаточно лишь в своем приложении указать «скопировать файл ХХХ на карту памяти в папку УУУ». Он не заботится о том, как это выполняется и сколько для этого требуется системных ресурсов.

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

Файлы в формате APK, которые скачивает пользователь из Google Play Store или любого другого сервера, – это нескомпилированный код. Ни один компьютер не сможет его выполнить, так как просто «не поймет». Если бы утилиты поставлялись в уже скомпилированном и понятном «железу» виде, тогда часть из них работала бы, например, на устройствах с чипсетом Snapdragon, но выдавала бы ошибку при запуске на гаджетах с чипами Tegra.

Каждый производитель адаптирует Dalvik под свой процессор и аппаратное обеспечение. Благодаря этому одна и та же программа может работать на гаджетах практически любого производителя без правки ее исходного кода. И именно по этой причине нельзя просто взять и установить новую версию Android в устройство наподобие переустановки Windows.

Что такое Dalvik и почему он требует замены

Виртуальная машина Dalvik (названа в честь исландского рыболовного порта Дальвик) присутствует в Android от самого старта этой операционной системы в 2007 году. С тех пор она претерпела лишь одно крупное изменение: в Android 2.2 Froyo код из APK трансформировался в машинный код на лету сразу после запуска утилиты пользователем. Раньше он обрабатывался строчка за строчкой во время исполнения программы на мобильном устройстве. Новый подход позволил упростить запуск утилит и их работу, но это сказалось на требовании к аппаратным ресурсам. И сегодня уже одного гигабайта оперативной памяти может не хватать для быстрой работы мобильника.

Что такое ART и как она поможет Android

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

Основное различие между этими виртуальными машинами – это подход к компиляции. Если Dalvik преобразует код в реальном времени сразу после запуска утилит, то ART делает это заблаговременно при установке. Это означает увеличение времени установки утилит и больший занимаемый объем в флеш-памяти устройства. Но это же означает и ускорение запуска и уменьшение требований к аппаратным ресурсам, особенно объему ОЗУ. Вот почему Android 4.4 KitKat, по словам Google, сможет быстро и стабильно работать на гаджетах с объемом оперативной памяти в 512 МБ. Новый подход к преобразованию кода позволит также уменьшить потребление заряда батареи.

Сравните объем одних и тех же программ при использовании Dalvik (слева) и ART (справа)

Dalvik против ART – сравнение

В целом виртуальная машина ART обещает много улучшений по сравнению с существующей Dalvik. Преимущества и недостатки каждой можно увидеть в таблице ниже:

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

Преобразует файлы APK в понятный процессору код заранее при их установке. Это требует меньше ресурсов процессора при запуске и уменьшает время старта программы

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

Кэш машинного кода создается при первой загрузке мобильника, из-за чего он включается значительно дольше

Лучше подходит для устройств с малоемким флеш-накопителем, так как кэш машинного кода занимает меньше места

Потребляет значительно больше флеш-памяти (на 10-20%), так как кроме файлов APK хранит скомпилированный машинный код каждой программы

Стабильная и проверенная временем

Новая и экспериментальная, могут обнаружиться непредвиденные ошибки и недостатки

Попробовать экспериментальный ART

Новый компилятор находится в стадии разработки и исследований, но пользователи его уже могут попробовать. Он доступен владельцам устройств под управлением Android 4.4 KitKat и на базе чипсета Snapdragon. Тем, кто решился попробовать новинку, стоит помнить, что новая виртуальная машина может сделать некоторые утилиты неработоспособными. Кроме того, после перезагрузки смартфон может потребовать до получаса для старта – это время понадобится ART на формирование кэша приложений.

Чтобы включить ART вместо Dalvik, нужно войти в меню разработчика. Для активации последнего требуется открыть настройки смартфона и перейти в раздел «О телефоне». Там нужно множество раз нажимать на кнопке «Номер версии», пока ОС не сообщит о доступности нового меню. После этого требуется выбрать используемую виртуальную машину и перезагрузить устройство.

В целом тесты пользователей, которые перешли на ART, свидетельствуют об общем ускорении работы примерно на 50% и увеличении времени работы от батареи до 30%.

По материалам: Addictivetips

admin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *