After some recent exposure to Java and .net Mono I was pondering about the various advantages of abstracting the hardware into a virtual machine that the code runs within. However, it occurred to me that recent demonstrations of both technologies were run on virtual machine software, i.e. VMWare and Virtual PC/Server. With Vitualization (yuk made up word warning) improving seemingly by the month and with backing from the major chip manufacturers too it seems that Virtual Machine software is becoming the common place. It also seems that it is starting to make serious inroads into replacing machines for commercial use…albeit with, perversely, specialised hardware. So back to the topic, if you make the leap of faith that these Virtual Machine vendors will produce high performing products then why worry about cross-platform at all? Why should I port my Microsoft .net application to the .net Mono on the Mac when I can just fire up Parallels/VMWare and run it on a copy of Windows on the Mac. The expense of producing and maintaining software is almost always more expensive than throwing hardware at a problem. I’d argue that if you spend your budget on writing quality software for one platform and IF Virtual Machines perform, as the vendors are suggesting they will, then just run the software on the same platform on different kit via VMs.
Reality check. I’m not actually convinced that VMs will run at a decent rate for at least a year yet. Once we get 4/8 cores as standard then I think the story will look far more plausible.
[Edit] I’m now very interested in Silverlight, could this be the software VM that ruins my argument? I hope so!