Java’s Virtual Machine’s Endianness

Multibyte data in the class files are stored big-endian.

From The Java Virtual Machine Specification, Java SE 7 Edition, Chapter 4: The class File Format:

A class file consists of a stream of
8-bit bytes. All 16-bit, 32-bit, and
64-bit quantities are constructed by
reading in two, four, and eight
consecutive 8-bit bytes, respectively.
Multibyte data items are always stored
in big-endian order, where the high
bytes come first.

Furthermore, the operand in an bytecode instruction is also big-endian if it spans multiple bytes.

From The Java Virtual Machine Specification, Java SE 7 Edition, Section 2.11: Instruction Set Summary:

If an operand is more than one byte in
size, then it is stored in big-endian
order-high-order byte first. For
example, an unsigned 16-bit index into
the local variables is stored as two
unsigned bytes, byte1 and byte2, such
that its value is (byte1 << 8) | byte2.

So yes, I think it can be said that the Java Virtual Machine uses big-endian.

Leave a Comment