Patent ID: 8607224

Claim:
A computing device, comprising: a processor; one or more memories; a data structure stored in the one or more memories, the data structure comprising a virtual machine application package containing a virtual machine application and native code; and computer program instructions stored in the one or more memories, the computer program instructions comprising: first instructions configured to implement an operating system when executed by the processor, the operating system being configured to provide a communication mechanism for processes on the computing device to communicate, the operating system being further configured to provide an installation mechanism to install programs on the computing device; second instructions configured to implement a virtual machine when executed by the processor, the virtual machine being configured to run the virtual machine application, the virtual machine not being configured to provide access to one or more features of the computing device; third instructions comprising the native code configured to run outside the virtual machine when executed by the processor, the native code being configured to provide access to the one or more features via the communication mechanism provided by the operating system; and fourth instructions comprising the virtual machine application, the virtual machine application being configured for execution by the virtual machine, to: detect whether the native code is installed on the computing device; automatically install the native code embedded in the virtual machine application package via the installation mechanism provided by the operating system if the native code is not detected; and access the one or more features of the computing device by communicating with the native code via the communication mechanism provided by the operating system.