arrow_back Volver
Inicio keyboard_arrow_right Artículos keyboard_arrow_right Artículo

Cómo funciona la maquina virtual de Java

Eduardo Ismael Garcia

Full Stack Developer at Código Facilito.

av_timer 2 Min. de lectura

remove_red_eye 26797 visitas

calendar_today 04 Julio 2018

Una de las principales características de Java es que una vez nosotros codificamos un programa este puede ser ejecutado N cantidad de veces en diferentes plataformas. A esta característica lo conocemos cómo WORA (Write Once Run Everywhere). Esto es posible gracias a la máquina virtual de Java, pero, ¿Exactamente cómo funciona?.

Bien, en este post hablaremos de la máquina virtual de Java y veremos por qué es una parte crucial en el desarrollo de aplicaciones Java.

Máquina virtual y ByteCode

Cómo sabemos Java es un lenguaje compilado. Nuestros archivos con extensión .java no pueden ser comprendidos por nuestros dispositivos. Lo que debemos de hacer es compilarlos:

javac archivo.java

Sin embargo, el proceso de compilación tampoco entrega código que la máquina pueda comprender (unos y ceros), en cambio, produce archivos con extensión .class, estos archivos se componen de Bytecode.

Bytecode es un conjunto de instrucciones altamente optimizadas, que se encuentran diseñadas para ser ejecutadas por el sistema de tiempo de ejecución de Java, llamado Java Virtual Machine (JVM) o por su traducción al español máquina virtual de Java.

Es en esencia, la JVM es quien interpreta y ejecuta el código Bytecode, de tal manera que el dispositivo ya pueda realizar las tareas previamente escritas.

Como cada dispositivo, posee una arquitectura y un sistema operativo diferente, existe una JVM para cada entorno, para Windows, Linux, Mac, Android etc ... De esta manera cada JVM proporciona una biblioteca de recursos con la cual es posible acceder a características del dispositivo (Gráficos, Threads, interfaces de Red, etc...).

Una vez exista un archivo .class con las instrucciones en ByteCode este puede ser ejecutado en cualquier dispositivo, lo único que podría cambiar entre cada dispositivo es la JVM utilizada, mientras que el archivo se mantiene igual.

Aunque cada JVM se escribe en código nativo de la plataforma, todas comprenden el mismo bytecode, esto hace a las aplicaciones JAVA portables.

Podemos ver al JVM cómo un puente entre nuestras aplicaciones y el dispositivo en donde se esta ejecutando.

Tareas

JVM realiza múltiples tareas para poder garantizar la ejecución exitosa de nuestro programa.

Aqui un listado

  1. Verifica el código ByteCode.
  2. Reservar espacio en memoria para las variables y objetos creados.
  3. Libera la memoria no usada (garbage collection). .4 Llamado de funciones del dispositivo (APIs nativas)

Conclusión

Cuando nos referimos a Java no solo nos referimos al lenguaje de programación, también nos referimos a la JAVA Virtual Machine, debemos de verlo cómo un todo, no podemos hablar de uno sin el otro. ?