Todo lo que nunca quisiste saber sobre los ordenadores (IV)

Todo lo que nunca quisiste saber sobre los ordenadores (IV)

Everything you never wanted to know about computers (IV)

Dalvik is discontinued from Android 4.4 ‘KitKat Android OS and development environment  version.

(Lo traduzco y comento después).

Dalvik en.wikipedia article excerpt:

The successor of Dalvik is Android Runtime (ART), which uses the same bytecode and .dex files (but not .odex files), with the succession aiming at performance improvements transparent to the end users.

Unlike Java VMs, which are stack machines, the Dalvik VM uses a register-based architecture that requires fewer, typically more complex, virtual machine instructions. Dalvik programs are written in Java using the Android application programming interface (API), compiled to Java bytecode, and converted to Dalvik instructions as necessary.

A tool called dx is used to convert Java .class files into the .dex format. Multiple classes are included in a single .dex file. Duplicate stringsand other constants used in multiple class files are included only once in the .dex output to conserve space. Java bytecode is also converted into an alternative instruction set used by the Dalvik VM. An uncompressed .dex file is typically a few percent smaller in size than acompressed Java archive (JAR) derived from the same .class files.[7]

The Dalvik executables may be modified again when installed onto a mobile device. In order to gain further optimizations, byte order may be swapped in certain data, simple data structures and function libraries may be linked inline, and empty class objects may be short-circuited, for example.

Being optimized for low memory requirements, Dalvik has some specific characteristics that differentiate it from other standard VMs:[8]

  • The VM was slimmed down to use less space.
  • The constant pool has been modified to use only 32-bit indices to simplify the interpreter.
  • Standard Java bytecode executes 8-bit stack instructions. Local variables must be copied to or from the operand stack by separate instructions. Dalvik instead uses its own 16-bit instruction set that works directly on local variables. The local variable is commonly picked by a 4-bit “virtual register” field. This lowers Dalvik’s instruction count and raises its interpreter speed.

According to Google, the design of Dalvik permits a device to run multiple instances of the VM efficiently.[9]

Android 2.2 “Froyo” brought trace-based just-in-time (JIT) compilation into Dalvik, optimizing the execution of applications by continually profiling applications each time they run and dynamically compilingfrequently executed short segments of their bytecode into native machine code. While Dalvik interprets the rest of application’s bytecode, native execution of those short bytecode segments, called “traces”, provides significant performance improvements.

The link to the image from en.wikipedia to do the comparison between both virtualization models virtual machines.

El sucesor de Dalvik es Android Runtime (== en tiempo de ejecución), ART, que utiliza el mismo código máquina y archivos .dex (extensión de archivos de Dalvik EXecutable), pero no .odex (archivos .dex optimizados), con la modificación apuntando a mejoras de ejecución transparentes para los usuarios finales.

A diferencia de las máquinas virtuales Java, que son máquinas de pila, la máquina virtual Dalvik usa una arquitecturas basada en un registro (memoria del procesador, virtual en este caso) que requiere menos, y típicamente más complejas, instrucciones de máquina virtual. Los programas Dalvik están escritos en Java usando la interfaz de programación de aplicaciónes Android (API), compiladas en código máquina Java, y convertidas en instrucciones Dalvik como se necesite.

Una herramienta llamada dx es utilizada para convertir los archivos de clases Java .class en el formato .dex. En un sólo archivo .dex se incluyen múltiples clases. Las cadenas (strings) y otras constantes duplicadas utilizadas en diferentes archivos de clase se incluyen sólo una vez en el archivo .dex de salida para reducir el espacio (utilizado para definir e incluir los archivos de librería necesarios para el programa a ejecutar). El código máquina Java es convertido en un conjunto de instrucciones alternativo utilizado por la máquina virtual Dalvik. Un archivo .dex descomprimido es típicamente más pequeño que un archivo comprimido Java (JAR) derivado de los mismos archivos de clase Java (y si el JAR se descomprime la diferencia en tamaño es mucho mayor).

Los ejecutables Dalvik  (.dex, .odex, y actualmente .elf, Executable and Linkable Format (ELF) executables) pueden ser modificados de nuevo cuando son instalados en un dispositivo móvil. Para conseguir mayores optimizaciones, el orden de byte (endianess, high order, low order bytes) se puede intercambiar en algunos datos; estructuras de datos simples y funciones de libreria se pueden enlazar (ensamblar) inline (dentro del cursor en ejecución), y objetos vacíos de clase se pueden eliminar, por ejemplo.

Estando optimizado para bajos requerimientos de memoria, Dalvik tiene algunas características específicas que lo diferencian de otras máquinas virtuales estándar.

La máquina virtual fue reducida para usar menos espacio.

El conjunto de recursos constantemente disponibles (la pool) se ha modificado para utilizar índices de sólo 32 bits (generalmente una mitad va vacía, es decir, dieciseis ceros)  para simplificar el intérprete:

Los intérpretes se diferencian de los compiladores o de los ensambladoresen que mientras estos traducen un programa desde su descripción en un lenguaje de programación al código de máquina del sistema, los intérpretes sólo realizan la traducción a medida que sea necesaria, típicamente, instrucción por instrucción, y normalmente no guardan el resultado de dicha traducción.

es.wikipedia

Es decir, un compilador coge el archivo fuente, analiza la sintaxis (parse) y si está bien escrito (en términos del lenguaje de programación empleado) genera un archivo objeto, y después enlaza un archivo ejecutable. Un intérprete simplemente lee el archivo fuente y ejecuta instrucción por instrucción, sin generar un archivo ejecutable (sin OUTPUT).

El código máquina (virtual) Java estándar ejecuta instrucciones de pila de ocho bits (un byte). Las variables locales deben ser copiadas hacia o desde la pila instrucción por instrucción. Dalvik usa un conjunto de instrucciones de 16 bits (dos bytes) que trabaja directamente sobre las variables locales (instancias de objetos activos y disponibles en la pool). Cada variable local se coge habitualmente de un campo de “registro virtual” de cuatro bits (un nibble). Esto baja la cuenta (el número de instrucciones paso a paso) de instrucciones y sube la velocidad de interpretación. De acuerdo con Google, el diseño de Dalvik permite a un dispositivo tener múltiples instancias de la máquina virtual (Virtual Machine, VM) ejecutándose simultáneamente de manera eficiente.

Android 2.2 “Froyo” trajo la compilación en tiempo de ejecución (Just In Time, JIT) basada en “trazas” a Dalvik, optimizando la ejecución de aplicaciones mediante la diferenciación específica entre las aplicaciones (en función de las características del dispositivo en sí) cada vez que se ejecutan y compilando a código máquina nativo, dinámicamente (mientras se usan) los segmentos cortos de código máquina que se usan más frecuentemente. Mientras Dalvik interpreta el resto del código máquina de la aplicación, la ejecución en código nativo de esos segmentos cortos de código máquina, llamados ‘trazas’ (pequeños OUTPUTS de código nativo dependientes de cada equipo), reporta mejoras significativas de ejecución.

Acerca de María Cristina Alonso Cuervo

I am a teacher of English who started to write this blog in May 2014. In the column on the right I included some useful links and widgets Italian is another section of my blog which I called 'Cornice Italiana'. There are various tags and categories you can pick from. I also paint, compose, and play music, I always liked science, nature, arts, language... and other subjects which you can come across while reading my posts. Best regards.
Esta entrada fue publicada en Computer Science, English, Español, Science y etiquetada , , , . Guarda el enlace permanente.

Click below (you can make a comment also through Google +)

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s