Anuncio
La máquina virtual Java (JVM) es un nombre real cuando se programa en Java. Al contrario de lo que indica el nombre, la máquina virtual 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 otro lado, familiarizarse con el funcionamiento interno de una máquina ayuda a aumentar su comprensión y visión general.
Este artículo trata sobre la idea de la Máquina virtual 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
idiomas de alto nivel; uno o múltiples niveles de abstracción del código de la máquina.Antes de que pueda ejecutarse, primero debe interpretarse 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 Código de bytes de Java y el máquina virtual de Java.
JVM y Java Bytecode
Cuando se construye su proyecto Java, traduce el código fuente (contenido en *.Java archivos de origen) a código de bytes Java (generalmente 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 está allí. 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 código de bytes Java a la máquina virtual Java. El intérprete en la máquina virtual Java generalmente comienza a compilar todo el código de bytes en tiempo de ejecución, siguiendo los principios de los llamados compilación justo a tiempo. Esto genera el típico retraso, aunque a menudo leve, al abrir una aplicación Java, pero generalmente mejora el rendimiento del programa en comparación con compilación 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 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 Java Virtual Máquina. Este principio ha dado origen al eslogan de Java: "Escribe una vez, corre por todas partes.”
Pro: compatibilidad y mayor seguridad
Además de la compatibilidad de 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 es mucho menos probable que un programa que se ejecuta en una máquina virtual interrumpa el sistema operativo del usuario o corrompa los archivos de datos, si se producen errores.
Con: diferentes implementaciones y depuración de JVM
Una de las principales críticas expresadas contra la compatibilidad del código y la máquina virtual Java se debe a las diferentes implementaciones de esta última. Verá, la máquina virtual Java no es una sola pieza de software. Oracle, los propietarios de Java, tienen su implementación de la Máquina Virtual 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, el código más complejo a veces todavía tiene que depurarse en diferentes implementaciones de máquinas virtuales Java para garantizar un funcionamiento correcto.
¿Tiene alguna experiencia trabajando con la máquina virtual Java? Si es así, ¿hay algo que me perdí aquí que deba mencionarse?
Credito de imagen: Michaelaw, Dcoetzee
Soy escritor y estudiante de ciencias de la computación de Bélgica. Siempre puedes hacerme un favor con una buena idea de artículo, recomendación de libro o idea de receta.