I’ve blogged about Virtual Machines before, but they are so useful with a multi-platform development tool such as Xojo that they are worth mentioning again.
What is a Virtual Machine?
You can think of a Virtual Machine as a software-based computer that you run alongside on your primary computer alongside your main operating system.
For example, right now I am running OS X but I also have two Virtual Machines (VMs) currently running, one with Windows 10 and one with Linux Mint 17.2. These VMs are independent of OS X and for all intents and purposes operate almost exactly like two actual physical computers: one running Windows and another running Linux.
It is incredibly convenient to be able to run multiple operating system configurations on a single computer. For starters, you don’t actually need multiple physical computers. This saves space, power and heat. It’s a lot easier to just select a window that contains an independent version of Windows 10 then it is to spin your chair over to a second computer display for a computer running Windows.
Even better, you can easily have multiple VM configurations ready to start when needed. For example, I have over 20 VMs consisting of a variety of Windows versions (Vista, 7, 8.1, 10), a variety of Linux distributions (Linux Mint, Ubuntu, Debian, OpenSuse, etc.) and I even have multiple VMs running versions of OS X (10.7, 10.8, 10.9, 10.11). Of course, you’ll need to have licenses for the operating systems you want to use, but this is only an issue with Windows as Linux distributions are freely available, as are OS X versions (for people using a Mac at least).
You can use these separate VMs for testing your own apps, testing new software in general or even for testing new beta versions of operating systems, such as OS X 10.11 and Windows 10.
Virtual Machine Tools
There are a variety of VM software tools to choose from. They all work similarly, varying by their integrations with the main (or host) OS, ease-of-use, speed and availability of pre-configured VMs. One particularly nice feature that is available with some is the ability to “snapshot” a VM so that you can revert to an earlier state should an update or software installation cause problems. Here is a list of a some that I know of with a few notes:
- VMware Fusion (OS X): This is the tool I use. It is updated yearly (v8 was just released) and has support for all major versions of Windows, Linux and OS X. Yes, because VMware Fusion runs on a Mac, it can also run OS X in a VM.
- Parallels Desktop (OS X): Also updated yearly (v11 was just released), this tool is quite similar to VMware Fusion.
- Virtual PC (Windows): It doesn’t look like this has been updated in a few years and has probably been abandoned. But it appears to be freely available and was reasonably easy to use when I last worked with it.
- Virtual Box (Windows, OS X, Linux): This one is free and works on all platforms. It is not nearly as easy to use as the others, but it gets the job done.
- VMware Workstation Player (Windows): A bit more expensive than VMware Fusion, but seems roughly equivalent.
- VMware Workstation (Windows): Full-feature VM software for business.
I think Virtual Machines are an absolute necessity for anyone developing software, so if you have not tried using them, I encourage you to take some time and play around with them. I think you’ll be amazed at how useful they are when developing cross-platform software!