Using virtual machines

For the uninitiated, Virtual Machines (VM’s) are a software and/or hardware solution which simulate a completely separate computer environment on an existing computer.

This ‘Virtualized’ environment acts as if it were a second computer sitting next to your current computer .

This technology allows you to,  for example,  run a different operating system from within your current one.  (E.g You can run Windows XP in a Virtual Machine from within Windows Vista).

Microsoft recently revealed that the new version of Windows – Windows 7 – will ship with a virtualized version of Windows XP as standard. This means that any software which is compatible with Windows XP will be able to be run in Windows 7, simply by enabling “Windows XP Mode”, essentially a version of Windows XP running in a Virtual Machine.

VM’s also allow you to run an alternative Operating System (such as Linux) in the VM, while still maintaining Windows as your base system, thus giving you access to the best of both worlds.

Installing and Using Virtual Machines

VM technology is supported by practically all modern computer hardware. Virtual Machine consumer software is readily available and is easy to setup and use. Parallels and VMware are two popular VM packages.

At Jimmyweb, we use Microsoft’s Virtual PC 2007, which is a VM solution provided for free by Microsoft for the Windows platform.

Virtual Machines for Testing

As a web developer, testing across a range of different platforms and browsers is an essential part of the development process. Many people are still using Internet Explorer 6, which by today’s standards is a very buggy and non-compliant browser. Since Windows XP (our O/S of choice) only allows you run a single version of Internet Explorer, we need a way to test in previous version of Internet Explorer which no longer exist on our machine.

Microsoft, in their wisdom, actually offer pre-built Virtual Machines for Internet Explorer 6, 7 and 8 which mean you can be up and running with a full Internet Explorer test suite in the time in takes you to download and install them.

Virtual Machines for Development

We recently set up our new office in Sydney and part of this process was the determination of our I.T hardward requirements. Traditionally in a web dev company, you’d have a number of servers that you work from, usually a mixture of Windows and Linux/Unix servers.

By using Virtual Machines, we can develop on an exact replica of the O/S environment that the website/application we are developing will be hosted on so that we are not exposed to any issues in different platform compatibilities.

The other advantage of Virtual Machines as a local development environment, is that the VM only consumes resources on your system while it is running. In regular local development environments, you might have apache, MySql and PHP running on your machine, which then consume resources whenever your computer is running. With the VM’s, as soon as you shut down the VM, the system frees up all resources (and on a Windows machine, every little bit counts).

Caveat

Virtual Machines need to have system resources (particularly RAM) pre-allocated to them, so to run one or more VM’s at a time mean you should run a fast (preferably multi-core) processor and have a good amount of RAM installed.