重读《深入理解Java虚拟机》三、Java虚拟机执行的数据入口(类文件结构)

时间:2022-12-28 07:59:47

1、Java如何实现平台无关系

Java要实现平台无关系就需要在Java代码和本地机器之间引入一个中间层,实现Java代码和本地机器的解耦,而这个中间层就是字节码。字节码独立于本地机器,以实现代码的可移植性。Java代

码通过编译器编译成字节码,字节码又通过虚拟机编译为当前本地机器可识别的本地机器代码并执行。

重读《深入理解Java虚拟机》三、Java虚拟机执行的数据入口(类文件结构)

 

2、如何表示类和接口信息(Class文件的结构)

虚拟机要做到语言无关性,就需要同一个字节码结构,实现字节码与特定语言的解耦。

(1)类和接口所具有信息

     1)类和接口的名称、访问修饰符、包名(名称空间)即类和接口的完全限定名称

     2)类和接口内声明的的变量、方法和属性

     3)字段的信息有:字段的作用域、是否为静态、是否为常量、是否为volidate关键字修饰、字段的数据类型、字段的名称等

     4)方法和属性的信息有:方法的名称,方法的访问修饰符,方法的返回类型,方法的参数,方法是否为静态方法等

    Class文件要对应一个类或者接口,就一定是包含上述类和接口的所有信息的。

(2)Class文件的数据类型

      无符号数:用来描述数字、索引引用、数量值、UTF-8字符串值

      表:用于表示具有层次关系的复合结构的数据

(3)Class文件如何存储类和接口的信息

重读《深入理解Java虚拟机》三、Java虚拟机执行的数据入口(类文件结构)