martes, 24 de enero de 2012

Una maquina para Java

Que es la máquina virtual de java o (JVM) ?

Básicamente la Máquina Virtual de Java (en ingles Java Virtual Machine) es el núcleo del lenguaje de programación Java, puesto que es imposible ejecutar un programa Java sin tener una JVM implantada en el ordenador.

La máquina virtual de Java se denomina al procesador o entorno virtual que se utiliza para interpretar los bytecodes de los binarios de Java, ya que como sabemos Java se hizo para correr en cualquier plataforma sin recompilar los binarios. De esta manera este entorno virtual se puede obtener para nuestra arquitectura y sistema operativo sin modificaciones a nuestro programa original.
  • Podemos entonces generar un binario y este podrá Correr en Linux, MAC OSX, FreeBSD, Solaris, o Windows, y para las arquitecturas disponibles en las que podamos obtener la JVM, como ser AMD64, SPARC, PIV, etc. etc.
Al compilar un código con extensión .java, se crean unos archivos con extensión .class, que contienen los bytecodes de la aplicación.

  • Los bytecodes son un código máquina de bajo nivel, que es ejecutado por la maquina virtual, no por el hardware del ordenador.
Resumiendo y para no hacerlo mas complicado de lo que es, siempre que se ejecuta un programa Java, las instrucciones que lo componen no son ejecutadas directamente por el hardware del ordenador, sino que son pasadas a un software intermedio (JVM), que es el encargado de que las instrucciones sean ejecutadas por el hardware.



La JVM lleva a cabo la emulación del conjunto de bytecodes, bien por un proceso de interpretación o bien mediante un compilador JIT (Just In Time), que convierte el bytecode a código nativo de la plataforma de destino, lo que permite una ejecución mucho más rápida, aunque el inconveniente que tiene es el tiempo que necesita al principio para la compilación.
La principal desventaja de los lenguajes basados en máquina virtual, es que efectivamente son más lentos que los lenguajes completamente compilados, debido a la sobrecarga que genera tener una capa de software intermedia entre la aplicación y el hardware de la computadora. No es lo mismo una aplicación desarrollada en un lenguaje como C o C++, donde el archivo binario que genera el compilador se ejecuta directamente sobre el hardware, que tener que pasarle ese código a la maquina virtual para que lo ejecute el hardware de la maquina. Sin embargo, la gran ventaja de estos, entre muchas otras, es que el código compilado, al no depender de una maquina física en particular, sino de una máquina virtual, puede ser ejecutado en cualquier S.O., siempre que, claro esta, disponga de una maquina virtual.




En la actualidad, existen alternativas a la JVM provista por Sun Microsystems que permiten una velocidad comparable a una aplicación compilada en C++ nativa en la arquitectura, un ejemplo de esto es Kaffe, Kaffe es una máquina de Java OpenSource que puede compilarse sin mayores modificaciones en nuestra arquitectura necesaria y correrá increíblemente más rápida que la distribución estándar de JVM de Sun Microsystems y consumirá muchos menos recursos.

Escrito por → Israel Iglesias

No hay comentarios:

Publicar un comentario