A system for providing hardware virtualization in a virtual machine environment, comprising: a plurality of computers (60, 62, 80) each including a processing device, the system further comprising a plurality of virtual machines, each computer (60, 62, 80) having one or more of the plurality of virtual machines, and a resource broker agent (64, 66) operating thereon; a virtualization layer located at each processing device, wherein the virtualization layer includes an execution layer component and a hypervisor for partitioning one or more of said virtual machines over that processing device; and a resource broker service, comprising a resource broker which acts like a pool of agents and which keeps track of which particular agent (64, 66) controls which particular machine (60, 62, 80) that in turn has the necessary available power to fulfil a request from an application and a plurality of resource broker agents (64, 66), each resource broker agent (64, 66) being responsible for the local management of java virtual machine instances (70, 74, 86, 88) operating on the same physical machine (60, 62, 80) as the agent (64, 66), the resource broker service being configured to: receive a request from an application to access resources to be provided by one of said plurality of java virtual machines (70,74,86,88) wherein all outside communication from a first machine (60, 62, 80) to a second machine (60,62, 80), or throughout a cluster, travels first through the resource broker; determine by the resource broker which resource broker agent (64, 66) at which machine (60, 62, 80) is best suited to handling the request; and communicate the request to the determined resource broker agent (64, 66), the determined resource broker agent (64, 66) using the virtualization layer to create or manage java virtual machines (70,74,86,88) operating on the determined computer (60, 62, 80) and to process the request at the determined computer (60, 62, 80) using a a java virtual machine (70,74,86,88). a plurality of computers (60, 62, 80) each including a processing device, the system further comprising a plurality of virtual machines, each computer (60, 62, 80) having one or more of the plurality of virtual machines, and a resource broker agent (64, 66) operating thereon; a virtualization layer located at each processing device, wherein the virtualization layer includes an execution layer component and a hypervisor for partitioning one or more of said virtual machines over that processing device; and a resource broker service, comprising a resource broker which acts like a pool of agents and which keeps track of which particular agent (64, 66) controls which particular machine (60, 62, 80) that in turn has the necessary available power to fulfil a request from an application and a plurality of resource broker agents (64, 66), each resource broker agent (64, 66) being responsible for the local management of java virtual machine instances (70, 74, 86, 88) operating on the same physical machine (60, 62, 80) as the agent (64, 66), the resource broker service being configured to: receive a request from an application to access resources to be provided by one of said plurality of java virtual machines (70,74,86,88) wherein all outside communication from a first machine (60, 62, 80) to a second machine (60,62, 80), or throughout a cluster, travels first through the resource broker; determine by the resource broker which resource broker agent (64, 66) at which machine (60, 62, 80) is best suited to handling the request; and communicate the request to the determined resource broker agent (64, 66), the determined resource broker agent (64, 66) using the virtualization layer to create or manage java virtual machines (70,74,86,88) operating on the determined computer (60, 62, 80) and to process the request at the determined computer (60, 62, 80) using a a java virtual machine (70,74,86,88). receive a request from an application to access resources to be provided by one of said plurality of java virtual machines (70,74,86,88) wherein all outside communication from a first machine (60, 62, 80) to a second machine (60,62, 80), or throughout a cluster, travels first through the resource broker; determine by the resource broker which resource broker agent (64, 66) at which machine (60, 62, 80) is best suited to handling the request; and communicate the request to the determined resource broker agent (64, 66), the determined resource broker agent (64, 66) using the virtualization layer to create or manage java virtual machines (70,74,86,88) operating on the determined computer (60, 62, 80) and to process the request at the determined computer (60, 62, 80) using a a java virtual machine (70,74,86,88).