1. A method of operating one or more untrusted application programs on a JAVA virtual machine (JVM) in an enhanced security mode, said JAVA virtual machine comprising a host computer having a memory and functional assets onto which is installed a JVM layer and a single, first, lower, trusted JAVA Application Programming Interface (API) library, said method comprising; running a hypervisor software layer on said first, lower, trusted JAVA API library; running at least one second, upper, untrusted JAVA API library on said hypervisor software layer; at or before runtime, modifying the code of said at least one second, upper, untrusted JAVA API library to call said hypervisor software layer instead of said JVM to create at least one silo, said at least one silo extending between said host computer and a corresponding one of said at least one second, upper, untrusted JAVA API library; and operating said hypervisor software layer to only permit communication between said at least one second, upper, untrusted JAVA API library and a corresponding portion of the memory and functional assets of said host computer, wherein each of said least one second, upper, untrusted JAVA API library cannot communicate with all of said host computer memory or all of said host computer functional assets.