¿Qué es la máquina virtual Java y cómo funciona?

¿Qué es la máquina virtual Java y cómo funciona? / Tecnología explicada

La máquina virtual de Java (JVM) es un dropper de nombre real cuando estás programando en Java. Al contrario de lo que su nombre indica, la Máquina Virtual de Java también se puede encontrar en relación con otros lenguajes de programación..

En general, no es necesario saber qué es la Máquina Virtual Java, o incluso qué hace, para poder programar en Java. Por otra parte, familiarizarse con el funcionamiento interno de una máquina ayuda a aumentar su comprensión y visión general..

Este artículo repasa la idea de la máquina virtual de Java, lo que hace por usted y algunos de los pros y los contras más importantes. Aunque he tratado de hacerlo simple, y definitivamente hay literatura más avanzada sobre el tema, se espera una comprensión rudimentaria de Java y la programación..

Idiomas de alto nivel

La semántica de un lenguaje de programación está diseñada para estar cerca de nuestro lenguaje natural, a la vez que es concisa y fácil de interpretar para una máquina. Como probablemente sepa, el lenguaje de programación es completamente diferente del código de máquina, el conjunto de instrucciones que usa una computadora para construir y ejecutar un programa. Esto llamamos lenguajes de alto nivel; Uno o varios niveles de abstracción del código de máquina.

Antes de que pueda ejecutarse, primero se debe interpretar el código de alto nivel. Muchas interfaces de programación se compilan de antemano (Compilación de AOT) para una plataforma específica. Esto hace que el programa sea más eficiente en tiempo de ejecución, pero mucho menos compatible con diferentes plataformas. Java, en contraste, trabaja con un lenguaje intermedio llamado Código de bytes de Java y el máquina virtual de Java.

JVM & Bytecode Java

Cuando su proyecto Java se construye, traduce el código fuente (contenido en *.Java archivos de origen) a código de bytes de Java (más a menudo contenido en archivos * .class). Esto lleva su código de alto nivel un paso más cerca del código de la máquina, pero aún no ha llegado a ese punto. Este bytecode es una colección de instrucciones compactas; Más fácil de interpretar para una máquina, pero menos legible.

Cuando ejecuta una aplicación Java en su computadora, teléfono celular o cualquier otra plataforma habilitada para Java, esencialmente pasa este bytecode Java a la Máquina Virtual de Java. El intérprete en la máquina virtual de Java generalmente comienza a compilar todo el bytecode en tiempo de ejecución, siguiendo los principios de los llamados compilación justo a tiempo. Esto se traduce en un retraso típico, aunque a menudo leve, al abrir una aplicación Java, pero generalmente mejora el rendimiento del programa en comparación con compilacion interpretada.

La principal ventaja de este sistema es la mayor compatibilidad. Dado que sus aplicaciones se ejecutan en una máquina virtual en lugar de hacerlo directamente en su hardware, el desarrollador puede programar y construir su aplicación una vez, que luego puede ejecutarse en todos los dispositivos con una implementación de la Máquina Virtual de Java. Este principio ha dado nacimiento al eslogan de Java: “Escribe una vez, corre por todos lados.”

Pro: compatibilidad y mayor seguridad

Además de la compatibilidad del código, la Máquina Virtual de Java viene con otros beneficios. Uno de los más importantes es la relativa seguridad de los programas Java como resultado de la Máquina Virtual de Java. Seguridad, lo que significa que es mucho menos probable que un programa que se ejecuta en una máquina virtual interrumpa el sistema operativo del usuario o dañe los archivos de datos, si se producen errores.

Con: Diferentes implementaciones JVM y depuración

Una de las principales críticas expresadas contra la compatibilidad del código y la Máquina Virtual de Java se debe a las diferentes implementaciones de esta última. Usted ve, la máquina virtual de Java no es una pieza de software. Oracle, los propietarios de Java, tienen su implementación de la Máquina Virtual de Java, pero otras personas pueden hacer la suya si satisface varios reclamos prácticos y contractuales..

Estas diferentes implementaciones significan que su código puede ejecutarse sin problemas en una máquina virtual de Java, pero bloquearse y quemarse en otra. Aunque, en la práctica, puede escribir su código una vez y ejecutarlo en todas partes, a veces aún es necesario depurar código más complejo en diferentes implementaciones de la Máquina Virtual Java para garantizar un funcionamiento correcto.

¿Tiene alguna experiencia trabajando con la Máquina Virtual de Java? Si es así, ¿hay algo que haya perdido aquí que deba mencionarse??

Crédito de la imagen: Michaelaw, Dcoetzee

Explorar más sobre: ​​Java, Programación.