Application virtualization is software technology that encapsulates application software from the underlying operating system on which it is executed. A fully virtualized application is not installed in the traditional sense, although it is still executed as if it were. The application behaves at runtime like it is directly interfacing with the original operating system and all the resources managed by it, but can be isolated or sandboxed to varying degrees.
In this context, the term "virtualization" refers to the artifact being encapsulated (application), which is quite different from its meaning in hardware virtualization, where it refers to the artifact being abstracted (physical hardware).
Modern operating systems such as Microsoft Windows and Linux can include limited application virtualization. For example, Windows 7 provides Windows XP Mode that enables older Windows XP application to run unmodified on Windows 7.
Full application virtualization requires a virtualization layer. Application virtualization layers replace part of the runtime environment normally provided by the operating system. The layer intercepts all disk operations of virtualized applications and transparently redirects them to a virtualized location, often a single file. The application remains unaware that it accesses a virtual resource instead of a physical one. Since the application is now working with one file instead of many files spread throughout the system, it becomes easy to run the application on a different computer and previously incompatible applications can be run side-by-side. Examples of this technology for the Windows platform include AppZero, BoxedApp, Cameyo, Ceedo, AppliDis, Evalaze, InstallFree, 2X Software, Citrix XenApp, Systancia , Novell ZENworks Application Virtualization, Numecent Application Jukebox, Microsoft Application Virtualization, Software Virtualization Solution, Spoon (formerly Xenocode), Symantec Workspace Virtualization and Workspace Streaming, VMware ThinApp, P-apps and Oracle Secure Global Desktop.
Technology categories that fall under application virtualization include:
- Application streaming. Pieces of the application's code, data, and settings are delivered when they're first needed, instead of the entire application being delivered before startup. Running the packaged application may require the installation of a lightweight client application. Packages are usually delivered over a protocol such as HTTP, CIFS or RTSP.
- Remote Desktop Services (also called terminal services, server based computing, and presentation virtualization) is a component of Microsoft Windows that allows a user to access applications and data hosted on a remote computer over a network. Remote Desktop Services sessions run in a single shared server operating system (e.g. Windows Server 2008 R2, Windows Server 2012, etc.) and are accessed using the RDP Remote Desktop Protocol.
- Desktop virtualization is an umbrella term that describes software technologies that improve portability, manageability and compatibility of a personal computer's desktop environment by separating part or all of the desktop environment and associated applications from the physical client device that is used to access it. A common implementation of this approach is to host multiple desktop operating system instances on a server hardware platform running a hypervisor. This is generally referred to as "Virtual Desktop Infrastructure" or "VDI".
Benefits of application virtualization
- Allows applications to run in environments that do not suit the native application:
- May protect the operating system and other applications from poorly written or buggy code and in some cases provide memory protection and IDE style debugging features, for example as in the IBM OLIVER.
- Uses fewer resources than a separate virtual machine.
- Run applications that are not written correctly, for example applications that try to store user data in a read-only system-owned location.
- Run incompatible applications side-by-side, at the same time and with minimal regression testing against one another.
- Reduce system integration and administration costs by maintaining a common software baseline across multiple diverse computers in an organization.
- Implement the security principle of least privilege by removing the requirement for end-users to have Administrator privileges in order to run poorly written applications.
- Simplified operating system migrations.
- Improved security, by isolating applications from the operating system.
- Allows applications to be copied to portable media and then imported to client computers without need of installing them, so called Portable software.
Limitations of application virtualization
- Not all software can be virtualized. Some examples include applications that require a device driver and 16-bit applications that need to run in shared memory space.
- Some types of software such as anti-virus packages and applications that require heavy OS integration, such as Stardock's WindowBlinds or TGTSoft's StyleXP are difficult to virtualize.
- Only file and registry-level compatibility issues between legacy applications and newer operating systems can be addressed by application virtualization. For example, applications that don't manage the heap correctly will not execute on Windows Vista as they still allocate memory in the same way, regardless of whether they are virtualized or not. For this reason, specialist application compatibility fixes (shims) may still be needed, even if the application is virtualized.
- Moreover, in software licensing, application virtualization bears great licensing pitfalls mainly because both the application virtualization software and the virtualized applications must be correctly licensed.
- "Microsoft Application Virtualization Technical Overview". Microsoft.
- Amir Husain. "How to build an Application Virtualization Framework". VDIworks. Retrieved 2008-07-01.
- Coby Gurr (2008-01-28). "Facilitating Microsoft Windows Vista Migration Through Application Virtualization" (PDF). Dell. Retrieved 2008-06-19.
- "Desktop Virtualization Comes of Age" (PDF). Credit Suisse. 2007-11-26. Retrieved 2008-03-03.
- Guo, Philip J. (2011). "CDE: lightweight application virtualization for Linux". Retrieved 2012-11-26.
CDE implements a form of lightweight application virtualization that allows you to easily distribute portable software, to deploy applications to the cloud, to make computational experiments reproducible, and to run software on non-native Linux distros without conflicts.
- Guo, Philip J. (2011-06-01). "CDE: Using System Call Interposition to Automatically Create Portable Software Packages." (pdf). Proceedings of the 2011 USENIX Annual Technical Conference. Retrieved 2012-11-26.
- "Overview Series: Windows Vista Application Compatibility". Microsoft. Retrieved 2008-06-19.
- Domagoj Pernar (October 2009). "Application Virtualization Download repository, and how to make applications portable". V-irtualization.com. Retrieved 2009-10-30.
- Peter Varhol (September 2007). "Application Virtualization Hits Its Stride". Redmondmag.com. Archived from the original on 10 June 2008. Retrieved 2008-06-19.
- Adrian Marinescu (2006-07-14). "Windows Vista Heap Management Enhancements" (PDF). Microsoft. Retrieved 2008-06-19.
- Chris Jackson (2008-05-01). "Can You Shim Applications Virtualized in SoftGrid?". Microsoft. Archived from the original on 2 June 2008. Retrieved 2008-06-24.
- "Licensing pitfalls in application virtualization". OMTCO Operations Management Technology Consulting GmbH. Retrieved 20 May 2013.