The Java Virtual Machine (JVM) is an abstract computing machine that provides a platform-independent way of executing Java code. The Java Runtime Environment (JRE) is an implementation of the JVM that contains the JVM, class libraries, and other supporting files needed to run Java programs but lacks development tools. The Java Development Kit (JDK) contains the JRE as well as development tools like compilers and debuggers that are necessary for writing Java programs but not for simply running existing programs.