Supporting many different platforms (windows, flavors of unix, etc.) is a major challenge for software vendors. One one hand vendors would like to support as many platforms as possible simply because customers demand it, on the other hand every supported platform brings extra support overhead and spreads the resources which is not good for anyone. At the end, the vendors want to focus on their own products rather than dealing with the idiosyncrasies of different flavors of Unix, and customers want to make sure the platform they use has strong support (and they are not the odd ball).
The promise of virtual machines has obvious appeal for the vendors as it offers a way out of the dilemma stated above.
From my perspective, Java's appeal is not (just) the features of the language but the Java VM that allows us not to worry (too much) about the platform our software will run on. For us, JVM is the platform; an excellent layer of abstraction to isolate us from the complexities of different platforms.
Recent developments in the virtualization technology brings the benefits we have reaped from developing all our software in Java to any software product. It is now possible to create an “appliance”, essentially a stripped down operating system, and run it on any platform. Further, since the appliance provides the full OS environment, software vendors can fully implement their solution in advance, integrate various modules and present to customers in a ready-to-use form. Software vendors can now focus on just the operating system of their choice (often linux) instead of trying to master many different platforms. What's more, they can truly control the OS, fine tune as they like. Vmware is leading the charge in this field. There is already a “marketplace” for appliances.
Not everyone is sold on the idea. Stephen O'Grady of Redmonk has a detailed post where he discusses the issue and points out to the potential issues, and comments on this post provide arguments for and against the idea. To me, most of the objections are issues that can be overcome without too much difficulty. Someone like rpath providing the virtual machines images for vendors to use sound like a great idea and further lifts the burden off the software vendors AND the customers.
Ian Holsman is concerned about the security, which has surprised me since I think vm appliances can help to make systems more secure and less. Imagine virtual appliance that has only the code it needs to run the software (hence fewer vulnerabilities), hardened by the experts, that is kept up to date automatically. There is technically nothing stopping rpath or another vendor providing such a service.
I think virtual machines (appliances) may also have an impact SaaS. There are exciting developments where these trends are colliding. Amazon is providing a game changing service with elastic cloud (EC2), 3Tera has Applogic, a grid operating system that shows where virtualization may be headed. I have not seen anyone providing vmware as SaaS yet, but assuming it is available, it may make a compelling alternative. Companies can move applications in or out with ease as virtual appliances, minimizing the cost and the risk of using external service providers.
Personally, I use vmware as a development/implementation tool. I often try new products, install them in a new VM instead of my PC so that I can just nuke the system when I'm done. I also keep different VMs for different projects I work on, enabling me to restore the environment when necessary in minutes. Due to Microsoft licensing issues (and they are getting worse), and performance reasons, I use Linux as the OS for the VMs.
Since I frequently work with Smarts (also from EMC) I needed a VM for Smarts. There is no official appliance provided by EMC (why not?) and from what I heard Smarts running on VMWare is not formally supported by EMC (true?).
Fortunately, Smarts does work on Linux, albeit only a specific version of RedHat (Enterprise 3) is supported. I use CentOS 3.8 since it has binary compatibility with RedHat and has been working fine so far. Ideally, I'd make a vmware image with Smarts installed and ready to go, but this is not allowed by EMC (nor by most proprietary software vendors). Hopefully EMC will make a Vmware appliance available via the vmware website sometime in the future. In the mean time, if you do want to run Smarts on a virtual machine, you can download the vmware player, create an empty image and install CentOS 3.8, yourself. easyvmx has very good instructions on how to create a vmware image from scratch and even a web based form that creates the image for you.
[tags]vmware, virtualization, SaaS, Smarts, EMC Smarts, EMC, rpath, Linux[/tags]

