ART замість Dalvik: чому Android 4.4 «їсть» менше ресурсів

З виходом нових версій Android ця ОС вимагала все більше і більше оперативної пам'яті (ОЗУ) З виходом нових версій 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. Переваги та недоліки кожної можна побачити в таблиці нижче:

Dalvik

ART

Перетворює файли APK в зрозумілий процесору код на льоту, що вимагає менше флеш-пам'яті для зберігання, але через це додатки довше запускаються

Перетворює файли APK в зрозумілий процесору код заздалегідь при їх установці. Це вимагає менше ресурсів процесора при запуску і зменшує час старту програми

Згодом машинний програмний код кешується, що веде до прискорення завантаження мобільника

Кеш машинного коду створюється при першому завантаженні мобільника, через що він включається значно довше

Краще підходить для пристроїв з малоємкі флеш-накопичувачем, так як кеш машинного коду займає менше місця

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

Стабільна і перевірена часом

Нова та експериментальна, можуть виявитися непередбачені помилки і недоліки

Спробувати експериментальний ART

Новий компілятор знаходиться в стадії розробки і досліджень, але користувачі його вже можуть спробувати. Він доступний власникам пристроїв під управлінням Android 4.4 KitKat і на базі чіпсета Snapdragon. Тим, хто зважився спробувати новинку, варто пам'ятати, що нова віртуальна машина може зробити деякі утиліти непрацездатними. Крім того, після перезавантаження смартфон може зажадати до півгодини для старту - це час знадобиться ART на формування кешу додатків.

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

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

За матеріалами: Addictivetips