无关性的基石
I> "平台无关性"实现在操作系统的应用层上:sun公司以及其他虚拟机提供商发布了许多可以运行在各种不同平台上的虚拟机,这些虚拟机都可以载入和执行同一种平台无关的字节码,从而实现了程序的"一次编码,到处运行".
II> 各种不同平台的虚拟机与所有平台都统一使用的程序存储格式--字节码是构成平台无关性的基石.
III> Java虚拟机不和包括Java 在内的任何语言绑定,它只与"class文件"这种特定的二进制文件格式所关联,class文件中包含了Java虚拟机指令集和符号表示以及其他若干辅助信息.
IV> Java语言中的各种变量,关键字和运算符的语义最终都是由多条字节码命令组成的,因此字节码命令所能提供的语义描述能力肯定会比Java语言本身更强大.
Class类文件结构
I> Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部是程序运行的必要数据,没有空隙存在.当遇到需要占用8为字节以上空间的数据项时,则会按照高位在前的方式分割成若干个8为字节进行存储.
II> 无符号数属于基本的数据类型,以u1,u2,u4,u8来代表1个字节,2个字节,4个字节,8个字节的无符号数,无符号数可以用来描述数字,索引引用,数量值或者按照UTF-8编码构成字符串指.
III> 表是由多个无符号数或者其他作为数据项构成的复合数据类型,所有表都习惯性地以"_info"结尾.表用于描述有层次关系的复合结构的数据,整个Class文件本质上就是一张表.