Disclosed is a runtime or execution environment for computer programs consisting of a set of components. The program runs in a set of sequential frames, each delineating a unit of time and/or work for the components of the program. Within each frame any running component cannot communicate with any other component, but can communicate with components in other frames. The components may only be allowed to communicate with others in adjacent frames. The components may processed such that any communications takes place in a pre-determined order. The execution environment may be object based and distributed over several computers, with the environment is part of the web-browser. The environment may execute some components speculatively to hide the latency in a network to the users interacting with the network. Also disclosed is a method of writing programs for the environment, a distributed computer system running the environment, and a debugger for the execution environment.