类文件结构(读深入理解jvm虚拟机,随记)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类文件结构(读深入理解jvm虚拟机,随记)相关的知识,希望对你有一定的参考价值。

6.2  无关性的基石

   标题为什么是无关性基石呢。时至今日,商业机构和开源机构已经在java语言之外发展出一大批在java虚拟机上运行的语言。如Clojure,Groovy,Scala等。

   java虚拟机不和包括java在内的任何语言绑定,它只与“Class文件”这种特定的二进制文件格式有所关联。  java程序(*.java)------>javac编译器------>字节码文件----->java虚拟机。

6.3  Class类文件的结构

   如果想比较深入的了解虚拟机,那么这部分是不能不接触的。

   注意??:任何一个Class文件都对应着唯一一个类或接口的定义信息,但反过来说,类或接口并不一定都得定义在文件里(譬如类或接口也可以通过类加载器直接生成)。

  Class文件是一组以8位字节为基础单位的二进制流,各个数据项严格按照顺序紧凑地排列在Class文件之中,中间没有添加任何分隔符。

  Class文件采用一种类似于C语言结构体的伪结构来存储数据。其只有两种数据类型:无符号数和表。

  无符号数:属于基本数据类型。以u1,u2,u4,u8分别代表1个字节,2个字节,4个字节,8个字节的无符号数。无符号数可以用来描述:数字,索引引用,数量值或者按UTF-8编码构成字符串值。

  表是由多个无符号数或者其他表构成的复合数据类型。都以“_info”结尾。 整个Class文件本质上就是一张表。

  

    以上是Class文件的基本组成概述。后续继续详细介绍哪几个字节分别代表什么。

 

以上是关于类文件结构(读深入理解jvm虚拟机,随记)的主要内容,如果未能解决你的问题,请参考以下文章

深入理解JVM学习笔记——-6类文件结构

《深入理解java虚拟机》-类文件结构

《深入理解JVM——虚拟机类加载机制》

《深入理解JVM——虚拟机类加载机制》

Java类加载器的理解

深入理解JVM虚拟机6:深入理解JVM类加载机制