VMWare, VirtualBox or Virtual PC. What are the advantages and or disadvantages of each for a programmer? What is the best for Linux Guest OS, which is the best for Windows Guest OS's?
Personaly I like VMWare, it seems to have a better all around support for both guests and hosts, but I've been using it for a LONG time. VirtualPC seems to lack alot, although in microsoft's defense(wow I'm coming to microsoft's defense, this feels wierd....) VMWare has been working on the VM scene for a bit longer.
VMWare runs (hosts) on lots of different platforms. It can be expensive to get the full tool, but various iterations are pretty inexpensive / free, depending on how dirty you want to let your hands get.
Virtual PC hosts on windows-only, and it's support for linux can be spotty (hard to configure some distributions' Xwindows system to run, as it supports only 16-bit for display- this has affected Ubuntu for me, but others may have an answer there by now).
I haven't used virtualbox yet, but as it's open source, I'd start my evaluation with it- if it met my needs in terms of host platform and guest OS, I'd finish there, as it's free, and free is a great thing.
VMWare is the big dog here, Windows Server 2008 with hypervisor stuff should be very good too. If you work in a Windows enviroment and don't need a ton of options Virtual Server 2005 or PC 2007 is a good free option.
I've used VirtualBox for a long time. 2.0.2 release a few days ago introduced VM extensions to take advantage of AMD/Intel virtualization features.
VMWare on Ubuntu and SUSE had "clock hyper-warp" when running a guest due to the clock interrupts vmware used.
VirtualBox is free, so is VMWare player and server. Virtual PC is only for Windows hosts.
In my personal tests about 6 months ago, I was able to install a fresh guest of WinXP in VirtualBox in about 20 minutes whereas it took VMWare Server about 40 minutes. Google it and you'll find countless comparisons on speed.
Features to look for: 1) Raw disk support (available for VB and VMWare) 2) Chipset virtualization (VB 2.0 and VMWare both support it) 3) Snapshots (ditto) 4) Import/export features 5) USB2.0 support 6) DVD/CD support (ability to mount ISOs as drive, etc)
Another VM product is Parallels which some folks at my job use on Macs. Supposedly works on Linux and Windows, too, but I've never gotten it to work on Linux.
Yet another -- QEMU, which I believe is VirtualBox core, or at least WAS?
I have bought VMware Fusion and Parallels for my mac and personally only use VMware Fusion exclusively now. The upgrade from version 1 to version 2 is even free for me (maybe all existing users). that the vm is transferable to VMware products on other platforms is definitely a plus. There are other products from VMware that are free of charge like the player and VMware server.
I would go with VMware personally. VirtualPC has no real support for a Linux guest. In most cases it will run Linux, but it doesn't provide any VM additions for a Linux guest. I've found VMware to do a solid job of running both Windows and Linux as guests. I personally use VMware 6 on a Linux host to run Windows guests, and it is working great.
I haven't used VirtualBox, but since you have to pay to get any of the good features, I figure might as well go with the product that is more mature and is easier to purchase. (I don't want to half to deal with a Sun sales rep to buy a single license.)
I second the preference for VMWare Workstation. Their free player and free server versions are good, and probably the best in the free space, but if you are looking for BEST go with Workstation.
The new version of Workstation has a number of features targeted directly for the developer.
List of new features (it is in beta).
- Enhanced advanced VM Record and Replay
- Seamless integration of guest and host applications with Unity
- Support for Smart Cards & Smart Card Readers
- Link state propagation networking
- Enhanced ACE authoring capabilities
- Easy Install Option support for Linux
- Improved 3D graphics Support
The record and replay is just an amazing tool for developers, especially if you can get your testers on board using it too. Imagine being able to reproduce a program state an infinite number of times. Here are some video overviews of it:
So in I think VMWare is the best overall, for Linux and Windows. Don't run it on Vista though. Run it under a server OS or Linux for best results. That is true of all VM tools I imagine.
VMware is the leader of the pack here. And with VMware making ESXi available for free it definitely gets my vote.
With regards to Guest OS, I generally use CentOS as a Linux guest OS and XP as a Windows guest OS. A word of caution, avoid using Vista as a Windows guest OS. I have had terrible experience trying to run Vista as guest OS in VMware Server.
Virtualbox works fine for me. VMWare Player used to crash badly (maybe it was corrupted image file?) taking whole system with it.
Also in VirtualBox sound works better. Seamless integration is also very nice. All for free.
Our medium sized team uses VMWare Workstation heavily for Windows OS testing. One caveat is that you need enough memory, or your machine will crawl. Love the snapshot feature.
It can be a real help for our development team since some of our QA team is remote. They can send VM images, or video recordings for those times when we can't make heads or tails of their reproduction steps. (Although size of the files can be an issue.)
I used to use VMware Workstation. It was worth the money over Microsoft's Virtual PC (which is free) for its multiple snapshot feature, which saves time and disk space - and is also nicely integrated into the UI.
Now I'm running Server 2008 on my dev machine I use Hyper-V. It feels faster than VMware Workstation, is free, and has an identical multiple snapshot feature. It also runs VMs in the background, so you don't need to be logged in for them to be active. VMware Workstation has a 'background' feature now, too, but I believe you need to be logged in for it to work - it simply removes taskbar items.
Hyper-V seems to run Linux at full speed due to it being hypervisor-based - you don't need to install special drivers to get I/O up to speed. It doesn't do mouse cursor integration though - yet. I hear SuSE's Linux will be supported in future.
Which is the best VM program for a programmer?
In what sense? If you mean for a desktop tool to load your own test/debug environments up in, then you might as well use VirtualBox as it's free, self-contained and does the job. If you want an "enterprise" tool that allows for simple deployment of several different servers, then VMWare now has a growing set of ready-made "appliances" available. If you're looking to program with virtual machines rather than just on them - i.e. you're writing an application that utilises a cloud of computing power of some kind - then forget all that cissy stuff and use Xen with something like Enomalism, Puppet or Eucalyptus.
I usually use VMware, but I've been playing around with VirtualBox recently; they're both fine solutions.
We're in the middle of transitioning to VMware from Virtual PC. My biggest grievance with VPC is the video card emulation. Because the virtual video is a S3 Trio you can't run a resolution higher than 1600x1200, which doesn't fill my 24" screen. There's also no support for spanning multiple monitor. But I think that's the case with VMware too?
I've worked around the resolution limitation by using Virtal Server instead of Virtual PC and then RDPing to the VM to get fullscreen.
I do like the VPC and Virtual Server is free though and I like differencing disks.
VirtualBox at the moment misses branch snapshots, a feature that VMWare Workstation has and it's very important. I noticed also that with VirtualBox it's a disaster to open on Linux a virtual machine create on Windows, and viceversa. At the moment, if you can afford the license, go for VMWare: if not, go for VirtualBox and wait for new features :) (branch snapshots should be in development for a future version).
KVM (Kernel Based Virtual Machine)...
This question is sorely outdated so, let me emphasize. As of the Linux 2.6.0 Kernel hypervisor support is included in the kernel itself. This provides a lot more opportunities for increased performance as well as optimization.
This supports:
- all Linux based OSes
- all Windows based OSes
- and even Mac with a little legalese-breaking hackery
For more information follow this link.
VPC2007 on WinVista works fine for me. I have DOS 6.22 as the guest OS on it, running a legacy version app written with INFORMIX-SQL 2.10.06E. The installed VMadditions.iso provides me everything I need, including printing to USB and Parallel printers, sharing folders on WinVista host OS, NAT, etc. (see video-demo of app at: www.frankcomputer.com)