Мирна
Объектный код имеет форму, которую может интерпретировать только ОС, в которой он был скомпилирован. Компилятор C выводит объектный код для ОС, для которой он был написан.
Компилятор Java выдает байтовый код, который выполняется на его JVM (виртуальной машине Java). Все особенности ОС помещены в JVM, скрытые от кода Java. Итак, если в вашей ОС есть JVM, вы можете запускать на ней байт-код Java без перекомпиляции. Код Java, скомпилированный в Windows, может работать в любой другой ОС с той же версией JVM.