Java入门:java类文件详解

文章作者 100test 发表时间 2007:03:26 17:53:24
来源 100Test.Com百考试题网


一、什么是Java类文件
Java类文件是Java程序的二进制表示形式。每一个类文件代表一个类或者接口。不可能在一个类文件中放入多个类或者接口。这样就使得无论类文件是在哪一种平台上生成,都可以在任何主机上执行。
虽然类文件是Java体系结构的一部分,但是他并不是与Java语言不可分的。你可以将其他语言的程序编译为类文件,也可以将Java程序文件编译为其他二进制形式。
Java类文件是一个基于8-bit字节的二进制流。数据块顺序的、无分割符的、big-endian的形式存储。
二、类文件的内容
Java的类文件中包含了所有Java虚拟机所需要的关于类和接口的信息。所有类文件中的信息都以以下的四种基本类型的存储:
Table 6-1. Class file "primitive types"
u1 a single unsigned byte
u2 two unsigned bytes
u4 four unsigned bytes
u8 eight unsigned bytes
类文件中的主要部分以表6-2的顺序存储:
Table 6-2. Format of a ClassFile Table
Type&. #9.Name Count
u4 magic 1
u2 minor_version 1
u2 major_version 1
u2 constant_pool_count 1
cp_info constant_pool constant_pool_count-1
u2 access_flags 1
u2 this_class 1
u2 super_class 1
u2 interfaces_count 1
u2 interfaces interfaces_count
u2 fields_count 1
field_info fields fields_count
u2 methods_count 1
method_info methods methods_count
u2 attributes_count 1
attribute_info attributes attributes_count
1、魔术编码(magic)
每一个Java类文件的开头四个字节都是魔术编码(OxCAFEBABE)。通过魔术编码可以很容易识别类文件。
2、副版本号和主版本号(minor_version and major_version)
剩下的四个字节是副版本号和主版本号。但Java技术在进化时,一些新的特性可能会被加入到类文件中。每一次类文件格式的变化,都会相应的改变版本号。虚 拟机通过版本号来识别自己能够处理的类文件。Java虚拟机往往只能处理一个给定的主版本号和其下的一些副版本号。虚拟机必须拒绝那些不再处理范围内的类 文件。

相关文章


多角度看Java中的泛型
SCJDInformation
scjp(sun认证java程序员)来谈谈我的复习方法
管理Java类路径(Windows)
Java入门:java类文件详解
我看SCJP考试通过
我的scjp考试经历
Java深入:认识classClass及其应用
用JavaME进行无线消息传递
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