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

java class文件的结构(1)

阅读更多

从今天开始分几节介绍Java中最重要的class文件。

包括class文件的结构、class是如何进入到虚拟机中的(类装载)、class的消亡(垃圾收集)

 

<!----><!----><!----> <!---->

Class 的结构

 

   Class 文件由 java 代码编译而来,每个类都会生成一个 .class 文件。 Java class 文件中包含了 java 虚拟机所需知道的、关于类或接口的所有信息。这些信息用表格的形式来说明,我们可以得到 classfile 表:如图 1

<!----><!----><!---->

1 classfile 表的格式

 

其中类型或者为表名,或者如表 1 所示的“基本类型”。所有存储在类型 u2 u4 u8 中的值,在 class 文件中以高位在前的形式出现。

 

U1

1 个字节,无符号整形

U2

1 个字节,无符号整形

U3

1 个字节,无符号整形

U4

1 个字节,无符号整形

1 class 文件“基本类型”

 

Classfile 表中各项简介如下:

 

<!---->1)         Magic( 魔数 )

每个 java class 文件的前 4 个字节被称为 magic number 0xCAFEBABE 。魔数的作用在于,可以轻松的分辨出 java class 文件和非 java class 文件。

 

<!---->2)         Minor_version major_version <!---->

  Class 文件的下面 4 个字节包含了主次版本号。随着 java 技术的发展, java class 文件格式可能会加入新特性。 Class 文件格式一旦发生变化,版本号也会随之变化。如果 class 文件的版本号超出了 java 虚拟机所能处理的有效范围, java 虚拟机将不会处理该文件。

 

<!---->3)         Constant_pool_count constant_pool <!---->

  之后的是常量池。其中包含了与文件中类和接口相关的常量。常量池中存储了诸如文字字符串、 final 变量值、类名和方法名的常量。 Java 虚拟机把常量池组织为入口列表的形式。在实际列表 constant_pool 之前,是入口在列表中的计数 constant_pool_count

  常量池中的许多入口都指向其他的常量池入口,而且 class 文件中紧随着常量池的许多条目也会指向常量池中的入口。在整个 class 文件中,指示常量池入口在常量池列表中位置的整数索引都指向这些常量池入口。列表中的一项索引值为 1 ,第二项索引值为 2 ,以此类推。

 

例: act.class 的常量池。 <!----><!----> <!---->

{ }V 表示一个返回类型为 void 的方法。

 

<!---->4)         Access_flags <!---->

  访问标志。这个字段表示的意思指明了文件中定义的是类还是接口;还定义了在类或接口的声明中,使用了哪种修饰符:是抽象的还是公共的,或者是 final 。类的类型可以为 final ,而 final 类不可能是抽象的,同时接口也不能为 final 类型。

 

<!---->5)         This_class super_class <!---->

  这个类的名字和超类名字。特殊的,对于 object 类, super_class 0 ,除此以外 super_class 对于所有的类均有效。对于接口,在常量池入口 super_class 位置的项为 java.lang.object

<!---->6)         Interfaces_count interfaces <!---->

  紧接着 super_class 的是 Interfaces_count 。此项的含义为:在文件中由该类直接实现或者由该接口所扩展的父接口的数量。在这个技术的后面,是名为 interfaces 的数组,它包含了对每个由由该类直接实现或者由该接口所扩展的父接口的常量池索引。

 

  • 大小: 22.7 KB
  • 大小: 35.9 KB
2
0
分享到:
评论

