Pregunta

En realidad, la pregunta es un poco más amplia. Sé que Javac compila el archivo Java en un código de byteCode, un archivo de clase.Por lo tanto, el archivo de clase debe contener instrucciones de JVM y todo eso.Por otro lado, la única forma de ver esas instrucciones es descompilar el archivo de clase con Javap -C.Pero no se descomprime, ¿verdad?Porque si se descomprimía, produciría un archivo Java.Por lo tanto, mi conjetura aquí es que Javac compila el archivo Java como 2 veces (lo que no es realmente cierto, pero supongamos que para la simplicidad), primero a la instrucción de JVM, luego a Bytecode, por lo que Javap -C se descompila de instrucciones BYTECODE a JVM.Se supone que JVM entienda el código bytecode, por lo que no puede entender las instrucciones.Estoy un poco confundido aquí.¿Podría alguien explicar lo que está pasando aquí?

¿Fue útil?

Solución

javap no descompila el código bytecode, es desmontable .Para explicar la diferencia, podemos cambiar los términos al revés: la compilación está traduciendo el código legible humano al código de byteCode, mientras que el ensamblaje está traduciendo las instrucciones de montaje a BYTECODE.

Otros consejos

javap muestra la forma legible humana de las instrucciones de JVM.Las instrucciones de JVM son códigos para JVM.Lo que muestra javap es el lenguaje del ensamblador.

Si desea ver el código de bytes en el formulario más legible, use Java Decompiler, por ejemplo. Jad .Hay varias envoltorios de la UI para JAD, incluido el complemento para Eclipse.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top