JDK / JRE / JVM

JVM — это «двигатель», который запускает Java-программы. Твой код не выполняется процессором напрямую. Сначала компилятор переводит его в универсальный байт-код, а уже JVM на конкретном компьютере исполняет этот байт-код. Поэтому одна и та же программа работает и на Windows, и на Mac, и на Linux — «написал один раз, запускай везде».

JDK / JRE / JVM — это матрёшка, их часто путают:

JDK — всё для разработки (+ компилятор javac)
JRE — всё для запуска (+ библиотеки)
JVM
исполняет байт-код

Путь кода до запуска:

Code.javaтвой код javac Code.classбайт-код JVM Windows macOS Linux

Байт-код один на всех, а своя JVM есть под каждую ОС — она и переводит байт-код под конкретную машину.

🎤 Закрыл тему, если можешь объяснить:
• чем отличаются JDK, JRE и JVM и зачем нужен байт-код.