Definición: ¿Qué significa Java Virtual Machine (JVM)?
La máquina virtual Java (JVM) es una capa de abstracción entre una aplicación Java y la plataforma subyacente. Como su nombre lo indica, la JVM actúa como una máquina o procesador "virtual". Para los códigos de bytes que componen el programa, se están comunicando con una máquina física; sin embargo, en realidad están interactuando con la JVM.
Techinfo explica la máquina virtual Java (JVM)
JVM permite que la portabilidad de Java se ejecute dentro de la plataforma y aplicaciones independientes del hardware. Es una gran parte de la filosofía de "escribir una vez, ejecutar en cualquier lugar (WORA)". La JVM es en realidad parte del Java Runtime Environment (JRE). Es el JRE (JVM más clases base) el que permite que el código de bytes de Java se ejecute en cualquier plataforma. Los códigos de bytes, que son interpretados por la JVM, simplemente llaman a las clases que se encuentran en el JRE cuando necesitan realizar acciones que no pueden hacer por sí mismas. Algunas acciones, como las dirigidas al hardware subyacente o al sistema operativo, las realiza la JVM. Los códigos de bytes carecen de funcionalidad por sí mismos y necesitan que la JVM realice muchas tareas por ellos. Esta limitación percibida es en realidad una ventaja. Primero, permite que los programas Java sean muy pequeños en comparación con otros programas ejecutables. En segundo lugar, y lo que es más importante, les permite ser muy portátiles. Dado que cada JVM está hecha a medida para una plataforma específica, un programa Java no puede ejecutarse en ella a menos que: (1) Se haya creado una JVM adecuada para ella, y; (2) Esa JVM se ha instalado en él. Por lo tanto, la portabilidad de los programas Java depende completamente de la presencia de una JVM específica. La comunicación entre una aplicación y cada plataforma subyacente puede ser muy sofisticada, pero la JVM la maneja bien al proporcionar una capa de abstracción entre las dos. Como tal, los desarrolladores no necesitan ser conscientes de las complejidades involucradas para cada par de aplicaciones y plataformas.