man wearing vr goggles

Portability of Software is the ability to run the same software on a number of different systems.  One of the goals of many software developers are to be able to write the application once, and run it on as many platforms as possible.  A similar goal of Systems administrators is to ensure you can run software with as few conflicts as possible

Typically when one thinks of portability of software in the context of virtualization, two things come to mind, Published Applications and Application Virtualization.  Published applications are really a form of virtualization, even though they vary in the actual implementation.

Published Applications

In a published application scenario, you would run a server with something like Microsoft Remote App on Server 2008 R2, or Citrix Xenapp which is an Add-on to Microsoft Terminal services, or if you are running with a Linux/Unix infrastructure you would use Remote X or an NX Server.  In my examples, I will assume you are running Citrix Xenapp.

When you publish an application, you are allowing a remote user to run an application on the server.  To the user, the application appears to be running on their local machine.  What is actually happening, is the application is running on the server and sending a picture of what should be on the screen back to the users workstation.  The user interacts with the Citrix client software, which in turn sends their keyboard and mouse input back to the server.

Operating in this manner allows a user to have access to more powerful systems than they would otherwise have access to, it also gets them around any application incompatibilities they may experience, because nothing except the citrix client software is installed on their local machine.

In the case of Citrix, you can run the same application on any system Citrix has released a client for; which is pretty much everything, including: Dos, Linux, Windows, iOS, Android, Symbian…. you get the picture.

In all cases, you have a client device running an application on a remote server.  As you may have realized, this has many advantages since it means you can move from desk to desk, or building to building and as long as you have network connectivity you can access your applications.

Virtualized Applications

Application virtualization is very similar.  For this example assume you are running windows 7.  You download an application which requires Internet explorer 6, which is not compatible with windows 7.  Using another computer and VMWare thinapp you can create a package for Internet explorer 6, then run it on your windows 7 machine.

When you run Internet Explorer 6 as a virtual app on windows, the application itself does not interact with the operating system at all.  In fact, thinapp creates a completely separate environment with only the resources needed for running Internet Explorer.  Internet  Explorer Interacts with the Thinapp Software, the Thinapp software interacts with the operating system.

Thinapp Draws the output of Internet Explorer on your machine and allows you to interact with it.

As you interact with the copy of Internet explorer 6, you are actually interacting with the thinapp software, which in turn is sending the commands to the virtual application.  The virtual application is only able to interact with the thinapp software, and the thin app software accesses other resources on behalf of the virtual application, such as a network connection, or the CPU and Memory the application requires.

When should you choose What?

Both published applications and virtualized applications have their benefits.  The main difference between the two is where the application runs.  With a Citrix Server the application runs on the server.  With Thinapp, the application runs on the desktop.  The biggest limitation of Thinapp is it requires more processing at the client, the main limitation of Citrix is it requires a network connection of varying speed depending on what you are trying to do.  In both instances you may have problems with Video or 3d applications.

If you need your application to be available when you have no network connection, you may want to consider application virtualization.  If you want to be able to run on clients with very little processing power such as a cellular phone, you may want to consider Citrix.