===== 5.5 Export File ===== An **export** file is defined by the following structure: The items in the **ExportFile** structure are as follows: **magic** The **magic** item contains the **magic** number identifying the **ExportFile** format; it has the value **0x00FACADE**. **minor_version, major_version** The **minor_version** and **major_version** items are the minor and major version numbers of this export file. Together, a major and a minor version number determine the version of the export file format. If an export file has the major version number of M and minor version number of m, the version of the export file's format is M.m. A change in the major version number indicates a major incompatibility change, one that requires a fundamentally different Java Card virtual machine. A Java Card virtual machine is not required to support ****export**** files with different major version numbers. A Java Card virtual machine is required to support ****export**** files having a given major version number and all valid minor version numbers in the range 0 through some particular **minor_version** where a valid minor version number is a minor version number that has been defined in a version of the Java Card virtual machine specification. In this specification, the major version of the export file format has the value 2 and the minor version has the value 2. Only Sun Microsystems, Inc. may define the meaning and values of new export file format versions. **constant_pool_count** The **constant_pool_count** item is a non-zero, positive value that indicates the number of constants in the constant pool. **constant_pool[]** The **constant_pool** is a table of variable-length structures representing various string constants, class names, field names and other constants referred to within the **ExportFile** structure. Each of the **constant_pool** table entries, including entry zero, is a variable-length structure whose format is indicated by its first "tag" byte. There are no ordering constrains on entries in the **constant_pool** table. **this_package** The value of **this_package** must be a valid index into the ****constant_pool**** table. The ****constant_pool**** entry at that index must be a **CONSTANT_Package_info** ([[5.6.1_CONSTANT_Package| Section 5.6.1, CONSTANT_Package]]) structure representing the package defined by this **ExportFile**. **export_class_count** The value of the **export_class_count** item gives the number of elements in the classes table. **classes[]** Each value of the classes table is a variable-length **class_info** structure ([[5.7_Classes and Interfaces| Section 5.7, Classes and Interfaces]]) giving the description of a publicly accessible class or interface declared in this package. If the ****ACC_LIBRARY**** flag item in the **CONSTANT_Package_info** ([[5.6.1_CONSTANT_Package| Section 5.6.1, CONSTANT_Package]]) structure indicated by the this_package item is set, the classes table has an entry for each public class and interface declared in this package. If the ****ACC_LIBRARY**** flag item is not set, the classes table has an entry for each public shareable interface declared in this package.[1]