When most people think of virtualization, they think of the virtualized PC or server. When used as an application, the virtualization platform sits on the host (physical computer) operating system and runs like a program or service. It then allows creation of a virtual guest (virtualized machine).

Now, we have the hypervisors. The hypervisors are microkernels, which allow a computer to boot but do not contain an operating system. These hypervisors require that an interface be added to administer and interact with virtual machines. The hypervisor adds a layer of security in that the host machine does not necessarily have an operating system to patch and maintain. Examples of hypervisors are Microsoft Hyper-V Server and VMWare ESX. There are of course exceptions to the rule such as Microsoft Hyper-V, which runs within an operating system on the host computer, but still leverages a hypervisor.

Even newer in concept is application virtualization. Application virtualization allows an application to behave as if it were installed locally meaning the user would have no knowledge of what is happening in the background. However, the application takes significantly less resources to run (processor cycles, memory consumed, and disk transfers needed). The presence of the application on the computer is typically also noticeably different than if the application were locally installed. For example, the registry keys would not be the same, and the program files would either be in a different location on the local computer or simply absent.

Why virtualize applications?

The reduced resource footprint is one reason to virtualize programs. Another reason, is that you can run two different versions of the same program on the same computer (i.e., Excel 2007 and Excel 95). This scenario might be preferable when an old program, which you still depend on, is running in the office, but cannot be migrated — or there is insufficient money to pay someone to update it.

Another reason to virtualize applications is control. Applications may be easily updated or upgraded in the background and the end user need not know anything about it. Service to the application can continue without interrupting the users work; the next time that they connect and log in, they will load the updated program with no downtime.

There are several different flavours of application virtualization: Citrix XenApp, Install Free, Microsoft App-V, and Microsoft MED-V to name a few. I will cover Microsoft App-V and Microsoft MED-V.

Application Virtualization (App-V) and Microsoft Enterprise Desktop Virtualization (MED-V)

In Microsoft App-V programs are sequenced (prepared for virtualization) on a model system and then distributed. What you need to know about this style of application virtualization is that it will run for applications virtualized on Windows XP, Windows Vista, Windows Server 2003, Windows Server 2008, and it will work in future on Windows 7. These include the Terminal Server versions of the server OSs.

Microsoft Application Virtualization distributes sequenced applications, either using an App-V infrastructure or Microsoft System Center Configuration Manager 2007 R2.

For an application to be sequenced on one of the previously mentioned operating systems, it has to be able to run on it. If you have an application which will not run on Server 2003, Server 2003 Terminal Services, Server 2008, Server 2008 Terminal Services, Windows XP, Windows Vista, or Windows 7, App-V will not work for you.

In this case, you would use Microsoft Enterprise Desktop Virtualization (MED-V). What MED-V does differently is that it combines computer virtualization with application virtualization for all of the benefits of application virtualization.

For example, if your application only runs on Windows Server 2000, you cannot sequence that application to have it run with App-V. Windows 2000 can be virtualized itself with Virtual PC, Virtual Server, Hyper-V, or VMware, so MED-V sandboxes the Windows 2000 application in a virtual machine using a subset of Virtual PC and virtualizes the application in this way.

Since Virtual PC is just an application or service running on top of an operating system, there is no problem launching the virtual instance of this application on a formerly incompatible operating system!

Do you use application virtualization in your environment? How has it made a difference in your IT environment? What questions do you have for specific scenarios with application virtualization?