- JVM语言无关性
- JVM只与字节码关联,而不与Java语言直接关联。事实上,JRuby,Groovy等语言也可以由相应的编译器编译为字节码,然后由JVM解释执行。甚至可以自己写一个class字节码文件,然后由JVM来执行。
- class类文件结构
-
任何一个class文件都对应着唯一一个类或接口的定义信息。
-
class文件是一组8字节为基础单位的二进制流,各个数据项完全按照规范要求排列,中间无空隙。数据项只有两种:无符号数和表。
-
无符号数分为u1,u2,u4,u8
-
表是多个无符号数或者其他表作为数据项构成的复合数据类型,所有表都以_info结尾。
-
由于中间无空隙,所以要表示同一类型,但长度不确定的数据时,一般会将数据长度放在前面,后面紧跟数据。
-
-
字节码结构
-
magic:4B,标示是Java class文件,为0xCAF