java⽂件是什么_java类⽂件是什么?
⼀、什么是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虚拟机往往只能处理⼀个给定的主版本号和其下的⼀些副版本号。虚拟机必须拒绝那些不再处理范围内的类 ⽂件。
全部