javap -c对类文件的作用是什么?

时间:2012-07-26 08:55:22

标签: java javac javap

实际上,问题有点广泛。 我知道javac将java文件编译成字节码,一个类文件。因此,类文件应该包含jvm指令和所有这些。另一方面,查看这些指令的唯一方法是使用javap -c反编译类文件。但它不是反编译,对吧?因为如果它是反编译,它会产生java文件。所以,我的猜测是javac编译java文件2次(实际上并不是真的,但为了简单起见,我们假设),首先是jvm指令,然后是字节码,所以javap -c从字节码反编译为jvm指令。 Jvm应该理解字节码,因此它无法理解指令。我在这里有点困惑。有人能解释一下这里发生了什么吗?

2 个答案:

答案 0 :(得分:5)

Javap不反编译字节码,它反汇编它。为了解释这些差异,我们可以反过来切换术语:编译将人类可读代码转换为字节码,而汇编则将汇编指令转换为字节码。

答案 1 :(得分:3)

javap显示人类可读形式的JVM指令。 JVM指令是JVM的代码。 javap显示的是汇编语言。

如果你想以更易阅读的形式看到字节代码,请使用java反编译器,例如: jad。 jad有几个UI包装器,包括Eclipse的插件。