美文网首页
java 字节码

java 字节码

作者: 卫渐行 | 来源:发表于2019-12-21 19:59 被阅读0次

    字节码:

    • 1: 字节码结构,class文件的二进制文件意义
    • 2: 现有的字节码技术,asm与javasist
    • 3: dubbo 中字节码的运用

    class文件的字节码文件的结构

    什么是字节码技术

    java 常被使用为跨平台开发的首选,只要依赖其一次编译,到处执行;而有这个特性,主要是其编译产生的class文件,是一个固定结构有规则十六进制文件;

    .java--> java compile(javac)-->.class文件(有特定的十六进制结构的文件)


    image.png

    通过本地查看本地编译好的class文件,人们很容易的发现,cafebabe的数值(咖啡宝贝);下面图详细介绍了整个class文件的结构:比我讲的更详细,附链接:字节码增强技术探索

    • 魔数 : 16进制的class文件。前面的4位,cafe babe 这正是java的图标 ;
    • 版本号 :前两个字节表示次版本号(Minor Version),后两个字节表示主版本号(Major Version),0000 次版本,0034主版本号,转换成10进制52;oracle版本对应的是java ,1.8
    image.png
    image.png

    通过jclasslib工具,我们可以对于二进制文件进行查看,其文件格式主要是六部分,通用的信息;包括魔术,版本号;

    Table 1 . Constant pool tags

    Constant type value
    Constant_fieldref 9
    Constant_Methodref 10
    Constant_InterfaceMethodref 11
    Constant_String 8
    Constant_Integer 3
    Constant_Float 4
    Constant_Long 5
    Constant_Double 6
    COnstant_NameAndType 12
    Constant_Utf8 1
    Constant_MethodType 16
    COnstant_InvokeDanamic 18

    再了解这些基本概念之后,我们就对于这些数class文件进行编辑,

    常见的字节码技术

    在了解class文件编码规则之后,能够对于对二进制文件进行处理,,比如说
    asm(主要是在二进制文件的层面上),javassist以及cglib是在更高的层面上,;


    image.png

    到那时在java中,spring以及dubbo中,常见的使用cllib以及javassist的软件,通过这两种软件,能够帮助我们更好的理解springaop框架,以及dubbo实现rpc的过程;在dubbo中,service通过暴露服务,客户端调用对应的服务,能够快速的rpc的过程;

    参考文献:

    1 字节码增强技术探索

    2: javasisit与asm

    3: class文件的格式
    4: dubbo implementation

    相关文章

      网友评论

          本文标题:java 字节码

          本文链接:https://www.haomeiwen.com/subject/tzagnctx.html