The Java Virtual Machine or JVM interprets Java byte code (compiled Java code) and runs the program. JVM's have been created for many different platforms, which gives Java its platform-independent nature. It manages memory usage via a garbage collector. It also manages concurrent threads (the programmer can attempt to control certain threads, though).
A language can run inside JVM if it compiles to Java bytecode, or its interpreter runs inside JVM.