Это достигается путем компиляции кода языка Java в промежуточное представление, называемое байт-кодом Java, а не непосредственно в машинный код конкретной платформы.
Java делает это, заставляя компилятор Java преобразовывать код в байт-код Java вместо машинного кода.