Tabla de contenidos
DalvikVM es una máquina virtual desarrollada por Google para Android. Su tarea como máquina virtual Java es traducir una aplicación basada en Java de código de bytes a código legible por máquina en tiempo real.
DalvikVM: descripción general e información general sobre la máquina virtual
El empleado de Google, Dan Bornstein, que nombró a la máquina virtual en honor a la ciudad islandesa de Dalvík, fue responsable del desarrollo de DalvikVM. A menudo se puede leer que los antepasados de Bornstein vinieron de esta ciudad, pero esta es una leyenda urbana. Eligió el nombre solo por amor a Dalvík como lugar de vacaciones.
DalvikVM es una máquina virtual Java para dispositivos móviles que es un componente central de la plataforma Google Android. Una característica que distingue a la mayoría de las otras máquinas virtuales Java es el funcionamiento de Dalvik como máquina de registro. La mayoría de las otras JVM se basan en lo que se conoce como autómatas pushdown. DalvikVM también tiene su propio código de bytes.
Básicamente, la máquina virtual se desarrolló de tal manera que puede ejecutar diferentes instancias con la misma eficiencia en un dispositivo. Al igual que los procesadores modernos, el DalvikVM puede procesar el código de máquina de registro. Por lo tanto, la máquina virtual actúa tan rápido como ahorra recursos. Esto también es necesario porque cada programa se ejecuta en su propio proceso con el sistema operativo Android y funciona con su propio DalvikVM o genera uno.
Como entorno de ejecución alternativo, Android ofrece una máquina de registro alternativa en forma de ART (Android Runtime) desde la versión 4.4 (KitKat). DalvikVM se basa en la compilación justo a tiempo.
Funcionalidad y componentes
DalvikVM puede entenderse como un paso intermedio que se encuentra entre el código fuente y el código ejecutable por procedimientos. Como parte de la compilación Just-In-Time, el código fuente se traduce en tiempo de ejecución.
Primero, DalvikVM ejecuta el software traducido para JVM después de la conversión en su propio código de bytes. El programa dx juega un papel importante aquí. Esta es una parte esencial del entorno de desarrollo de Android. El programa dx es responsable de convertir archivos .class regulares (archivos binarios de Java) en formato .dex (formato ejecutable Dalvik). Varios archivos .class se combinan en un archivo .dex.
Además, se realizan optimizaciones con respecto a los requisitos de memoria. Los archivos en formato .dex se inician para ejecutar cada aplicación. Antes de que Dalvik traduzca la aplicación para el procesador, el código fuente se traduce a bytecode. DalvikVM luego traduce esto en código legible por máquina. Luego, el procesador ejecuta este código.
Sandbox: instancias separadas para todos los procesos
La tecnología Sandbox es una parte esencial del funcionamiento de la máquina virtual Dalvik. La aplicación se ejecuta en un entorno aislado, llamado sandbox. En la práctica, esto significa que hay una instancia separada para cada proceso. Esto asegura que cada instancia sea independiente de otras instancias. Una instancia tampoco puede influir en las otras instancias.
El entorno aislado también evita que el programa DalvikVM realice operaciones directas en el sistema operativo o el hardware. Por lo tanto, se excluye el apagado accidental del dispositivo o el acceso y manipulación de memoria o aplicaciones.
Sin embargo, cada aplicación necesita una cierta cantidad de acceso al hardware de un dispositivo, por ejemplo, a la memoria o la pantalla. Dado que ninguna aplicación funcionaría sin dichas autorizaciones de acceso, la máquina virtual proporciona algunas funciones a través de interfaces especiales (API).
API de DalvikVM
A través de las API (interfaces de programación de aplicaciones), el programador recibe llamadas a funciones o métodos específicamente definidos que la aplicación pueda necesitar. A través de las API, se garantiza que una aplicación pueda recibir autorización de acceso a diferentes recursos del sistema operativo.
Con cada nueva versión de Android o con cada nuevo nivel de API, estas API se amplían o cambian. El nivel de API respectivo proporciona una indicación aproximada de la versión de software actual del sistema operativo Android. De esto se puede derivar la compatibilidad con versiones anteriores.
Como resultado de estos ajustes, es posible que ciertas aplicaciones ya no se puedan utilizar con versiones anteriores. Algunas aplicaciones utilizan los métodos de una versión más reciente de Android y es posible que ya no sean compatibles con versiones anteriores. Por ejemplo, las funciones de Bluetooth solo se pueden utilizar desde el nivel de API 5 (desde Android 2.0).
Permisos
Un área funcional importante es la gestión de autorizaciones. Estos están directamente vinculados a las operaciones API antes mencionadas. En principio, los usuarios pueden decidir si realmente quieren instalar la aplicación, dados los permisos requeridos.
Ciertas operaciones de la API pueden leer archivos (por ejemplo, entradas de la guía telefónica o historiales del navegador) o influir en la funcionalidad. Otros son a expensas del rendimiento de la batería (por ejemplo, Bluetooth o cámara). También hay operaciones que están asociadas con costos para el usuario (por ejemplo, uso en línea). Por tanto, estas operaciones solo pueden realizarse mediante autorizaciones. El usuario es informado de estas autorizaciones durante la instalación.