了解Java字节代码

hha*_*fez 17 java bytecode

我经常遇到一个没有源代码的java类文件,我试图理解我手边的问题.

请注意,反编译器很有用但在所有情况下都不够......

我有两个问题

  1. 有哪些工具可用于查看java字节代码(最好从linux命令行获得)
  2. 熟悉java字节码语法有什么好的参考

coo*_*ird 18

可以尝试使用Java反编译实用程序,而不是直接查看需要熟悉Java虚拟机及其操作的Java字节码.反编译器将尝试java从指定class文件创建源文件.

如何"反编译" Java类文件?是一个相关的问题,可以提供有关如何反编译Java class文件的信息.

也就是说,可以使用作为javapJDK一部分的命令来反汇编Java class文件.输出javap将是class文件中包含的Java字节码.但请注意,字节码根本不像Java源代码.

学习Java字节码和Java虚拟机本身的明确来源是Java虚拟机规范,第二版.特别是,第6章:Java虚拟机指令集具有所有字节码指令的索引.


Ran*_*ku' 14

要查看类文件的字节码指令,请使用该javap -v命令,就像运行java程序一样,指定classpath(如果需要)和类名.

例:

javap -v com.company.package.MainClass
Run Code Online (Sandbox Code Playgroud)

关于字节码指令集, 指令集汇总