通过jclasslib对Class文件做简单分析
学习jvm的时候,用到了jclasslib的插件,对于java的class文件进行了深刻的学习,我们都知道jvm是一种规范,在jvm上运行的语言目前有上百种,而jvm也如同操作系统一般提供了各种规范和定义,其中就包括对于class文件的解析.
首先我们的源程序会被javac编译成为class文件,jvm不同的平台提供了不同的编译方式,而jvm也在不同平台有各自的编译和解释,因此java看起来像是跨平台,而实际上也只是jvm的跨平台.
首先我们在idea中写好一段简单的源程序
我们使用jclasslib对其进行查看编译后的字节码文件,
其中Minor version和Major version分别代表了大小版本号
而Constant pool count代表了常量池的数量
access flags表示了访问权限
其中我们对Constant_pool进行深度解析
我们发现数量刚好28个,每个常量池中的常量有自己对应的属性和引用,例如第一个Constant_Methodref_info
className指的是引用的类,Name and type代表名称和类型,可以翻译为Object类中的初始化init()方法
接下来是对于接口,字段,方法等的解析
其中Method值得注意,Method中的Code定义了方法的执行体,
例如此例子中,ByteCodeDemo的构造方法的执行过程
以上就是我通过jclasslib对于java字节码文件的简单解析过程