Pergunta

Na verdade, a questão é um pouco mais ampla. Eu sei que o javac compila o arquivo java em um bytecode, um arquivo de classe.Então, o arquivo de classe deve conter instruções JVM e tudo isso.Por outro lado, a única maneira de ver essas instruções é descompilar arquivo de classe com javap -c.Mas não é decompilante, certo?Porque se fosse decompilante, produziria um arquivo Java.Então, meu palpite aqui é que o JAVAC compila o arquivo Java como 2 vezes (o que não é verdade, mas vamos assumir que, por simplicidade), primeiro à instrução JVM, então para Bytecode, então Javap -c decomponsam de acordo com as instruções da JVM.A JVM deveria entender Bytecode, portanto, não consegue entender as instruções.Estou um pouco confuso aqui.Alguém poderia explicar o que está acontecendo aqui?

Foi útil?

Solução

javap não Decompile O Bytecode, ele desmontou .Para explicar a diferença, podemos mudar os termos do contrário: a compilação está traduzindo código legível humano para bytecode, enquanto a assembléia está traduzindo as instruções de montagem para bytecode.

Outras dicas

javap Exibe a forma legível humana das instruções da JVM.As instruções da JVM são códigos para a JVM.O que a javap é a linguagem montadora.

Se você quiser ver o código de byte em forma mais legível, use o Java Decompiler, e. jad .Existem vários wrappers da UI para JAD, incluindo plug-in para Eclipse.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top