Вопрос

На самом деле вопрос немного шире. Я знаю, что Javac компилирует Java-файл в Bytecode, файл класса.Итак, файл класса должен содержать инструкции JVM и все это.С другой стороны, единственный способ увидеть эти инструкции - это декомпилируемый класс файла с Javap -c.Но это не декомпиляция, верно?Потому что, если это было декомпиляция, он будет производить файл Java.Итак, я думаю, что Javac компилирует Java-файл, как 2 раза (который на самом деле не правда, но давайте предположим, что для простоты), сначала к инструкции JVM, затем к Bytecode, поэтому JAVAP -C DECOMPILES из Bytecode для инструкций JVM.JVM должен понимать байткод, поэтому он не может понять инструкции.Я здесь немного запутался.Может ли кто-нибудь объяснить, что здесь происходит?

Это было полезно?

Решение

javap не dehompile bytecode, it разбираются в разборке .Чтобы объяснить разницу, мы можем переключать термины наоборот наоборот: Compilation переводит читаемый код человека в Bytecode, в то время как сборка переводит инструкции по сборке в Bytecode.

Другие советы

javap Отображает читаемую форму человеческую форму инструкций JVM.Инструкции JVM являются коды для JVM.Какой генеракодицетагкод показывает ассемблерный язык.

Если вы хотите увидеть код байта в более читабельной форме, используйте Java Decompiler, E.G. JAD .Для JAD есть несколько обертков UI, включая плагин для Eclipse.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top