JVM es la máquina virtual que ejecuta código Java en diferentes plataformas. Actúa como una capa abstracta entre el programa y la plataforma en la que se ejecuta el código Java. La portabilidad del código Java solo es posible gracias a la JVM. El compilador javac convierte el archivo de código fuente (archivo .java) en un formato de código de bytes java intermedio que es independiente de la máquina/plataforma. Luego, este archivo intermedio se proporciona a la máquina/plataforma de destino donde se traduce a código de máquina. JVM admite múltiples arquitecturas de host y es la razón por la que las aplicaciones Java se denominan WORA (Write Once Run Anywhere) .
DVM (máquina virtual Dalvik)
DVM es una máquina virtual para ejecutar aplicaciones de Android . El código de bytes de Java (archivo .class) generado por el compilador javac se convierte en el código de bytes de Dalvik para hacer que los archivos fuente de la aplicación sean ejecutables en el DVM. Dado que los dispositivos Android tienen una capacidad de procesamiento, memoria y duración de la batería definidos, el principio de diseño de DVM tiene como objetivo optimizarse para que pueda cargarse rápidamente y funcionar sin problemas, incluso en dispositivos con poca memoria/alimentación. Esta máquina virtual es muy eficiente para ejecutar varias instancias en el mismo dispositivo.
Tabla de diferencias
JVM (máquina virtual Java) |
DVM (máquina virtual Dalvik) |
---|---|
Máquina virtual basada en pila que realiza operaciones aritméticas y lógicas a través de operandos push y pop. El resultado de las operaciones se almacena en la memoria de pila. | Máquina virtual basada en registros que utiliza registros ubicados en la CPU para realizar operaciones aritméticas y lógicas. |
El código fuente de Java se compila en el formato de código de bytes de Java (archivo .class) que luego se traduce en código de máquina. | Los archivos de código fuente se compilan en primer lugar en formato de código de bytes de Java como JVM. Además, el compilador DEX (herramienta dx) convierte el código de bytes de Java en un archivo de código de bytes de Dalvik (classes.dex) que se usará para crear el archivo .apk . |
Se requiere más información para la VM para la carga y manipulación de datos, así como para la carga de métodos en la estructura de datos de la pila. | El tamaño de la instrucción es mayor ya que necesita codificar el registro de origen y destino de la VM. |
El tamaño del código de bytes compilado es compacto porque la ubicación del operando está implícitamente en la pila de operandos. | El tamaño del código de bytes compilado es mayor ya que cada instrucción necesita todos los operandos implícitos. |
El archivo ejecutable para el dispositivo es un archivo .jar . | El archivo ejecutable para el dispositivo es un archivo .apk . |
Una única instancia de JVM se configura con procesos compartidos y espacio de memoria para ejecutar todas las aplicaciones implementadas. | El dispositivo ejecuta múltiples instancias de DVM con un proceso separado en el espacio de memoria compartida para implementar el código de cada aplicación. |
Admite múltiples sistemas operativos como Linux, Windows y Mac OS. | Admite solo el sistema operativo Android. |
Nota: Google introdujo una nueva máquina virtual para aplicaciones de Android en 2014 que se conoce como Android Runtime (ART) . Está diseñado con el propósito de mejorar el rendimiento de la aplicación y reducir el uso de la batería del dispositivo. La última versión admitida para DVM fue Android 4.4 (Kitkat).
Publicación traducida automáticamente
Artículo escrito por RISHU_MISHRA y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA