The same computer programs usually run on different runtime environments.
Some programming functions can only be executed (or are more efficient or accurate) when performed at runtime: such as dynamic type checking, boundary of array checking; for this reason, some programming bugs are not discovered until the program is tested in a "live" environment, despite sophisticated compile-time checking. Languages with type checking occurring at runtime are called "dynamically typed".
Java Virtual Machine is an example of such a program: it interprets portable binary Java programs (bytecode) at runtime.
See also: compiler, compile-time, binding, interpreter, runtime engine