Эта статья является частью книги Java. Состояние языка и его перспективы (2022).
Программы Java исполняются на виртуальной машине JVM (Java Virtual Machine). Когда мы компилируем программу на Java, то мы получаем на выходе не инструкции для какого-то конкретного физического процессора (x86 или других), а код для виртуальной машины. Файлы «.class» содержат байткод для JVM. Затем при запуске программы JVM компилирует этот код в команды конечного процессора, на котором он работает.
Благодаря компиляции не в конечный код, а в код для виртуальной машины, мы можем перенести наши программы на другой компьютер даже с другой архитектурой, и они будут там работать, при условии что на компьютере существует JVM необходимой версии или выше.

Существуют различные реализации JVM даже для одной архитектуры процессора и одной ОС. Они имеют некоторые различие в поставляемых компонентах, в скорости работы и в особенностях реализации. Они все реализуют одну и ту же спецификацию, поэтому в большинстве случаев программы запускаются без проблем, но это не значит, что их не нужно тестировать на той платформе, на которой предполагается использовать.