Виртуализация приложений — это программная технология, которая инкапсулирует компьютерные программы из базовой операционной системы , на которой они выполняются. Полностью виртуализированное приложение не устанавливается в традиционном смысле, [1] хотя оно все равно выполняется так, как если бы оно было установлено. Приложение ведет себя во время выполнения так, как будто оно напрямую взаимодействует с исходной операционной системой и всеми ресурсами, которыми она управляет, но может быть изолировано или изолировано в разной степени.
В этом контексте термин «виртуализация» относится к инкапсулируемому артефакту (приложению), что существенно отличается от его значения в аппаратной виртуализации , где он относится к абстрагированию артефакта (физическому оборудованию).
Полная виртуализация приложений требует уровня виртуализации. [2] Уровни виртуализации приложений заменяют часть среды выполнения, обычно предоставляемой операционной системой. Уровень перехватывает все дисковые операции виртуализированных приложений и прозрачно перенаправляет их в виртуализированное местоположение, часто в один файл. [3] Приложение не знает, что оно обращается к виртуальному ресурсу, а не к физическому. Поскольку приложение теперь работает с одним файлом, а не со многими файлами, разбросанными по всей системе, становится легко запустить приложение на другом компьютере, и ранее несовместимые приложения могут работать бок о бок.
Виртуализация приложений позволяет приложениям работать в средах, которые не подходят для собственного приложения. Например, Wine позволяет некоторым приложениям Microsoft Windows работать на Linux .
Виртуализация приложений снижает затраты на системную интеграцию и администрирование, поддерживая общую базовую линию программного обеспечения на нескольких различных компьютерах в организации. Меньшая интеграция защищает операционную систему и другие приложения от плохо написанного или ошибочного кода. В некоторых случаях она обеспечивает защиту памяти, функции отладки в стиле IDE и может даже запускать приложения, которые написаны неправильно, например, приложения, которые пытаются хранить пользовательские данные в системном расположении, доступном только для чтения. (Эта функция помогает в реализации принципа наименьших привилегий , устраняя требование к конечным пользователям иметь административные привилегии для запуска плохо написанных приложений.) Она позволяет несовместимым приложениям работать бок о бок, в одно и то же время [4] и с минимальным регрессионным тестированием друг против друга. [5] Изоляция приложений от операционной системы также имеет преимущества в плане безопасности, поскольку раскрытие виртуализированного приложения не влечет за собой автоматически раскрытие всей ОС. [4]
Виртуализация приложений также позволяет упростить миграцию операционной системы . [4] Приложения можно переносить на съемные носители или между компьютерами без необходимости их установки, что делает их переносимым программным обеспечением .
Виртуализация приложений использует меньше ресурсов, чем отдельная виртуальная машина .
Не все компьютерные программы можно виртуализировать. Некоторые примеры включают приложения, которым требуется драйвер устройства (форма интеграции с ОС) и 16-битные приложения, которые должны работать в общем пространстве памяти. [6] Антивирусные программы и приложения, требующие тяжелой интеграции с ОС, такие как WindowBlinds или StyleXP, трудно виртуализировать.
Более того, в лицензировании программного обеспечения виртуализация приложений несет в себе большие ловушки лицензирования, главным образом потому, что и программное обеспечение виртуализации приложений, и виртуализированные приложения должны быть правильно лицензированы. [7]
Хотя виртуализация приложений может решать проблемы совместимости на уровне файлов и реестра между устаревшими приложениями и новыми операционными системами, приложения, которые не управляют кучей правильно , не будут выполняться в Windows Vista, поскольку они по-прежнему выделяют память тем же способом, независимо от того, виртуализированы они или нет. [8] По этой причине специальные исправления совместимости приложений (shims) могут по-прежнему быть необходимы, даже если приложение виртуализировано. [9]
Функциональные расхождения в модели мультисовместимости являются дополнительным ограничением, когда точки доступа, управляемые утилитами, совместно используются в публичной сети. Эти ограничения преодолеваются путем назначения драйвера точки общего доступа на системном уровне. [10]
Категории технологий, подпадающие под виртуализацию приложений, включают: