La virtualización de aplicaciones es una tecnología de software que encapsula los programas informáticos del sistema operativo subyacente en el que se ejecutan. Una aplicación completamente virtualizada no se instala en el sentido tradicional [1] , aunque se ejecuta como si lo estuviera. La aplicación se comporta en tiempo de ejecución como si estuviera interactuando directamente con el sistema operativo original y todos los recursos que este administra, pero puede aislarse o aislarse 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 la 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 se da cuenta de que accede a un recurso virtual en lugar de a uno físico. Dado que la aplicación ahora trabaja con un solo archivo en lugar de con muchos archivos distribuidos por todo el sistema, resulta fácil ejecutar la aplicación en una computadora diferente y las aplicaciones que antes eran incompatibles se pueden ejecutar en paralelo.
La virtualización de aplicaciones permite que las aplicaciones se ejecuten en entornos que no son adecuados para 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 de sistemas al mantener una base de software común en varios equipos de una organización. Una menor integración protege el sistema operativo y otras aplicaciones de código mal escrito o con errores. En algunos casos, proporciona protección de 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 de usuario en una ubicación de solo lectura propiedad del sistema. (Esta función ayuda a 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 las aplicaciones incompatibles se ejecuten en paralelo, al mismo tiempo [4] y con pruebas de regresión mínimas entre sí. [5] Aislar las 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 de sistemas operativos . [4] Las aplicaciones pueden transferirse 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 necesitan ejecutarse en un espacio de memoria compartida. [6] Los programas antivirus y las aplicaciones que requieren una gran integración con el sistema operativo, como WindowBlinds o StyleXP, son difíciles de virtualizar.
Además, en materia de licencias de software, la virtualización de aplicaciones conlleva grandes dificultades, 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 archivo y de 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 están virtualizadas. [8] Por este motivo, es posible que aún se necesiten correcciones de compatibilidad de aplicaciones especializadas (shims), incluso si la aplicación está virtualizada. [9]
Las discrepancias funcionales dentro del modelo de multicompatibilidad son una limitación adicional, cuando los puntos de acceso controlados por servicios públicos se comparten dentro de una red pública. Estas limitaciones se superan mediante la designación de un controlador de punto compartido a nivel de sistema. [10]
Las categorías de tecnología que se incluyen dentro de la virtualización de aplicaciones incluyen: