VMWare vs. Virtual PC

Virtual machine software is incredibly useful for developers. Such software lets you run a window on your system, and inside of that window you can run another operating system. This means that you can safely and easily test your software on a wide variety of operating systems and configurations without the expense of building physical test machines or messing around with fragile multiple-boot utilities. With the release this week of Microsoft Virtual PC 2004 and the recent release of VMware Workstation 4, there are two strong contenders in this market to choose from.

Virtual PC 2004 is the first Microsoft-branded version of this application, which Microsoft purchased when they picked up Connectix. Though it appears that the real focus of the purchase for Microsoft is to set up a way to migrate aging Windows NT servers into some Windows 2003 (or Longhorn?) based product, they've opted to keep this consumer version alive, and to drop the price substantially. If you've got an MSDN membership, the price is even more attractive, because you can grab a copy from the subscriber downloads site for free.

VMware Workstation is the established leader in this market, with a fresh tabbed interface and support for a wide variety of operating systems. VMware (the company) also offers a variety of other virtualization products designed to help in data center server consolidation.

One place you'll find a difference between the two is with operating system support. When you first run Virtual PC, it warns you that it is only sipported on Windows 2000 Pro or Windows XP Pro (though it seems to be running fine on my Windows 2000 Advanced Server test box). VMware has no such limitation, with the host running on everything from Windows NT 4.0 to Windows Server 2003 (plus a version that runs on Linux). Virtual PC limits the supported operating systems inside of virtual machines to Windows (all flavors), DOS, and OS/2 (which, after all, was a Microsoft production). However, there's an "other" setting that lets you install pretty much anything you want, so it's not like there's an anti-Linux conspiracy here; it's just not something that Redmond cares to support. VMware's supported guest operating systems include everything Virtual PC lists except for OS/2, plus Linux, FreeBSD, and Netware 5 and 6. Again, there's an "other" setting you can use, though VMware appears to be slightly less forgiving of truly odd operating systems.

Virtual PC has a slight edge when you have a problem and need to call tech support: running a Microsoft OS inside a Microsoft VM on a Microsoft OS means you have a single point of contact for any support issues. There have been reports of Microsoft refusing to help with support issues in software running inside of VMware unless the customer can reproduce the problem on physical hardware. But VMware offers its own excellent online support tools, which mitigates this somewhat.

Virtual PC offers pretty reasonable hardware support. You can connect up to four real network cards from the host box to the virtual machine, and use things like the sound card, drives, and ports. Virtual PC doesn't share very well with the host OS, so you'll spend some time capturing and releasing resources if you're moving back and forth. There's limited support for USB keyboards and mice, but not for other USB devices. Custom video drivers and SCSI devices are also not supported. VMware has a definite edge in hardware support. It includes support for SCSI devices and USB (though not for custom video drivers). VMware's networking is superbly flexible; you can build up complex virtual networks involving multiple virtual machines, switches, DHCP servers, and NAT settings. This is an area where VMware has a strong advantage.

Virtual PC installs its network drivers directly in the driver stack for your physical network card, while VMware installs a completely separate stack of network software in the host operating system. The Virtual PC approach makes me a bit nervous, though I've never actually had a problem with it.

As far as performance goes, VMware feels just a tiny bit faster to me, though it's so close that the difference is immaterial. Certainly either one is slower than a physical machine, but they're both plenty fast enough for testing. The key to successful VM use, in my experience, is RAM. Load as much RAM as you can into the box where you're running either of these packages (a gigabyte or more, if your motherboard supports it) so that you don't have to skimp on the amount allocated to virtual machines.

Finally, there's the matter of price. Connectix used to sell Virtual PC for $229; Microsoft has slashed that to $129 (or free, if you've got an MSDN membership). VMware Workstation is $299. For many developers, that difference will be a deciding factor.

On the other hand, VMware is much more powerful in some areas, notably networking, and there's no equivalent in the Microsoft world (yet) for the VMware server virtualization products. Finally, note that you can download trial versions of both of these packages. If you're dealing with something unusual (beta operating systems, odd host hardware, low-level API usage), you should probably try both and see which of them offers better support for your intended use. That, and not price, should be your real deciding factor.

About the Author

Mike Gunderloy has been developing software for a quarter-century now, and writing about it for nearly as long. He walked away from a .NET development career in 2006 and has been a happy Rails user ever since. Mike blogs at A Fresh Cup.