JVM uruchamia bytecode Javy. JRE to środowisko uruchomieniowe (JVM + biblioteki standardowe) potrzebne do odpalania aplikacji. JDK to zestaw deweloperski (JRE + kompilator i narzędzia) potrzebny do budowania aplikacji.