In my IT security classes I frequently ran over these terms and had a hard time distinguishing between them, so I tried to figure their differences:
Sandboxing: Defense mechanism against mobile code, which runs in a separate runtime environment. Code and data are separated to prevent the program from modifying itself. This is used for small applications like applets in the JVM.
Interpretation: Defense mechanism against mobile code. Direct access to hardware is prevented and all addresses and system calls are interpreted and analyzed. Web browsers use this technique at the expense of performance.
Jailing: Defense mechanism against an unknown program. All system calls of a supervised program prisoner are checked by another program jailer who can also intercept and block them.
Are these definitions valid or are there any more differences / similarities which I didn't see? Especially some real world scenarios would be helpful, for example I know that sandboxing is used in the JVM as part of Java security.