JVM is an abstract computing machine or Virtual machine that resides in your RAM. It has a platform-independent execution environment that interprets Java bytecode into native machine code. (Javac is Java Compiler which compiles your Java code into Bytecode)
Java program will be running inside the JVM which is then mapped onto the underlying physical machine. It is one of programming tool in JDK.
Byte code is platform-independent code which is run on every platform and
Machine code is platform-specific code which is run in only specific platform such as windows or linux; it depend on execution.)
Some of the components:-