美文网首页我爱编程
JVM--类文件结构知识点

JVM--类文件结构知识点

作者: 扯闲话 | 来源:发表于2018-08-09 17:22 被阅读17次

原著为《深入理解Java虚拟机——JVM高级特性与最佳实践(第2版)》,知识点仅作为日后复习专用!

代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。

(这个Class是指编译后的Class)

一:概述

由于最近十年内虚拟机以及大量建立在虚拟机之上的程序语言的快速发展,将我们编写的程序编译成二进制本地机器码(native code)已不在是唯一选择,越来越多的程序语言选择了与操作系统和机器指令集无关的、平台中立的格式作为编译后的储存格式。

二:(平台、语言)无关性知识

sun公司以及其他虚拟机提供商发布了许多可以运行在各种不同平台上的虚拟机,这些虚拟机都可以载入和执行同一种平台无关的字节码,从而实现了程序的“一次编写,到处运行。”

各种不同平台的虚拟机与所有平台都统一使用的程序存储格式----字节码(Byte Code)是构成平台无关的基石。(实现语言无关性的基础也是虚拟机和字节码的存储格式)

Java虚拟机不和包括Java在内的任何语言绑定,它只于"Class文件"这种特定的二进制文件格式所关联,CLass文件包含了Java虚拟机指令集和符号表以及若干其他辅助信息

Java语言中的各种变量、关键字和运算符号的语义最终都是由多条字节码命令组合而成的,因此字节码命令所能提供的语义描述能力肯定会比Java语言本身更加强大。因此,有一些Java语言本身无法有效支持的语言特性不代表字节码本身无法有效支撑,这也为其他语言实现一些有别于Java的语言特性提供了基础。

三:Class类文件的结构

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

Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件之中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全是程序运行的必要数据,没有空隙存在。

四:魔数与Class文件的版本

每个Class文件的头四个字节称为魔数,它唯一的作用是确定这个文件是否为一个能被虚拟机接受的Class文件。

五:常量池

常量池可以理解为Class文件之中的资料仓库,它是Class文件结构中与其他项目关联最多的数据类型,也是占用Class文件空间最大的数据项目之一,同时它还是在Class文件中第一个出现的表现型数据项目。

待续未完...

相关文章

  • JVM--类文件结构知识点

    原著为《深入理解Java虚拟机——JVM高级特性与最佳实践(第2版)》,知识点仅作为日后复习专用! 代码编译的结果...

  • 类文件结构【Class类文件的结构】

    概述 任何一个Class文件都对应着唯一一个类或接口的定义信息,但反过来,类或接口并不一定都得定义在文件里(如类或...

  • 类文件结构

    本文大体讲一下结构,着重从理解层面看,就是当时我最难理解的地方讲,并不会深入的讲解某一块的具体结构信息,如果要看结...

  • 类文件结构

    class文件结构 Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Cla...

  • 类文件结构

    类的二进制文件中的主要结构 无符号数和表 u1,u2,u4,u8。表由无符号数和表构成 魔数 1-4字节:确定文件...

  • 类文件结构

    概述 Class文件是一组以8位字节为基础单位的二进制流,各个数据项目按照顺序紧地排列在CLass文件之中,中间没...

  • 类文件结构

    一、概述 在计算机商业领域中,不同的硬件体系结构和不同的操作系统长期并存是必然的结果,所以Java 提出了“Wri...

  • 类文件结构

    语言无关性 JAVA虚拟机与Class文件关联,与具体的语言没关系。任何语言只要能编译成Cla...

  • 类文件结构

    语言无关性:jvm和字节码格式 jvm不和java在内的任何语言绑定,他只和“class”这种特定的二进制格式文件...

  • 类文件结构

    摘抄: 陈树义 Java技术精选 -各个语言的编译器吧文件编译成字节码,jvm把字节码解释给操作系统,或者是编译成...

网友评论

    本文标题:JVM--类文件结构知识点

    本文链接:https://www.haomeiwen.com/subject/mascbftx.html