- Language-interpreting virtual machines, such as the Java Virtual Machine, the Flash engine, and the .NET runtime
- Complete system virtualization engines, such as VMWare, Xen, and VirtualBox
This year's VEE 2010 is a postcard from the bleeding edge of the convergence. The preliminary program is now online.
Simply browsing through the conference materials sets my mind aflame:
Development and debugging for virtual environments, such as record/replay debugging and omniscience
An Asymmetry-Aware Scheduler for Hypervisors
Holistic Memory Efficiency and Performance
Capability Wrangling Made Easy
A Substrate for Managed Runtime Environments
At my new day job, I'm told, each developer gets a virtual machine of his/her own for development tasks; an OVM I'm sure. It sounds great to me: who needs a physical computer when I can have a virtual one?
While virtualization is generally sold as an efficiency proposition, with its primary appeal being to bean counters, it's actually a wonderful thing for software types like me. We get increased power, increased flexibility, higher availability. I no longer have to have direct physical access to 4-5 machines of my own in order to ensure a broad range of hardware/software configurations; I no longer have to transport machines from place to place to fit my mobile work environment; I no longer have to settle on a software/hardware mix and hold it static for years. Instead, I can adjust my environment to the needs of my current project(s) and evolve them gracefully as my work needs change.
My first usage of a virtual machine was in 1985, at Computer Corporation of America in Boston, makers of the Model 204 DBMS for IBM mainframes. IBM's Virtual Machine operating system for the mainframe was, oh, 25 years ahead of its time; it's good to see the rest of the world understanding the power of this concept.