美文网首页
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

相关文章

  • 字节码引用检测原理与实战

    一、字节码与引用检测 1.1 Java字节码 本章中的字节码重点研究Java 字节码,Java字节码(Java b...

  • 程序员练级攻略(2018):Java底层知识

    Java 字节码相关 首先,Java 最黑科技的玩法就是字节码编程,也就是动态修改或是动态生成 Java 字节码。...

  • Java并发机制的底层原理

    Java程序执行:Java代码→Java字节码→字节码被类加载器加载到JVM里,JVM执行字节码→转化为汇编指令在...

  • DVM执行 java 程序的工具

    jvm 执行字节码原理:java 程序运行时,是由一个 java 虚拟机来解释 java 字节码的,它将这些字节码...

  • Java字节码

    参考链接:一文让你明白Java字节码 Java字节码 Java虚拟机字节码指令 Java号称是一门“一次编译到处运...

  • Javassist指引(一)

    原文链接 [TOC] 1. 读写字节码 1.1概述 Javassist是一个Java字节码类库。Java的字节码是...

  • Javassist 指南1

    1、读写字节码 Javassist 是一个能处理 Java字节码 的类库,Java字节码存储在class文件中,每...

  • Java并发机制的底层实现原理

        Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为...

  • 并发 - Java并发机制的底层实现原理

    一、概述 Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化...

  • 简单读懂 Java 字节码

    读懂字节码有助于更好的理解 Java 编译器的工作原理 Java 字节码(Java bytecode)是 Java...

网友评论

      本文标题:java 字节码

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