JVM-
In simple words you can say it is a Compiler+Interpreter.
I takes input as Java Programs and converts them into Byte codes as a putput. This byte code can be run on any platform (Unix, linux, Windows...etc) . Hence Java is known as Platform independent language.
When you compile the java files it generates files Class. it represents the bytecode of your java programme.
The Java Virtual Machine is responsible for interpreting Java bytecode, and translating this into actions or operating system calls.
The JVM it's a layer between your bytecode and microprocessor.