Virtual Machines

Overview The concept of a virtual machine (VM) is based on virtualization. Virtualization is a broad term that is used to describe the abstraction of computer resources.  For a more specific definition of virtualization and a comprehensive overview of this technology, including examples, take a look at an article called An introduction to virtualization by Amit Singhs at kernelthread.com. For additional information about virtualization, see virtualization.com. This Web site features news, press releases, guest posts, interviews, white papers, people, jobs, photos, exclusive videos, and reports about partnerships, acquisitions, and many other topics. 

A virtual machine is a software implementation of a machine or computer that executes programs like a real machine.  A complete definition for virtual machine can be found at Webopedia.  There are two types of virtual machines: system virtual machines and process virtual machines.

Process Virtual Machine A process virtual machine, sometimes called an application virtual machine, runs as a normal application inside an OS and supports a single process. It is created when that process is started and then destroyed when it exits. For a very detailed article about process virtual machines see "The Process Virtual Machine" by Tom Baeyens and Miguel Valdes Faura. 

System Virtual Machine A System virtual machine allows for the ability to present the resources of a single computer as if it is a collection of separate computers ("virtual machines"), each with its own virtual CPUs, network interfaces, storage, and operating system.  The software layer providing the virtualization is called a virtual machine monitor, or hypervisor.  A detailed description of hypervisor can be reviewed at Wikipedia. One of the most popular system virtual machines is the Java Virtual Machine (JVS). For an overview, history, and download  information about the JVS, see the Java Virtual Machine Web site.

Software Appliance A software appliance is a software application combined with just enough operating system (JeOS) for it to run optimally on industry standard hardware (typically a server) or in a virtual machine. A software appliance can be packaged in a virtual machine format as a virtual appliance, allowing it to be run within a virtual machine container. A complete description of a virtual appliance is available at Wikipedia.

Virtual Appliance Virtual Appliances are pre-built, pre-configured, ready-to-run enterprise software applications packaged along with an operating system within a virtual machine. Some good observations about recent developments with virtual appliances can be found in the article "Virtual Appliances - 2007 Year in Review" by Srinivas Krishnamurti. To date, Linux is the most popular platform for the development of  virtual appliances.

Additional Information The VMware Player is a free application that allows you to run virtual appliances. It is a perfect solution for those that want to test and install applications without risk to their existing systems. VMware Player can be downloaded at here.  To review the many appliances that are available to run on the VMWare Player, including browser and server appliances, follow this VMWare link to the Virrtual Appliance Marketplace. Virtual-Appliances.net  hosts VMware Virtual Appliances for Linux desktop users  and developers (Ubuntu, Kubuntu, and openSuse). An example of a safe browser VMware appliance that allows users to securely browse the Internet using Mozilla Firefox under Ubuntu 5.10 can be found here.

A JumpBox is a virtual appliance for an Open Source application (work w/ Xen, VMware and Parallels) that is focused on a single task (or single application). To take a tour of some of the JumpBox basic features click this link.  Take a look at the Jumpbox open source collection to see what applications are available to run on JumpBox.

For a facinating article on how to build your own light-weight browser appliance using VMware, Easy VMX, and a LInux liveCD click this HowTo.Gumph.org link. Many free Linux-based virtual machines with web user interfaces for deploying instant infrastructure and applications, including server and database systems, are available at the Virutal Appliance Web site.