Почему нельзя скомпилированную программу запустить на другой ОС?

Смотрел вебинар по Java и там говорилось что программу написанную на ней можно без перекомпиляции перенести на другую ОС и запустить.
Но толком и не объяснили почему нельзя например на C++ написать и перенести. С чем это связано?
Еще сказали что Java - это компилируемо-интерпретируемый язык. Я запутался, до этого говорили что Java просто компилируемый. Объясните пожалуйста, я полный новичок.
  • Вопрос задан
  • 779 просмотров
Решения вопроса 2
@Fixid
Если крайне образно:
Из Java делают байт-код которому неважно где исполняться и он запускается внутри специальной JVM
Из C++ делают бинарник который привязывается (линкуется) к внешним либам и системному окружению и запускается непосредственно в системе
Ответ написан
Griboks
@Griboks
1) Компиляция - трансляция программы на низкоуровневый язык/машинный код. Почему в 99% случаем программа не запустится на другой ОС/платформе? Потому что там будет другой набор низкоуровневых команд. Это означает, что она просто не поймёт вашу программу.

2) Java программа компилируется в байт-код. Затем этот байт-код поблочно интерпретируется/выполняется. Выполняется программа на виртуальной машине, которая написана на среднем уровне. Поэтому язык нельзя назвать компилируемым в традиционном смысле (хотя разделение условно).
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
saboteur_kiev
@saboteur_kiev
software engineer
Потому что программа на С++ выполняется непосредственно в операционной системе, а программа на java выполняется в java машине.
Ответ написан
Комментировать
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Почему нельзя скомпилированную программу запустить на другой ОС?

Учитывая что WINE и DOSBOX уже 300 лет в обед и windows subsystem for linux появился не вчера, вопрос, мягко говоря, странный. Можно запустить, если в "другой ОС" есть поддержка совместимости с ОС, для которой программа скомпилирована.
Ответ написан
@Vitsliputsli
В разных ОС разные форматы исполняемых файлов, т.к. ОС должна понимать как загружать и выполнять файл.
Java такой же компилируемый как и PHP, это интерпретируемые языки, но за счет JIT-компиляции их, наверное, могут называть компилируемо-интерпретируемыми.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы