На какой виртуальной машине выполняется Java-код и как это обеспечивает кроссплатформенность?

«На какой виртуальной машине выполняется Java-код и как это обеспечивает кроссплатформенность?» — вопрос из категории Софт-скиллы, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

Java-код выполняется на JVM (Java Virtual Machine). Это обеспечивает кроссплатформенность по принципу "напиши один раз, запускай где угодно" (WORA).

Как это работает:

  1. Исходный код (.java) компилируется компилятором javac в байт-код (файл .class).
  2. Байт-код — это промежуточный, платформенно-независимый формат.
  3. JVM, специфичная для каждой операционной системы (Windows, Linux, macOS), интерпретирует или компилирует (JIT-компиляция) этот байт-код в машинные инструкции для конкретного процессора.

Пример:

// Main.java
public class Main {
    public static void main(String[] args) {
        System.out.println("Hello from JVM!");
    }
}
# Компиляция в байт-код
javac Main.java
# Запуск на JVM
java Main

Почему это важно: Разработчикам не нужно переписывать код под каждую ОС. Достаточно иметь реализацию JVM для целевой платформы.