JVM runs Java bytecode. JRE is the runtime environment (JVM + standard libraries) needed to run apps. JDK is the development kit (JRE + compiler and tools) needed to build apps.