## java中Class文件字节码分析

通过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字节码文件的简单解析过程

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值