tabla qué que intérprete herramienta función extension ejemplos cursos cumple codigo java jvm bytecode

java - que - qué función cumple la herramienta bytecode?



¿Qué son los códigos de bytes y cómo los maneja la JVM? (6)

Escuché muchas veces que la compilación JIT (just-in-time) de Java implemments, y sus códigos de bytes que son portátiles en todas las plataformas se "interpretan" por JVM. Sin embargo, no sé realmente qué son los códigos de byte y qué significa realmente la JVM en la arquitectura del lenguaje Java; Me gustaría saber más sobre ellos.


Bytecode es el equivalente a JVM de las instrucciones en lenguaje de máquina.


Bytecode es un paso entre su código fuente y el código de máquina real. La JVM es lo que toma el código de bytes y lo traduce en código de máquina.

JIT se refiere al hecho de que la JVM realiza esta traducción sobre la marcha cuando se ejecuta el programa, en lugar de hacerlo en un solo paso (como en un lenguaje tradicionalmente compilado / vinculado como C o C ++)

El punto de bytecode es que obtiene un mejor rendimiento que un lenguaje estrictamente interpretado (como PHP por ejemplo) porque el bytecode ya está parcialmente compilado y optimizado. Además, dado que el bytecode no necesita ser interpretado directamente por la CPU, no necesita estar vinculado a ninguna arquitectura específica de la CPU que lo haga más portátil.

Por supuesto, la desventaja es que generalmente será un poco más lento que una aplicación compilada de forma nativa, ya que la JVM todavía tiene que hacer un poco de trabajo para traducir el código de bytes al código de la máquina.


Cuando compilas algo en Java, el compilador genera un bytecode. Este es el código nativo para la máquina virtual de Java. La JVM luego traduce el código de byte al código nativo para su procesador / arquitectura, aquí es donde ocurre el JIT. Sin JIT, la JVM traduciría el programa una instrucción a la vez, lo cual es muy lento.


JVM es una máquina virtual que se utiliza para ejecutar código Java. Podemos comparar JVM con un compilador ya que sin él no podemos compilar código Java y hacer aplicaciones. JVM no es más que una pieza de código que testificará su código Java. La tarea principal de JVM es convertir el código Java en un bytecode Java y compilarlo. Esto facilita el desarrollo de Java. Echa un vistazo a este artículo si quieres saber más sobre cómo funciona la máquina virtual de Java.


La JVM (Java Virtual Machine) tiene un conjunto de instrucciones como una máquina real. El nombre que se le da a este conjunto de instrucciones es Java Bytecode. Se describe en la Especificación de la máquina virtual de Java . Otros idiomas se traducen a un código de bytes antes de la ejecución, por ejemplo, ruby ​​y python. El código de bytes de Java se encuentra en un nivel bastante bajo, mientras que Python es mucho más alto.

La interpretación y la compilación JIT son dos estrategias diferentes para ejecutar el bytecode. La interpretación procesa los códigos de bytes de uno en uno y realiza los cambios en el estado de la máquina virtual que se codifican en cada instrucción. La compilación JIT traduce el código de bytes en instrucciones nativas de la plataforma de host que realizan operaciones equivalentes.

La interpretación generalmente es rápida de iniciar pero lenta durante la ejecución, mientras que JIT tiene más gastos generales de inicio pero se ejecuta más rápido después. Las JVM modernas utilizan una combinación de interpretación y técnicas JIT para obtener el beneficio de ambas. El código de bytes se interpreta primero mientras que el JIT lo traduce en segundo plano. Una vez que se completa la compilación JIT, la JVM cambia a usar ese código en lugar del intérprete. A veces, la compilación JIT puede producir mejores resultados que la compilación anticipada utilizada para C y C ++ porque es más dinámica. La JVM puede hacer un seguimiento de la frecuencia con la que se llama el código y cuáles son las rutas típicas a través del código y utilizar esta información para generar un código más eficiente mientras el programa se está ejecutando. La JVM puede cambiar a este nuevo código al igual que cuando cambia inicialmente del intérprete al código JIT.

Al igual que hay otros lenguajes que compilan en código nativo, como C, C ++, Fortran; hay compiladores para otros lenguajes que generan código de bytes JVM. Un ejemplo es el lenguaje scala. Creo que groovy y jruby también se pueden convertir a código de bytes java.


jcyang ya proporcionó un enlace a wikipedia, pero este es el que mejor se ajusta a tu pregunta:

Código de bytes de Java

El compilador de Java compila el código fuente de Java en archivos de clase. Los métodos de la clase se convierten a Byte Code y la máquina virtual Java (JVM) interpreta este código de byte. Se puede usar un compilador Just In Time (JIT) para traducir el código de byte al código de máquina para acelerar la ejecución de los métodos de clase.