标签:
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文件的基本组成概述。后续继续详细介绍哪几个字节分别代表什么。
标签:
原文地址:http://www.cnblogs.com/zxCoding/p/5222110.html