The Java language definition places quite detailed constraints on the representation of its primitive types--for example it requires conformance with IEEE 754 for float and double. There may still be a requirement for representation conversion in heterogenous systems. For example, source and destination computers (or virtual machines) may have different endianess.