
At the lowest level the file format is described in terms of a few fundamental data types: But the persistent object facility went away, and along with it went the use of CAFEDEAD - it was eventually replaced by RMI."īecause the class file contains variable-sized items and does not also contain embedded file offsets (or pointers), it is typically parsed sequentially, from the first byte toward the end. So CAFEBABE became the class file format, and CAFEDEAD was the persistent object format. I used CAFEDEAD for the object file format, and in grepping for 4 character hex words that fit after "CAFE" (it seemed to be a good theme) I hit on BABE and decided to use it.Īt that time, it didn't seem terribly important or destined to go anywhere but the trash-can of history. I was re-vamping some file format code and needed a couple of magic numbers: one for the persistent object file, and one for classes. Somewhere along the line it was noticed that this was a HEX number. When we used to go there, we referred to the place as Cafe Dead. When Jerry died, they even put up a little Buddhist-esque shrine. It was a pretty funky place that was definitely a Grateful Dead Kinda Place. According to local legend, in the deep dark past, the Grateful Dead used to perform there before they made it big. "We used to go to lunch at a place called St Michael's Alley. The history of this magic number was explained by James Gosling referring to a restaurant in Palo Alto: Attributes: Any attributes of the class (for example the name of the sourcefile, etc.)Ĭlass files are identified by the following 4 byte header (in hexadecimal): CA FE BA BE (the first 4 entries in the table below).Interfaces: Any interfaces in the class.Super Class: The name of the super class.This Class: The name of the current class.Access Flags: for example whether the class is abstract, static, etc.Constant Pool: Pool of constants for the class.Version of Class File Format: the minor and major versions of the class file.There are 10 basic sections to the Java class file structure: On 11 December 2006, the class file format was modified under Java Specification Request (JSR) 202. This makes Java applications platform-independent. JVMs are available for many platforms, and a class file compiled on one platform will execute on a JVM of another platform.

If a source file has more than one class, each class is compiled into a separate class file. java files) containing Java classes (alternatively, other JVM languages can also be used to create class files). A Java class file is usually produced by a Java compiler from Java programming language source files (. class filename extension) containing Java bytecode that can be executed on the Java Virtual Machine (JVM). Java class file Internet media typeĪpplication/java-vm, application/x-httpd-javaĪ Java class file is a file (with the. For classes in Java, see Class (computer programming).
