1. A system for executing a software application comprising a plurality of hardware independent bytecodes, the system comprising: a computing system that generates bytecodes; a virtual machine, remote to the computing system, comprising means for receiving a plurality of bytecodes from said computing system, and means for executing said plurality of 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 the bytecode verification completed by the computing system is authenticated by the virtual machine prior to the execution of the bytecodes by said virtual machine.