Some languages (most notably Java and C#) are also tightly coupled with their own execution environments [e.g., the Java Virtual Machine (JVM)] which provide software security mechanisms, such as code signing (to verify the authenticity of code before executing it) and sandboxing of untrusted code (to isolate it from other code and data, in case of its misbehavior during execution).