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

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


person Jaison Varghese    schedule 28.03.2012    source источник


Ответы (3)


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

person Rajdeep Dua    schedule 28.03.2012

Нам нужен кто-то, кто скомпилирует и преобразует классы Java в байт-код, который может быть выполнен интерпретатором.

Это похоже на JVM... у вас есть файлы .java, которые будут скомпилированы компилятором java в файлы .class. файлы .class - это не что иное, как байт-код, который будет запускаться JVM. JVM может находиться на любой платформе (Windows, Linux или Unix).

В Android файлы также компилируются в файлы .dex и запускаются DVM. просто чтобы дать представление, когда приложение установлено, ОС Android назначает уникальный идентификатор пользователя Linux, DVM назначается для каждого приложения. Короче говоря, каждое приложение имеет собственный процесс Linux, DVM и идентификатор пользователя Linux.

Файлы Java компилируются в файлы .dex, которые потребляют меньше памяти по сравнению с файлами .class.

Теперь предположим, что 10 приложений имеют 10 отдельных DVM, а ОС должна обрабатывать 10 процессов.

Диспетчер или планировщик в ОС Android отвечает за обработку этих 10 процессов... поэтому у нас есть жизненный цикл активности Android.

Вам нужен DVM для поддержания рабочего состояния каждого процесса (каждого приложения).

person user109245    schedule 27.11.2013

Зачем Android нужна виртуальная машина, так это то, что Google разработал Android API для широкого использования интерфейса Java. Сама Java обычно запускается на виртуальной машине.

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

Цель виртуальной машины — иметь возможность абстрагировать оборудование, моделируя его. Если вы создадите виртуальную машину и скомпилируете ее для работы на всех возможных аппаратных средствах, вы получите то, что изначально сделало Java популярным: возможность переноса кода, запускаемого в любом месте.

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

Отвлекаясь, Android в основном построен на C (и C++?), но API, который управляет ОС, взаимодействует через Java, поэтому вам нужна виртуальная машина.

person Nergal    schedule 27.06.2017
comment
хорошо объяснил! - person hardik9850; 22.07.2021