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

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

2) Java программа компилируется в байт-код. Затем этот байт-код поблочно интерпретируется/выполняется. Выполняется программа на виртуальной машине, которая написана на среднем уровне. Поэтому язык нельзя назвать компилируемым в традиционном смысле (хотя разделение условно).
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
saboteur_kiev
@saboteur_kiev
build engineer
Потому что программа на С++ выполняется непосредственно в операционной системе, а программа на java выполняется в java машине.
Ответ написан
jcmvbkbc
@jcmvbkbc
http://dilbert.com/strip/1998-08-24
Почему нельзя скомпилированную программу запустить на другой ОС?

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

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

Войти через центр авторизации
Похожие вопросы
Zaycev.net Челябинск
от 65 000 до 100 000 руб.
timebook Нижний Новгород
от 120 000 руб.
Ньютон Финанс Иркутск
от 65 000 руб.
17 февр. 2019, в 20:49
2000 руб./за проект
17 февр. 2019, в 20:47
100 руб./за проект