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
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
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
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.
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.