1. A method for executing a software application in a plurality of computers having respective hardware resources said hardware resources comprising a respective memory and a respective I/O device, wherein said computers include a first computer and a second computer that intercommunication over a network, comprising the steps of: running at least a first virtual machine implementer and a second virtual machine implementer on said first computer and said second computer, using said respective memory, wherein said first and second virtual machine implementers run separately and independently of one another on said first and second computers, respectively; and executing a virtual machine on said computers, wherein said virtual machine is shared between said first virtual machine implementer and said second virtual machine implementer using said respective I/O device in each of said first computer and said second computer to intercommunicate between said first computer and said second computer, and a guest operating system runs over said shared virtual machine.