La Máquina Virtual Java (JVM) es un cuentagotas 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 Java Virtual Machine, ni siquiera lo que hace, para poder programar en Java. Por otro lado, familiarizarse con el funcionamiento interno de una máquina ayuda a aumentar su comprensión y comprensión general.
Este artículo aborda la idea de la Máquina Virtual Java, lo que hace por ti y algunos de los pros y contras más importantes. Aunque traté de mantenerlo 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, sin dejar de ser conciso 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 lo llamamos lenguajes de alto nivel ; uno o múltiples niveles de abstracción del código máquina.
Antes de poder ejecutar, primero se debe interpretar el código de alto nivel. Muchas interfaces de programación compilan de antemano ( compilación 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, por el contrario, funciona con un lenguaje intermedio llamado bytecode Java y Java Virtual Machine .
JVM y Java Bytecode
Cuando su proyecto Java se construye, traduce el código fuente (contenido en los archivos fuente * .java ) al código byte de Java (más a menudo incluido en los archivos * .class). Esto lleva su código de alto nivel un paso más cerca del código de la máquina, pero todavía no del todo. Este bytecode es una colección de instrucciones compactas; más fácil de interpretar por 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, básicamente pasa este bytecode de Java a Java Virtual Machine. 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 la llamada compilación just-in-time . Esto hace que el retraso sea típico, aunque a menudo leve, al abrir una aplicación Java, pero generalmente mejora el rendimiento del programa en comparación con la compilación interpretada .
La principal ventaja de este sistema es la mayor compatibilidad. Como sus aplicaciones se ejecutan en una máquina virtual en lugar de directamente en su hardware, el desarrollador puede programar y construir su aplicación una vez, que luego se puede ejecutar en cada dispositivo con una implementación de la Máquina Virtual de Java. Este principio dio origen al lema de Java: " Escribe una vez, corre a todas partes ".
Pro: compatibilidad y mayor seguridad
Además de la compatibilidad del código, la Máquina Virtual 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 Java. Seguridad, lo que significa que un programa que se ejecuta en una máquina virtual es menos probable que interrumpa el sistema operativo del usuario o corrompa los archivos de datos si se producen errores.
Con: Diferentes implementaciones de JVM y depuración
Una de las principales críticas expresadas contra la compatibilidad del código y la Máquina Virtual Java se debe a las muchas implementaciones diferentes de esta última. Usted ve, la Máquina Virtual de Java no es una sola 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 Java, pero se bloquea y se quema en otra. Aunque, en la práctica, puede escribir su código una vez y ejecutarlo en todas partes, a veces es necesario depurar código más complejo en diferentes implementaciones de Java Virtual Machine para garantizar el funcionamiento correcto.
¿Tienes alguna experiencia de trabajo con la máquina virtual Java? Si es así, ¿hay algo que me haya perdido aquí que deba mencionarse?
Crédito de la imagen: Michaelaw, Dcoetzee