Java - Diferencia entre jvm y jit

 
Vista:

Diferencia entre jvm y jit

Publicado por kelly (2 intervenciones) el 16/07/2011 19:23:10
Hola:

Apenas estoy empezando a aprender a programar en java pero no entiendo bien la diferencia entre la interpretacion de la jvm y la compilacion de jit. Mi duda es: cuando la jvm va interpretando que no cambia cada linea por una accion ejecutable por la maquina, entonces cual es la ventaja de la compilacion jit? Acaso esta ultima crea todo un codigo ejecutable una sola vez para esa maquina especifica y despues la jvm solo lo manda llamar y ya lo unico que hace es ejecutar ese codigo traducido tantas veces lo encuentre en el codigo de bytes?
Se que mi pregunta puede parecerles muy tonta siendo todos ustedes programadores experimentados, pero realmente necesito que esto quede bien claro en mi cabeza para poder continuar y entender como trabaja la computadora con un codigo de java.
De antemano gracias a todos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Diferencia entre jvm y jit

Publicado por Felipe Reyes Palacio (8 intervenciones) el 10/08/2011 21:22:03
Java es un lenguaje de programación basado en virtualización. Lo anterior significa que el código que se escribe en Java puede ser ejecutado sin importar el hardware donde se encuentre (Java se ejecuta exactamente igual en un celular o en un servidor... el código no cambia).

JVM significa "Java Virtual Machine - Máquina Virtual de Java". Este programa sí es distinto en cada hardware (ahora sí: la JVM de un celular es muy distinta a la JVM en un servidor) y varía según el hardware, sistema operativo, etcétera. Pero su misión es la misma: ejecutar código java.

De esta forma, cuando uno escribe un programa en Java, el "compilador" convierte dicho código en código binario ("bytecode" lo llaman. Un archivo ".class" generado por un compilador Java es un archivo "bytecode") más dicho código no es código máquina directamente (no puede ser ejecutado por un computador directamente) sino es código "listo para ejecutar".

JIT (Just-in-Time) es el compilador que toma "bytecode" y lo convierte en código máquina, para ejecutarlo. Esto lo hace en "tiempo real". Por supuesto, cada JIT es distinto en cada computador, y ésto hace parte de la JVM, así que en realidad el programador nunca conoce JIT...

Conclusión: Escribe Java si quieres que tu programa funcione igual en tu computador ó en tu celular, en tu IPhone o en lo que sea que tenga JVM instalado. Esto es maravillosamente portátil, y se le puede decir adiós a tener que recompilar el código en cada sistema en donde quisieras ejecutarlo. Es claro que hay que tener cuidado con algunas cosas (diseñar una interfaz gráfica no es lo mismo en un celular que en una pantalla de PC por su tamaño, aunque las instrucciones para hacerlo sean las mismas) pero excepto esas pequeñeces, todo código Java 100% java puro, debería correr sin problemas en todos los entornos.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar