La virtualización de aplicaciones es una tecnología de software que encapsula programas informáticos del sistema operativo subyacente en el que se ejecutan. Una aplicación totalmente virtualizada no se instala en el sentido tradicional, [1] aunque se sigue ejecutando como si así fuera. La aplicación se comporta en tiempo de ejecución como si estuviera interactuando directamente con el sistema operativo original y todos los recursos administrados por él, pero puede aislarse o protegerse en distintos grados.
En este contexto, el término "virtualización" se refiere al artefacto que se encapsula (aplicación), lo cual es bastante diferente de su significado en virtualización de hardware , donde se refiere al artefacto que se abstrae (hardware físico).
La virtualización completa de aplicaciones requiere una capa de virtualización. [2] Las capas de virtualización de aplicaciones reemplazan parte del entorno de ejecución que normalmente proporciona el sistema operativo. La capa intercepta todas las operaciones de disco de las aplicaciones virtualizadas y las redirige de forma transparente a una ubicación virtualizada, a menudo un solo archivo. [3] La aplicación no sabe que accede a un recurso virtual en lugar de uno físico. Dado que la aplicación ahora funciona con un archivo en lugar de con muchos archivos repartidos por el sistema, resulta fácil ejecutar la aplicación en una computadora diferente y las aplicaciones que antes eran incompatibles se pueden ejecutar una al lado de la otra.
La virtualización de aplicaciones permite que las aplicaciones se ejecuten en entornos que no se adaptan a la aplicación nativa. Por ejemplo, Wine permite que algunas aplicaciones de Microsoft Windows se ejecuten en Linux .
La virtualización de aplicaciones reduce los costos de administración e integración del sistema al mantener una base de software común en múltiples computadoras diversas de una organización. Una menor integración protege el sistema operativo y otras aplicaciones de códigos mal escritos o con errores. En algunos casos, proporciona protección de la memoria, funciones de depuración de estilo IDE e incluso puede ejecutar aplicaciones que no están escritas correctamente, por ejemplo aplicaciones que intentan almacenar datos del usuario en una ubicación de solo lectura propiedad del sistema. (Esta característica ayuda en la implementación del principio de privilegio mínimo al eliminar el requisito de que los usuarios finales tengan privilegios administrativos para ejecutar aplicaciones mal escritas). Permite que aplicaciones incompatibles se ejecuten una al lado de la otra, al mismo tiempo [4 ] y con pruebas de regresión mínimas entre sí. [5] Aislar aplicaciones del sistema operativo también tiene beneficios de seguridad, ya que la exposición de la aplicación virtualizada no implica automáticamente la exposición de todo el sistema operativo. [4]
La virtualización de aplicaciones también permite migraciones simplificadas del sistema operativo . [4] Las aplicaciones se pueden transferir a medios extraíbles o entre computadoras sin necesidad de instalarlas, convirtiéndose en software portátil .
La virtualización de aplicaciones utiliza menos recursos que una máquina virtual independiente .
No todos los programas informáticos se pueden virtualizar. Algunos ejemplos incluyen aplicaciones que requieren un controlador de dispositivo (una forma de integración con el sistema operativo) y aplicaciones de 16 bits que deben ejecutarse en un espacio de memoria compartido. [6] Los programas y aplicaciones antivirus que requieren una gran integración con el sistema operativo, como WindowBlinds o StyleXP, son difíciles de virtualizar.
Además, en la concesión de licencias de software, la virtualización de aplicaciones conlleva grandes riesgos, principalmente porque tanto el software de virtualización de aplicaciones como las aplicaciones virtualizadas deben tener la licencia correcta. [7]
Si bien la virtualización de aplicaciones puede solucionar problemas de compatibilidad a nivel de archivos y Registro entre aplicaciones heredadas y sistemas operativos más nuevos, las aplicaciones que no administran el montón correctamente no se ejecutarán en Windows Vista, ya que aún asignan memoria de la misma manera, independientemente de si son virtualizado. [8] Por este motivo, es posible que aún se necesiten correcciones especializadas de compatibilidad de aplicaciones (shims), incluso si la aplicación está virtualizada. [9]
Las discrepancias funcionales dentro del modelo de multicompatibilidad son una limitación adicional, donde los puntos de acceso impulsados por servicios públicos se comparten dentro de una red pública. Estas limitaciones se superan designando un controlador de punto compartido a nivel del sistema. [10]
Las categorías de tecnología que se incluyen en la virtualización de aplicaciones incluyen: