类文件结构-----Class类文件的结构】的更多相关文章

①无关性的基石 “与平台无关的”得理想最终实现在操作系统的应用层上:Sun公司和其他虚拟机提供商发布了许多可以在各种不同平台上的虚拟机,这些虚拟机都可以载入和执行同一种平台无关的字节码,从而实现了程序的“一次编写,处处运行”. 虚拟机的两种中立特性:一是平台无关性:字节码是构成平台无关性的基石:另一种是语言无关性,这也是要实现的,在java虚拟机上可以运行其他的语言.实现语言无关性的基础仍然是虚拟机和字节码存储格式. 虚拟机不会和任何语言绑定,它只与“Class文件”这种特定的二进文件格式所关联…
代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步. 实现语言无关性的基础是虚拟机和字节码存储格式.Java虚拟机不和包括Java在内的任何语言绑定,只与"Class文件"这种特定的二进制文件所关联,Class文件中包含了Java虚拟机指令集合符号表以及若干其它辅助信息.Java虚拟机作为一个通用的.机器无关的执行平台,任何其他语言都可以将其作为语言的产品交付媒介. Java虚拟机提供的语言无关性: Class文件是一组以8位字节为基础单位的二进制…
目录 类文件结构 Class类文件的结构 魔数与Class文件的版本 常量池 访问标志 类索引.父类索引和接口索引集合 字段表集合 方法表集合 属性表集合 完整结构描述 实例 源码 Class文件 分析 魔数.Class版本 常量池长度 常量池内容 访问标志 类索引.父类索引.接口索引 字段表集合 方法表集合 总结 类文件结构 Class类文件的结构 任何一个Class文件都对应着唯一一个类或者接口的定义信息,但是类或者接口并不一定都要定义在文件里(例如类也可以通过类加载器直接生成).Class…
虽然这几天 很忙,但是学习是不能落下的,也不能推迟,因为如果推迟了一次,那么就会有无数次;加油,come on! Java跨平台的基础: 各种不同平台的虚拟机与所有平台都统一使用的程序存储格式——字节码(ByteCode)是构成平台无关性的基石,也是语言无关性的基础.Java虚拟机不和包括Java在内的任何语言绑定,它只与“Class文件”这种特定的二进制文件格式所关联,Class文件中包含了Java虚拟机指令集和符号表以及若干其他辅助信息. Class类文件结构 Class类的本质 任何一个C…
概述 class类文件的结构可见下面这样图(出处见参考资料),可以参照下面的例子,对应十六进制码,找出找出相应的信息. 其中u2 , u4 表示的意思是占用两个字节和占用四个字节,下面我们将会各项说明. class类文件结构 Class 文件是一组以8 字节位单位的二进制流,各个数据按照一定的顺序排放,Class文件采用一种类似于C语言结构体的伪结构来存储数据. 例如下面代码使用java编译后,生成的class 文件. public class TestClass { private int m…
一.类文件的结构 我们都知道,各种不同平台的虚拟机,都支持 "字节码 Byte Code" 这种程序存储格式,这构成了 Java 平台无关性的基石.甚至现在平台无关性也开始演变出 "语言无关性" ,就是其他语言也可以运行在 Java 虚拟机之上,比如现在的 Kotlin.Scala 等. 实现语言无关性的基础仍然是虚拟机和字节码存储格式,Java 虚拟机步包括 Java 语言在内的任何语言绑定,他只和 "Class 文件" 这种特定的二进制文件格…
Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑的排列在Class文件中,中间没有任何分隔符.Class文件的结构只有两种数据类型:无符号数和表.无符号数以u1.u2.u4和u8来代表1个字节.两个字节.四个字节和八个字节的无符号数,可以用来描述数字.索引引用.数值量或者按UTF-8编码的字符串值.表是有多个无符号数或者其他表作为数据项构成的复合数据类型,习惯性以“_info”结尾.下面是Class文件的结构: 类 型 名 称 数 量 u4 magic 1 u2…
上节学习回顾 在上一节当中,主要以自己的工作环境简单地介绍了一下自身的一些调优或者说是故障处理经验.所谓百变不离其宗,这个宗就是我们解决问题的思路了. 本节学习重点 在前面几章,我们宏观地了解了虚拟机的一些运行机制,那么从这一章节开始,我们将更加深入虚拟机的深处去了解其运行细节了.例如本章节的学习重点是类文件的结构,也就是虚拟机的数据入口.既然是数据入口,肯定得要符合虚拟机的数据定义规范才能给虚拟机处理,否则它压根就不认识你. 概述 在学习之前,先抛出一个比较常见的问题:C语言与Java的运行效…
Java语言从诞生之时就宣称一次编写,到处运行的跨平台特性,其实现原理是源码文件并没有直接编译成机器指令,而是编译成Java虚拟机可以识别和运行的字节码文件(Class类文件,*.class),字节码文件是一种平台无关的中间编译结果,字节码文件由java虚拟机读取,解析和执行,java虚拟机屏蔽了不同操作系统和硬件平台的差异性. 如今的java虚拟机已经称为一种通用平台,不但能够运行java语言,Groovy,JRuby,Jython等一大批动态语言也可以直接在Java虚拟机上运行,其原理也是这…
Java语言从诞生之时就宣称一次编写,到处运行的跨平台特性,其实现原理是源码文件并没有直接编译成机器指令,而是编译成Java虚拟机可以识别和运行的字节码文件(Class类文件,*.class),字节码文件是一种平台无关的中间编译结果,字节码文件由java虚拟机读取,解析和执行,java虚拟机屏蔽了不同操作系统和硬件平台的差异性. 如今的java虚拟机已经称为一种通用平台,不但能够运行java语言,Groovy,JRuby,Jython等一大批动态语言也可以直接在Java虚拟机上运行,其原理也是这…