Несмотря на то, что есть много общего, есть несколько ключевых отличий:
Хорошим примером Runtime System была бы виртуальная машина Java, которая обеспечивает согласованную кроссплатформенную среду для [скомпилированного] байтового кода Java.
Хорошим примером уровня совместимости может служить WINE, который позволяет пользователям запускать неизмененные приложения Windows непосредственно в Linux и Unix. По сравнению с WINE уровни совместимости также могут быть довольно небольшими, например, одна библиотека, которую основная база кода использует для доступа к функциям ОС (например, открытие файла, обмен данными через Интернет и т. Д.), Которые обеспечивают согласованный API чтобы приложение эффективно скрывало все отвратительные различия, характерные для ОС.
Недостаток среды выполнения состоит в том, что вся среда должна быть доступна для любого кода, который она будет выполнять, что может потребовать больших усилий по разработке.
Недостаток уровня совместимости заключается в том, что он не обязательно обеспечивает согласованность и может быть более сложным для отладки.
Преимущество среды выполнения состоит в том, что после переноса на новую платформу приложения будут работать без изменений.
Преимущество уровня совместимости заключается в том, что для поддержки новой платформы необходимо создать только новый слой (или набор слоев), а главное приложение можно скомпилировать для новой целевой платформы с минимальными изменениями.
Виртуализация похожа на чрезвычайно обширную среду выполнения, но отличается тем, что набор команд ЦП (и любые необходимые устройства) виртуализируются или эмулируются очень хорошо.