`
glutinit
  • 浏览: 46395 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JVM摘要--Class文件格式

    博客分类:
  • JVM
阅读更多
    Class文件是JVM虚拟机可以理解的字节码文件,class文件并不是JAVA的专用文件,现在有很多语言都会生成可在JVM上运行的.class文件,比如JRuby,Groovy等等。

    这里介绍一下.class文件的具体结构。

    Class文件是二进制流,其中包含了一组8为字节为单位的基本单位,其中,各个基本元素之间都是紧密相连的,彼此之间没有空隙。当一个元素的数据大于1个字节的情况,就会按照高位在前的方式为其分配空间,将其放置在若干个字节中。

   在Class文件中,只有两种数据类型:无符号数和表。

    其中无符号数包括u1,u2,u4,u8,后面的数字代表其所占字节数,比如u4就表示4个字节。无符号数一般可表示数字,索引引用,数量值。或者按照UTF-8编码构成的字符串值。
而表则是由多个无符号数和其他表构成的复合型数据类型(无符号数和表的区别和和java语言中的基础类型与类有点类似),表习惯性的用_info结束。

    下面是Class文件格式
   
           
类型 名称 数量简要说明
u4magic1魔数,表示该文件是JVM认识的class文件,其值为0xCAFEBABE (可记忆为咖啡宝贝~)
u2minor_version1次版本号
u2major_version1主版本号
u2constant_pool_count1常量池容量计数值
cp_infoconstant_poolconstant_pool_count-1详见其他文章
u2access_flags1用于识别一些类或者接口的访问信息,比如,是否是接口,是否public等
u2this_class1类索引
u2super_class1父类索引
u2interfaces_count1接口数量
u2interfacesintercaces_count-1接口索引
u2fields_count1字段表数量
field_infofieldsfields_count-1详见其他文章
u2methods_count1方法表数量
method_infomethodsmethods_count-1详见其他文章
u2attributes_count1属性表数量
attribute_info attributes attributes _count-1详见其他文章

分享到:
评论

相关推荐

    JAVA新手入门笔记-编程基础知识

    中间层是指JVM和CLASS文件,它们扮演着非常重要的角色。中间层可以屏蔽底层的复杂细节,让开发者更容易编写程序。同时,中间层也可以提供了跨平台的功能,让开发者可以在不同的操作系统上运行程序。 函数式编程 ...

    sport_M.zip

    - **编译与运行**:Java 源代码需要通过 Javac 编译器转化为字节码(.class 文件),然后由 Java 虚拟机(JVM)执行。 - **体育相关应用**:Java 可能被用来编写体育相关的软件,如比赛管理系统、运动员训练模拟器...

    Java应用开发:基础知识全书作业练习题.docx

    * Java 文件的编译命令是 javac,编译后的文件为 class 文件。 * 一个.java 文件中只能有一个公共类,class 文件的文件名和 Java 文件的文件名对应。 * Java 程序可以跨平台,基础是 JVM(Java Virtual Machine)。 ...

    韩顺平-javase-从入门到精通学习笔记

    本资源摘要信息中,我们将详细介绍 Java 语言的基础知识、Java 开发工具、Java 语言的特点、Java 开发步骤、Java 虚拟机、Java 编译器、Java 字节码文件、Java 解释执行器、Java 虚拟机等。 Java 的基础知识: ...

    JAVA上百实例源码以及开源项目

     Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像...

    韩顺平JAVA从入门到精通视频教程(94讲)全部笔记整理.doc

    2. 编译源文件为类文件(.class 文件) 3. 在虚拟机上运行 三、Java 语言特点 Java 语言有四个主要特点: 1. 简单性:Java 语言简单易学 2. 面向对象:Java 语言是面向对象的编程语言 3. 跨平台性:Java 语言可以...

    Java期末考试题及答案.pdf

    * 解释字节码成为指令并执行,提供Class文件的运行环境 * 进行运行期间垃圾回收 * 提供与硬件交互的平台 Java虚拟机是JAVA运行环境(JRE)的一部分,它提供了一个平台独立的Java运行环境,使得Java程序可以在不同的...

    java选择题java选择题.docx

    * classpath 环境变量用于指定 Java 类文件(.class 文件)或 jar 文件所在的目录。 * 配置 classpath 环境变量可以使 Java 虚拟机找到所需的类文件。 四、Java 语言的基本语法 * Java 语言的基本语法包括变量声明...

    java程序设计试题库.pdf

    2. Java 语言的字节码文件:Java 语言的字节码文件需要以 .class 为扩展名,该文件可以被 Java 虚拟机执行。 3. Java 语言的多线程机制:Java 语言具有多线程机制,允许程序员创建多个线程来并发执行任务。 本资源...

    JAVA上百实例源码以及开源项目源代码

    Java编写的网页版魔方游戏 内容索引:JAVA源码,游戏娱乐,魔方,网页游戏 Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分...

    Java程序设计项目教程(第二版)-参考答案.docx

    本资源摘要信息基于 Java 程序设计项目教程(第二版)- 参考答案,涵盖了 Java 语言的基础知识、Java 版本、Java 语言的特点、JVM 的概念和作用、Java 程序的基本结构、异常处理等方面的知识点。 一、Java 版本 ...

    最新Java复习题 (含答案).docx

    4. 编译 Java 应用程序源文件将产生相应的字节码文件,这些字节码文件的扩展名为 .class。 5. 定义一个类,必须使用的关键字是 class。在 Java 中,class 是用于定义类的关键字。 6. JAVA 中不属于基本数据类型的...

    java实现调用c动态库

    gcc -shared -o libmd5.so -I/usr/lib/jvm/java-8-openjdk-amd64/include -I/usr/lib/jvm/java-8-openjdk-amd64/include/linux MD5Util.cpp -lssl -lcrypto ``` 5. **运行Java程序** 现在Java程序可以调用`MD5...

    (word完整版)《Java基础入门》课后习题及答案资料.doc

    1. javac命令是Java编译器,用于将Java源代码编译成.class文件。 2. java命令是Java解释器,用于将.class文件解释成机器代码。 3. Eclipse是Java集成开发环境(IDE),提供了代码编辑、编译、调试等功能。 Java开发...

    Java试题(空).docx

    16. 把Java文件编译成class文件,需要使用javac命令。 二、Java选择题 1. Java之父是James Gosling。 2. Java源文件的扩展名是.java。 3. 下列选项中的标识符符合法的是_a。 4. 在switch(s)语句中,s的数据类型不...

    《Java编程基础知识点汇总及习题集》-答案版.docx

    2. JDK、JRE、JVM的作用及关系:JDK是Java程序的开发环境,JRE是Java程序的运行环境,JVM是Java语言跨平台的保证 3. 环境变量配置:path环境变量存放可执行文件的存储位置 二、变量和数据类型 1. 变量的定义和声明...

    java-programming-summary.rar_java programming

    下面将根据这份摘要文件的主要内容,详细阐述Java编程中的关键知识点。 一、基本语法 1. 注释:Java中的注释分为单行注释(//)、多行注释(/*...*/)和文档注释(/**...*/),其中文档注释用于生成API文档。 2. ...

    Java基础第一章_withMarginNotes.pdf

    * 源文件中有多少个类(class),在javac编译之后就会生成多少个字节码文件(.class) 本资源摘要信息涵盖了Java基础知识的三个方面:Java语言概述、面向对象的核心逻辑和Java SE高级应用程序。同时,还涵盖了Java...

    java工程师笔试题(包含实习生、高级工程师)

    5. JVM 加载 class 文件的原理机制 Java 中所有的类必须加装到 JVM 中才能运行,这个工作是由 JVM 中的类装载器完成的,类装载器所作工作实质是把类文件读取到内存当中。 6. STRING 与 STRINGBUFFER 的区别 ...

Global site tag (gtag.js) - Google Analytics