Java использует виртуальную машину...
Можно, конечно, и так сказать, но правильнее, наверное, машину java.
Виртуальная машина - это немного другое, но смысл близкий. На эту тему есть что сказать, но речь о другом.
Везде требуется какая-то первоначальная среда хотя бы для того, что приложение запускалось.
Например, для запуска терминальных dos программ (com, exe - по сути программ в машинных кодах) требовалось иметь машину "command.com" (раньше назывался коммандный интерпретатор, а могли бы называть и машиной), для которой тоже требовалось перед этим, что-то еще, чтобы его загрузить + api встроенные в BIOS, типа INT21.
Для запуска откомпилированных под определенныу ОС С/C++ программ требуется ОС с соответствующими библиотеками и API, что по сути тоже какая-то машина,
а для всяких графических программ тоже требуются API, библиотеки и демоны еще.
Безусловно, пирог становится все толще (и более крутым), но это не значит, что он становится тормознее (хотя в общем случае это правильно). По сути машины Java (С#) - это тоже доп API и библиотеки, и только чуть-чуть демоны. За этим очень серьезно следят, чтобы ничего лишнего в машине не было.
Виртуальные машины - это тоже доп API и библиотеки, но демоны там очень мощные. Это уже плата за универсальность.
В Java (С#) машинах есть некоторая плата за межплатформенность, которая заключается в несколько затянутом старте программы по сравнению с бинарными программами (из-за докомпиляции (JIT) до уровня возможности быстрого вызова API).
Если говорить про питон, то все будет выглядеть аналогично, как в Java. Это откомпилированные API, библиотеки и немного демон. Нет принципиальной разницы.
По другому и быть не может, в принципе.
Как-то так.