Although virtualization has been around for over 40 years, it has only recently become a viable solution on personal computers. In the old days, a server the size of an entire room was needed in order to run many virtual machines on the same physical hardware. In that environment, the benefits of virtualization easily outweighed the extra overhead of emulating entire computers in software.
More recently, as personal computers have become more powerful, virtualization has enabled people to use a single PC to act as several machines at once. This has been a boon for developers who test on multiple platforms, as well as anyone who wishes to use software from multiple systems at once. Gone are the days of several different computers sitting under your desk, or constantly rebooting your one machine into different operating systems. And testing under unstable conditions just got a whole lot easier because if one virtual machine crashes, the rest of your computer continues running, completely unaffected. Now, it's easy to have your cake and eat it too.
I first wrote about this when I got my Macbook about 11 months ago. With it, I purchased a copy of Parallels Desktop, a virtual machine program for the Mac. Since Apple transitioned the Mac to Intel processors in 2006, virtualization via Parallels (and soon VMware) has taken off like wildfire. The days of the excruciatingly slow emulation of Virtual PC are over, thanks to the fact that the hardest part of virtualization, emulating the virtual computer's CPU, can be bypassed when you're already running on that same CPU. Intel Macs can run Windows in a confined, virtual environment at near native speeds without rebooting. I believe this is only the beginning.
I've been enjoying this capability since day one, running my copy of Windows XP Pro within Parallels for BYOND development -- working on both the BYOND software and testing the BYOND website in Internet Explorer. I even have copies of Windows ME and Windows 98 for legacy compatibility testing. Clearly, virtualization is a huge win for anyone doing multi-platform development.
This past weekend, I took another giant leap in productivity, enabled by virtualization. There have been a few times over the past year or so when I had my laptop with me but no internet connectivity. No internet meant no access to BYOND servers, so no development on the BYOND website. This has frustrated me, as often in these situations I didn't really have anything better to do, so potentially productive time was completely wasted. I knew I would be going to Vegas soon, and that 4+ hour drive would be perfect for making a little website progress. If only I could get wireless internet access in the middle of the desert!
Once again, virtualization came to the rescue. The night before the trip, I installed Linux onto a new virtual machine. I configured it as a near clone of the BYOND web server, complete with a recent copy of the live database and all of our custom web applications. Once everything was in place, this virtual machine looked and acted just like the BYOND website when pointing any browser to its internally assigned network address. Perfect! For four hours on the way to Las Vegas this past Friday, I managed to get a lot of work on on the BYOND website, without ever accessing the real BYOND website.
I don't think it stops there. Soon, we'll see virtualization used in more mainstream applications. I believe in the next several years it will become more than just a fantastic tool for developers and server admins.
Backwards compatibility has always been a difficult problem for developers of mainstream operating systems like Windows. What's the easiest way to provide backwards compatibility without de-stabilizing the main system? By running a complete copy of the old system within an isolated virtual machine. When this is made so seamless that the average user has no idea that a virtual machine is used behind the scenes, developers can stop worrying about backwards compatibility and focus on moving forward with new technologies. This has the potential to remove the shackles that have held back new developments in computing time and time again. Apple has used this to great advantage in their handling of "Classic" MacOS programs within the much more modern Mac OS X.
And wouldn't it be nice it any computer system could seamlessly run any program from any other system? If virtualization is built into the system from the start, again there's no reason why the user even has to be aware that it's there. With multi-core CPUs becoming standard in ordinary PCs, the potential is virtually limitless (haha).
Time to jump on the bandwagon!
So, this virtual thing your talking about..is sort of like emulation?
My psp can boot Windows 98 =)