Далвик (программное обеспечение)


Dalvik — это виртуальная машина процесса (ВМ) в операционной системе Android, которая больше не поддерживается и выполняет приложения, написанные для Android. [1] (Формат байт-кода Dalvik по-прежнему используется в качестве формата распространения, но больше не используется во время выполнения в более новых версиях Android.) Dalvik был неотъемлемой частью программного стека Android в (теперь неподдерживаемой) версии Android 4.4 «KitKat» и более ранних версиях. , которые обычно использовались на мобильных устройствах, таких как мобильные телефоны и планшетные компьютеры , а также на некоторых устройствах, таких как смарт-телевизоры и носимые устройства . Dalvik — это программное обеспечение с открытым исходным кодом., первоначально написанный Дэном Борнштейном, который назвал его в честь рыбацкой деревни Далвик в Эйяфьордуре , Исландия . [2] [3]

Программы для Android обычно пишутся на Java и компилируются в байт -код для виртуальной машины Java , который затем транслируется в байт-код Dalvik и сохраняется в файлах .dex( Dalvik EXecutable ) и .odex( Optimized Dalvik EXecutable ); связанные термины odex и de-odex связаны с соответствующими преобразованиями байт-кода. Компактный формат Dalvik Executable разработан для систем, которые ограничены в плане памяти и скорости процессора .

Преемником Dalvik является среда выполнения Android (ART), которая использует тот же байт-код и файлы .dex (но не файлы .odex), при этом преемственность нацелена на повышение производительности, прозрачное для конечных пользователей . Новая среда выполнения была впервые включена в Android 4.4 «KitKat» в качестве предварительной версии технологии [ 4] [5] и полностью заменила Dalvik в более поздних версиях; Android 5.0 «Lollipop» — первая версия, в которой ART является единственной включенной средой выполнения.

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

Инструмент под названием dxиспользуется для преобразования файлов Java .class в формат .dex. Несколько классов включены в один файл .dex. Повторяющиеся строки и другие константы, используемые в нескольких файлах классов, включаются в выходной файл .dex только один раз для экономии места. Байт- код Java также преобразуется в альтернативный набор инструкций, используемый виртуальной машиной Dalvik. Несжатый файл .dex обычно на несколько процентов меньше по размеру, чем сжатый архив Java (JAR), полученный из тех же файлов .class. [6]

Исполняемые файлы Dalvik могут быть снова изменены при установке на мобильное устройство. Для дальнейшей оптимизации порядок байтов в определенных данных можно поменять местами, простые структуры данных и библиотеки функций можно связать inline , а пустые объекты класса можно, например, замкнуть накоротко.


Сравнение архитектур Dalvik и ART
Телефон на базе Dalvik