# Application virtualization

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/Application_virtualization
> Markdown URL: https://mediated.wiki/source/Application_virtualization.md
> Source: https://en.wikipedia.org/wiki/Application_virtualization
> Source revision: 1341514724
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

{{Short description|Method to encapsulate computer programs}}
{{cleanup weighted|date=February 2019}}
'''Application virtualization''' is a software technology that encapsulates [computer program](/source/computer_program)s from the underlying [operating system](/source/operating_system) on which they are executed. A fully [virtualized](/source/virtualized) application is not installed in the traditional sense,<ref name="AppVTechnicalOverview">{{Cite web |url=http://www.microsoft.com/systemcenter/appv/techoverview.mspx |title=Microsoft Application Virtualization Technical Overview |website=microsoft.com |publisher=[Microsoft](/source/Microsoft) |access-date=1 July 2017}}</ref> 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](/source/Sandbox_(computer_security)) 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](/source/hardware_virtualization), where it refers to the artifact being abstracted (physical hardware).

==Description==
thumb|right|alt=Diagram of application virtualization|Illustration of an application running in a native environment and running in an application virtualization environment
Full application virtualization requires a virtualization layer.<ref name="Husain">{{Cite web |url=http://vdiworks.com/wp/?p=15 |title=How to build an Application Virtualization Framework |last=Husain |first=Amir |website=vdiworks.com |publisher=[VDIworks](/source/VDIworks) |access-date=1 July 2008}}</ref> Application virtualization layers replace part of the [runtime environment](/source/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.<ref name="Gurr">{{Cite web |last=Gurr |first=Coby |date=28 July 2008 |title=Facilitating Microsoft Windows Vista Migration Through Application Virtualization |url=http://www.dell.com/downloads/global/power/ps1q08-20080154-LANDesk.pdf |archive-url=https://web.archive.org/web/20090423083645/http://www.dell.com/downloads/global/power/ps1q08-20080154-LANDesk.pdf |archive-date=2009-04-23 |website=dell.com |publisher=[Dell](/source/Dell)}}</ref>  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.

==Benefits==
Application virtualization allows applications to run in environments that do not suit the native application. For example, [Wine](/source/Wine_(software)) allows some [Microsoft Windows](/source/Microsoft_Windows) applications to run on [Linux](/source/Linux). 

Application virtualization reduces system integration and administration costs by maintaining a common software baseline across multiple diverse computers in an organization. Lesser integration protects the operating system and other applications from poorly-written or buggy code. In some cases, it provides memory protection and [IDE-style](/source/Integrated_development_environment) [debugging](/source/debugging) features, and may even run applications that are not written correctly, such as applications that try to store user data in a read-only system-owned location. (This feature assists in the implementation of the [principle of least privilege](/source/principle_of_least_privilege) by removing the requirement for end-users to have administrative privileges in order to run poorly written applications.) It allows incompatible applications to run side-by-side, at the same time<ref name="CSFB" /> and with minimal regression testing against one another.<ref name="VistaAppCompat">{{Cite web |url=https://technet.microsoft.com/en-us/library/cc709623(v=ws.10).aspx |title=Overview Series: Windows Vista Application Compatibility |website=[TechNet](/source/Microsoft_TechNet) |date=25 July 2008 |publisher=[Microsoft](/source/Microsoft) |access-date=1 July 2017}}</ref> Isolating applications from the operating system has security benefits as well, as the exposure of the virtualized application does not automatically entail the exposure of the entire OS.<ref name="CSFB" />

Application virtualization also enables simplified [operating system](/source/operating_system) migrations.<ref name="CSFB">{{Cite web|url=http://www.dabcc.com/documents/DesktopVirtualization_11_26_07.pdf |title=Desktop Virtualization Comes of Age |last1=Winslow |first1=Philip |last2=Semple |first2=Robert |date=26 November 2007 |publisher=[Credit Suisse](/source/Credit_Suisse) |archive-url=https://web.archive.org/web/20090220052510/http://www.dabcc.com/documents/DesktopVirtualization_11_26_07.pdf |archive-date=20 February 2009 |access-date=3 March 2008 |last3=Maynard |first3=Jason |last4=Simson |first4=Dennis |last5=McGrath |first5=Bryan |url-status=dead }}</ref> Applications can be transferred to [removable media](/source/removable_media) or between computers without the need of installing them, becoming [portable software](/source/portable_software).

Application virtualization uses fewer resources than a separate [virtual machine](/source/virtual_machine).

==Limitations==
Not all computer programs can be virtualized.  Some examples include applications that require a [device driver](/source/device_driver) (a form of integration with the OS) and [16-bit](/source/16-bit) applications that need to run in shared memory space.<ref>{{Cite web |url=https://redmondmag.com/articles/2007/09/01/application-virtualization-hits-its-stride.aspx |title=Application Virtualization Hits Its Stride |last=Varhol |first=Peter |date=1 September 2007 |website=Redmond Magazine |publisher=1105 Media |archive-url=https://web.archive.org/web/20080610195449/http://redmondmag.com/features/article.asp?editorialsid=1776 |archive-date=10 June 2008 |url-status=live}}</ref> [Anti-virus program](/source/Anti-virus_program)s and applications that require heavy OS integration, such as [WindowBlinds](/source/WindowBlinds) or StyleXP are difficult to virtualize.

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.<ref>{{Cite web |url=https://omtco.eu/references/sam/top-200-sam-terms-a-glossary-of-software-asset-management-terms/ |title=Top 200 SAM Terms – A Glossary Of Software Asset Management Terms |last=Sommer |first=Tim |date=June 2012 |website=omtco.eu |publisher=OMTCO |access-date=20 May 2013}}</ref>

While application virtualization can address file and [Registry](/source/Windows_Registry)-level compatibility issues between legacy applications and newer operating systems, applications that do not manage the [heap](/source/Dynamic_memory_allocation) correctly will not execute on [Windows Vista](/source/Windows_Vista), as they still allocate memory in the same way, regardless of whether they are virtualized.<ref>{{Cite web |url=https://www.blackhat.com/presentations/bh-usa-06/BH-US-06-Marinescu.pdf |title=Windows Vista Heap Management Enhancements |last=Marinescu |first=Adrian |date=3 August 2006 |website=blackhat.com |publisher=[Microsoft](/source/Microsoft)}}</ref> For this reason, specialist application compatibility fixes (shims) may still be needed, even if the application is virtualized.<ref>{{Cite web |url=https://blogs.msdn.microsoft.com/cjacks/2008/04/30/can-you-shim-applications-virtualized-in-softgrid/ |title=Can You Shim Applications Virtualized in SoftGrid? |last=Jackson |first=Chris |date=30 April 2008 |publisher=[Microsoft](/source/Microsoft)}}</ref>

Functional discrepancies within the multicompatibility model are an additional limitation, where utility-driven access points are shared within a public network. These limitations are overcome by designating a system-level share point driver.<ref>{{cite book |last1=Enzler |first1=R |title=Field Programmable Logic and Application |chapter=Virtualizing Hardware with Multi-context Reconfigurable Arrays |series=Lecture Notes in Computer Science |date=2003|volume=2778 |pages=151–160 |doi=10.1007/978-3-540-45234-8_16 |isbn=978-3-540-40822-2 }}</ref>

==Related technologies==
Technology categories that fall under application virtualization include:

* [Application streaming](/source/Application_streaming).  Pieces of the application's code, data, and settings are delivered when they are 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](/source/CIFS) or [RTSP](/source/RTSP).<ref name="CSFB" />{{Citation needed|date=January 2013}}
* [Remote Desktop Services](/source/Remote_Desktop_Services) (formerly called Terminal Services) is a server-based computing/presentation virtualization 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](/source/Windows_Server_2008_R2) and later) and are accessed using the [Remote Desktop Protocol](/source/Remote_Desktop_Protocol).
* [Desktop virtualization](/source/Desktop_virtualization) software technologies 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" (VDI).

== See also ==
* [Application checkpointing](/source/Application_checkpointing)
* [Emulator](/source/Emulator)
* [OS-level virtualization](/source/OS-level_virtualization) ("containerization")
* [Portable application creators](/source/Portable_application_creators)
* [Shim (computing)](/source/Shim_(computing))
* [Virtual application](/source/Virtual_application)
* [Workspace virtualization](/source/Workspace_virtualization)
* [Comparison of application virtualization software](/source/Comparison_of_application_virtualization_software)

==References==
{{Reflist|30em}}

{{Virtualization software}}

Category:Virtualization
Category:Linux emulation software
Category:Unix emulation software

---
Adapted from the Wikipedia article [Application virtualization](https://en.wikipedia.org/wiki/Application_virtualization) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/Application_virtualization?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
