t's time again to open up your developer's toolbox and make room for the new must-have tool, virtual machines. As a software consultant, I find myself traveling from customer to customer and constantly working in new development environments. As interesting as that is, a new environment means installing and configuring new tools. Inevitably, a tool install or uninstall fails, I remove a piece of software that I end up needing again later, different versions of tools conflict, or I just plain screw things up. Since my development laptop is my only laptop, wiping out and reinstalling the drive is not a fun task.
Enter virtual machines. Virtualization technology has come a long way in the past few years, and hardware is now fast enough to make a virtual machine feasible for interactive development. Virtualization software, such as Microsoft Virtual PC or VMWare Workstation, allows you to run another complete operating systema virtual machine (VM)in your current operating system. Although virtual machines have been gaining popularity on the server side recently, their growth on the client side has been limitedespecially in a development environment.
This article presents some interesting uses of virtual machines, gives you some recommendations for getting the most from VM development, and shows why every developer should have a VM on his or her utility belt.
|Figure 1. Eclipse Running in a Virtual Machine on WinXP|
Playing in the Sandbox
During most development projects, you add and remove new third-party libraries and software as the project and requirements progress. Unfortunately, constant installing and uninstalling of applications can quickly damage the Microsoft Windows registry. Just one bad installer can really mess things up. Setting up your development environment in a guest machine (the operating system running in a virtual machine) gives you a system that you can easily recover if damaged. It also gives you peace of mind that no matter what goes wrong, you can still use the expensive new software that you just activated on your laptop. Figure 1 shows Eclipse running in a virtual machine on WinXP.
A virtual machine can provide an excellent development sandbox that forms a clear barrier between your development environment and your personal computer. If your project requires working with potentially unsafe code, such as a virus or low-level data manipulator, a virtual machine can do the trick. You can configure a VM to allow or block network access to the guest operating system, while allowing you to retain network access on your host machine (the machine running the virtualization software). If your project scans personal data, such as a desktop search bar, a VM may be the only thing protecting your personal information from the crawler during development.