Application virtualization is software technology that encapsulates computer
programs 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, which is quite
different from its meaning in hardware virtualization, where it refers to the
artifact being abstracted. Description
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:
Benefits Application virtualization allows
applications to run in environments that do not suit the native application. For
example, Wine allows some Microsoft Windows applications to run on Linux.
CDE allows Linux applications to run on Linux distros in distro-agnostic way.
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, IDE-style debugging features and may
even run applications that are not written correctly, for example
applications that try to store user data in a read-only system-owned location. It
allows incompatible applications to run side-by-side, at the same time and with
minimal regression testing against one another. Isolating applications from the
operating system has security benefits as well, as the exposure of the
application does automatically entail the exposure of the entire OS.
Application virtualization also enables simplified operating system migrations.
Applications can be transferred to removable media or between computers
without the need of installing them, becoming portable software.
Application virtualization uses fewer resources than a separate virtual
machine. Limitations
Not all computer programs can be virtualized. Some examples include
applications that require a device driver and 16-bit applications that need
to run in shared memory space. Anti-virus programs and applications
that require heavy OS integration, such as 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. While application virtualization can
address file and Registry-level compatibility issues between legacy
applications and newer operating systems, 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 may still be needed,
even if the application is virtualized. Related technologies
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 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 and are
accessed using the 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". See also
Workspace virtualization Portable application creators
Comparison of application virtual machines
Shim Virtual application
References