Two Types of Application Virtualization
While the previous explanations of virtualization provided a very basic rundown of what defines each type, our categorizing is of necessity roughly based on what reality currently offers. When it comes down to choosing a certain piece of software for a task, we often see big differences promoting the company's definitions of these fields. This is also true for application virtualization, and because its definition is so vague we see these different interpretations surfacing. One technology often described as application virtualization is something many PC users encounter on a daily basis, and it is best understood by naming its most popular examples: the Common Language Runtime environment of the .NET Framework and the Java Virtual Machine.
Though detailing what both these runtime environments do might be an interesting look at this interpretation of application virtualization, they are not the focus of this article. What's important to note is that they have a different take at solving some of the same problems. As any experienced programmer might tell you, an application coded natively for a certain OS can be quite sensitive in its needs for memory management and the specific capabilities of the CPU it runs on. As such, badly programmed applications can easily cause trouble, resulting in huge performance losses or even lockups. Our runtime environments provide a layer between the OS and the application, essentially isolating the application from vital resources of the system. They manage the resources while also providing a portable platform. The software requires the runtime environment to be present, but as long as that requirement is met the software can be run on any system.
Our Primary Focus
The main type of application virtualization we want to shed some light on, however, does not employ quite the same tactic of isolation. Thanks to the different companies developing it, we also get some nice extras, especially in the field of software deployment and distribution.
Put simply, application virtualization provides the possibility to fool an application into believing that some or all of the system resources it accesses and tampers with (on Windows, the most notable examples are the file system and the registry) are actually the real deal, while they are in fact simulated by the application virtualization management software. There are different degrees that the solutions provide when it comes to simulating resources, but the general goal is usually the same: Turning any user level running application, no matter its complexity, into a single, instantly executable package. This package should be completely cut off from the OS it is running on, in that it still requires the same architecture but no longer leaves any footprint on the host machine. This would mean that, whether or not the full, unvirtualized application was previously installed on a different host machine, as long as the manager software is present, the entire application is able to run from the package as if it were freshly installed.
This is achieved by catching every system resource request the application does (such as saving a file or saving something in the system registry) and redirecting it to a simulated version provided by the manager software. While this does allow isolating the app from the system, there are some steps that need to be taken first. The technology actually captures the entirety of the software into a single package, and the only way to do this is by monitoring how the application installation process. The management software captures the changes made to the system during the installation and builds the virtualization layer accordingly, making sure the application can remain blissfully unaware of its isolated state. This allows the application to run from any location, which is where the notion of streaming becomes especially interesting.
In the above image, SVS is getting ready to capture the installation of a program. It will record every single change made by the installer, which will form the basis of the application sandbox.
11 Comments
View All Comments
Genx87 - Monday, February 25, 2008 - link
About 18 months ago I was introduced to VMWares virtual server. Right now I am in the beginning phases of planning for a Hyper-V envrionment which should consolidate nearly all of our servers onto a few boxes. Easier to manage, easier to backup, easier to migrate, and easier to recover from a disaster.Software virtualization looks like an awesome technology for the IT admins around the world. Being able to spit out a package to a client and roll it back if there is an issue with the latest patch while preserving the OS is a godsend.
I appluad Anandtech for taking a look at these technologies. Virtualization is the way of the future imo.
Olaf van der Spek - Monday, February 25, 2008 - link
Doesn't this basically show that installing applications and keeping them up-to-date is too hard on Windows?Sounds like proper package management instead of virtualization would go a long way to fixing this.
lopri - Monday, February 25, 2008 - link
but intro only.. :PJokes aside, I thought there would be a lot more pages in this article, until I turned to the last page. Great job, wetting others' appetite! Also a joke. Grr..
Anyway, great article and lots of information. Thanks.
ninjit - Monday, February 25, 2008 - link
Reading the article, I kept thinking of Valve's Steam game/content delivery system.If you've ever looked at at the files with the Steam folder, they look nothing like the files that would normally be installed if you had bought the game traditionally on CD/DVD (or direct download from the publisher), yet I don't believe developer's have to change much (if anything at all) in order to have their game delivered through steam.
It appears a game's installed files are placed within virtual disk-files that Steam then manages.
I'm not sure, but I think steam also virtualizes many user settings/ registry entries a game may require - I've been able to move my steam folder about willy-nilly (e.g. from my main drive to a new faster secondary one) and steam (+ my games) still work fine, the only thing that gets broken are shortcuts.
GTVic - Monday, February 25, 2008 - link
Nice article. I believe AMD and Intel are touting virtualization support in their newest CPUs/chipsets particularly on the server side.Is this "hardware" virtualization another type of virtualization. Some info on that would be a nice addition.
Lizz - Monday, February 25, 2008 - link
That is in fact a different kind of virtualization, as explained on page 2 of the article.A more in-depth article on hardware virtualization will be posted very soon, so if you're interested in this subject, I'd suggest waiting on that. Johan will be putting it up later today, I believe. :)
smitty3268 - Monday, February 25, 2008 - link
There's an interesting Linux project called Klik2 in development that aims to provide application virtualization.Less as an enterprise solution and more as an easy way of demoing apps across multiple linux distros, I think.
Doormat - Monday, February 25, 2008 - link
"Using MAV in a streaming environment prevents any of the applications from actually being installed on the client computer (apart from the user's local settings). This means that all applications need to stream to the system over the network every time they are requested, and nothing is actually saved on the client. However, MAV does provide the option to run virtualized apps locally without the use of streaming, should the need arise."Most situations would run the streamed apps over the network the first time, and run them locally from then on. I know thats how our Softgrid is implemented at work. The plus is that Softgrid checks for upgrades whenever the app is started.
Lizz - Monday, February 25, 2008 - link
I was under the impression that only the user's local settings and profiles were saved, to minimize the amount of data saved locally on the client computer. I'll have another look at this in a bit, thanks for pointing it out!anandtech02148 - Monday, February 25, 2008 - link
Overpaid and always whinning, sure its only a few hundred machines to installed, but hey.. overtime is even better pays right?Interesting, will google's cloud computing replace this virtualization someday?