1. A system for executing a software application comprising a plurality of hardware independent bytecodes, the system comprising: a computing system data generates bytecodes; a virtual machine, remote to the computing system, comprising means for receiving a plurality of authenticated bytecodes from said computing system, and means for executing said plurality of authenticated bytecodes; means for testing said bytecodes against a set of predetermined criteria; and means for securely distributing said testing means between said virtual machine and said computing system so that bytecode testing completed by the computing system is authenticated by the virtual machine prior to the execution of the authenticated bytecodes by said virtual machine.