相关推荐

    JavaClass文件的结构分析及其校验.pdf

    通过对JavaClass文件结构的理解,可以有效地实现一个JavaClass文件校验器,进而确保加载到JVM上的Class文件是安全可靠的。这对于Java开发者而言是一项重要的技能,有助于提高Java程序的质量和性能。

    java class文件编译

    一、Java类文件结构 Java源代码(.java文件)在经过Java编译器(javac)处理后,会生成对应的Class文件。Class文件采用一种特殊的二进制格式,这种格式具有固定结构,主要包括以下几个部分: 1. 魔数:标识文件为...

    java class文件反编译

    1、打开一个或者多个*.class文件,XJad反编译后,重命名为*.java文件, 保存至当前文件夹,并在编辑器中打开查看; 2、打开一个文件夹,XJad将该文件夹下所有*.class文件进行反编译,并保存至该文件夹下, 依据包...

    java class文件查看工具

    1. **Class文件结构** Java Class文件遵循特定的文件格式,这个格式由一系列的8位字节构成,包括魔数(Magic Number)、版本信息、常量池、访问标志、类和父类索引、接口索引集合、字段表集合、方法表集合、属性表...

    Java Class文件反编译工具 jd-gui

    Java Class文件是Java程序编译后的二进制格式,它包含了类和接口的定义、方法体、常量池等信息,但这些信息是以机器可读的字节码形式存在,对于人类来说不易理解。为了查看和理解Class文件内部的源代码,我们就需要...

    java class文件查看器

    首先,让我们深入了解一下Java Class文件的结构。一个.class文件包含了Java程序的基本结构单元,如类、接口、字段和方法定义。它采用特定的字节码格式,使得虚拟机(JVM)能够理解并执行其中的指令。这些字节码由一...

    JAVA Class文件结构

    ### JAVA Class 文件结构详解 #### 一、概述 在Java编程语言中,`.class`文件是一种重要的二进制文件格式,用于存储Java类的编译结果。这些文件由Java编译器生成,并作为Java虚拟机(JVM)执行的基础。本文将深入...

    Java反编译工具把.class文件转换为.java文件

    ### Java反编译工具:将.class文件转换为.java文件 #### 概述 在软件开发领域,有时我们可能需要分析第三方库或者开源项目的内部结构,这时就需要借助于反编译工具来帮助我们阅读和理解其源码。Java作为一种广泛...

    class文件结构浅析

    通过对Class文件结构的学习,我们可以更好地理解Java程序的执行机制及其优化方式。 #### 二、Class文件的整体结构 Class文件是一种特定格式的二进制文件,用于存储由Java编译器生成的字节码。每个Java类或接口都会...

    java class文件或jar文件反编译工具.rar

    首先,让我们详细了解一下Java class文件的结构。一个class文件由一系列字节组成,这些字节按照特定的格式排列,包括魔数、版本信息、常量池、访问标志、类和父类索引、接口索引集合、字段表集合、方法表集合以及...

    电脑java class文件查看与修改工具

    本篇文章将详细讲解如何使用指定的"电脑java class文件查看与修改工具"来查看和修改这些文件。 首先,我们要了解的是`jd-gui查看.exe`。这是一个名为JD-GUI的开源工具,它允许开发者直观地查看Java字节码(.class...

    java反编译工具(.class文件反编译成.java文件)

    Java反编译是将已编译的字节码(.class文件)转换回源代码(.java文件)的过程,这对于理解和学习已有的Java程序、逆向工程或调试都是很有用的。标题提到的"java反编译工具"是用于这个目的的软件,它能够帮助开发者...

    JavaDecompiler打开class文件

    它允许用户查看并理解已编译的.class文件的内容,因为Java的源代码(.java文件)通常不会随可执行文件一起发布。`JavaDecompiler`这个标题暗示我们将探讨如何使用Java反编译器来打开和解析.class文件。 Java类文件是...

    java class文件编辑器

    Java Class文件编辑器,如JD-GUI 0.3.3 绿色版,是一种用于查看和理解Java字节码的工具,对于开发者而言尤其重要,因为它提供了将已编译的`.class`文件反编译回源代码的能力。在深入讨论这个工具之前,我们先来了解...

    JavaClassViewer-2.0.4_理解class文件结构

    JavaClassViewer-2.0.4, 用于理解Class文件结构。 解析出class结构,以及十六进制的表示,特别方便。 原下载地址: http://www.softpedia.com/get/Programming/File-Editors/Java-Class-Viewer.shtml。另外也可以参考...

    Java class文件反编译工具集

    Java class文件是Java程序编译后的二进制代码,它包含了类、方法、变量等信息。但是,由于class文件是以机器可读的形式存在,对于人类来说并不直观。这时,我们就需要借助于反编译工具来将class文件转换回源代码...

    java class文件反编译工具

    Java Class文件反编译工具是开发者在处理已编译的.class文件时的一种实用工具,它能够将二进制的Class文件转换回可读性更强的源代码格式,这对于理解和调试已封装的库或分析未知的Java程序至关重要。本文将详细介绍...

    JAVA CLASS文件查看器

    1. **逆向工程**:当开发者需要了解某个库或框架的内部工作原理,而原始源代码不可用时,可以使用此工具查看CLASS文件,从而实现反编译。 2. **错误调试**:在没有源代码的情况下,通过查看CLASS文件的字节码,可以...

    java解析class文件

    Class文件是Java编译器将源代码编译后的结果,包含了类的结构信息、方法定义、常量池等关键数据。理解并能解析Class文件,对于进行JVM优化、字节码分析、动态代理、插桩等高级技术至关重要。 首先,Class文件是以二...

    java.class文件反编译工具【免费】

    本资源提供的是一款名为JD-GUI的免费Java反编译工具,它可以帮助开发者将.class文件转换回易于理解的.java源代码格式。 JD-GUI是一款图形用户界面应用,设计简洁,使用方便。它允许用户直接打开.class文件,快速...

Global site tag (gtag.js) - Google Analytics