JRE vs JVM vs JDK
JVM
JVM is an abstract machine that provides a runtime environment in which Java bytecode can be executed.
When a Java program is run, Java compiler compiles hat code to bytecode and then JVM translates bytecode into machine code.
JRE
JRE (Java Runtime Environment) is a software tools that provides set of libraries, JVM, and other components that are required to run Java applications. JRE is the superset of JVM.
JDK
The Java Development Kit (JDK) is a software development kit used to develop Java applications. It physically exists. JDK is bundled with JRE, compilers, debuggers, Java doc and so on.
JVM, JRE, and JDK are platform dependent because the configuration of each OS is different from each other whereas Java is platform independent.