The
Java Virtual Machine basically runs an abbreviated compilation that is stored in what is called bytecodes. There are plenty of languages that use bytecoded compilations.
The JIT compiler is an adaptive compiler, because it uses data gathered at runtime to decide which methods to compile. Only the methods that execute most frequently are compiled.