Dalvik или art что лучше?

ART vs Dalvik: ключевые различия

Эд РевольверBlockedUnblockFollowFollowing Nov 10, 2014

Чтобы сравнить ART и Dalvik, нужно сначала разобраться, что же это такое.

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

А виртуальная машина ART, которая появилась относительно недавно и доступна на устройствах с Android 4.4 и процессором Snapdragon, работает по принципу АОТ Ahead Of Time. Если очень приблизительно описать принцип действия, то в среде АРТ приложения компилируются один раз — при установке. И, как следствие, в щадящем режиме расходуют оперативную память и ресурсы процессора. Это, в свою очередь, сказывается на меньшем энергопотреблении. Но есть во всём этом один минус: в памяти устройства такое приложение будет занимать больше места.

Возникает вопрос, какая же виртуальная машина лучше. Очевидных преимуществ у АРТ нет: в каких-то тестах эта виртуальная машина обходит Dalvik, в каких-то они идут на равных, а в некоторых АРТ и вовсе отстаёт. Разница практически незаметна, но АРТ — это новшество, поэтому, явно будет дорабатываться и в будущем внедряться автоматически во все сборки Android.

В новой версии 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 завтра.

Нашел очень полезную информацию о dalvik-cache в stackoverflow от известных источников (сотрудников Google, которые работали на платформе виртуальной машины Dalvik).

Ниже приводится краткое изложение этого, больше с точки зрения Android пользователя (надеюсь) простыми словами.

Где в моем Android-устройстве находится dalvik-cache?

В типичном устройстве Android есть каталог с именем dalvik-cache . Поскольку Android основан на Linux, он использует структуру файловой системы ядра Linux. Следовательно, этот каталог находится в папке /data . Таким образом, путь для доступа к этому кешу Dalvik на устройстве Android — /data/dalvik-cache

Какова цель кеша Dalvik?

Когда пользователь устанавливает новое приложение на Android, Android выполняет некоторые модификации и оптимизации для файла dex этого приложения (файла, который содержит весь байт-код dalvik для приложения). Затем он кэширует результирующий odex (оптимизированный dex) в каталоге /data/dalvik-cache , чтобы ему не приходилось выполнять процесс оптимизации при каждой загрузке приложения.

Что если я очистлю Dalvik Cache?

Нет никакого эффекта, кроме увеличения времени следующей загрузки приложения, так как оно перестраивается. Таким образом, для загрузки приложения потребуется больше времени, поскольку для его восстановления требуется Dalvik Cache. Следовательно, можно очистить dalvik-cache при установке пользовательских ПЗУ, так как система все равно перестроит его с новым разделом.

Кроме того, начиная с Android 4.4 (KitKat) , Google представила новую Android Runtime под названием ART, которая в конечном итоге заменит виртуальную машину Dalvik. Источник

ART, который использует те же файлы байт-кода и .dex компилирует файл dex в собственный код. Этот скомпилированный код — это то, что сейчас хранится в dalvik-cache

В этой статье рассмотрим как правильно выполнить сброс настроек или wipe на Android. Какие виды сброса бывают и другие различные нюансы.

Сброс настроек, Хард ресет, Wipe — это все слова синонимы (одно и тоже) которые обозначают частичный или полный сброс всех данных и настроек.

Как сделать wipe Android?

Выполнить Wipe в Android можно выполнить с нескольких режимов:

  • Из меню настроек
  • С помощью аппаратной кнопки сброс (если такая имеется)
  • Из меню Recovery
  • Из меню Bootloader средствами Fastboot

Выполнение сброса настроек из меню настроек

Зайдите в меню настроек и найдите меню «Восстановление и Сброс» и перейдите в него:

В меню можете (при необходимости) отметить «Очистить SD-карту» — это сотрет данные на карте памяти и внутренней память тоже, а также все программы и их данные!

Выполнение сброса настроек с помощью аппаратной кнопки сброс

Чтобы выполнить сброс, возьмите тонкую скрепку и разогните ее. Зажмите скрепкой кнопку reset секунд 15- 30. После чего настройки Android обнуляться.

Wipe на Android из меню Recovery

Recovery

  • Как зайти в меню Recovery
  • Как пользоваться Recovery

Wipe можно выполнить как из стандартного Recovery, так и кастомного. Выполнение Wipe из меню Recovery более гибкое по возможностям чем из меню настроек.

Выполнение Wipe из стандартного Recovery

В стандартном Recovery можно выполнить 2 вида сброса настроек. Кнопками «громкости» добираемся до необходимого пункта и нажимаем кнопку «питание», чтобы подтвердить выбор.

  • wipe data/factory reset -этот wipe удаляет все ваши программы их данные, личные настройки. Выполнит удаление данных с раздела DATA и CACHE и папки во внутренней памяти с данными программ.
  • Wipe cache — удаляться временные данные приложений, данный сброс нужен если у вас иногда возникают ошибки на Android!

Выполнение Wipe из кастомного Recovery

В кастомном Recovery также есть аналогичные пункты, как и в стандартном.

  • wipe data/factory reset — выполнит удаление данных с раздела DATA и CACHE и папку во внутренней памяти с данными программ.
  • Wipe cache — удаляться временные данные деятельности программ, данный сброс нужен если у вас иногда возникают ошибки на Android!
  • Если у вас возникают какие-либо проблемы с работой программ, то стоит попробовать сделать вначале WIPE DALVIK CACHE из меню advanced, все ваши программы и их данные останутся:

Если же проблемы останутся, то тогда стоит сделать WIPE DATA/FACTORY RESET!

Также в кастомном recovery есть доп. возможности сброса, для этого стоит перейти в меню MOUNTS AND STORAGE. Здесь у вас есть возможность выполнить wipe на любой раздел Android.

Дополнительная информация о wipe на Android

Данная информация для тех кто хочет знать больше о wipe.

О тонкости выполнения Wipe на Android

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

О тонкости выполнения Wipe на Android 2

По личным наблюдениям заметил следующую особенность, в популярной кастомной прошивке CyanogenMod (LinageOS) есть скрипт, который выполняется во время установки из под меню recovery. Данный скрипт бекапит вначале файлы системы (раздел system) до прошивки и восстанавливает после. Из-за данного скрипта иногда могут возникать и кочевать ошибки, от прошивки к прошивке. Поэтому если вы пользуетесь прошивками LinageOS или вы знаете что в updater-script есть скрипт, который выполняет бекап систенмых файлов, то перед прошивкой лучше сделать еще и format system.

На этом все, оставайтесь с сайтом Android +1!

С выходом новых версий 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

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 и после перезагрузки телефона или планшета он завис, ждите.

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

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