What is the difference between JDK and JRE?
The JRE is the Java Runtime Environment. It is a package of everything necessary to run a compiled Java program, including the Java Virtual Machine (JVM), the Java Class Library, the java
command, and other infrastructure. However, it cannot be used to create new programs.
The JDK is the Java Development Kit, the full-featured SDK for Java. It has everything the JRE has, but also the compiler (javac
) and tools (like javadoc
and jdb
). It is capable of creating and compiling programs.
Usually, if you only care about running Java programs on computer you will only install the JRE. It's all you need. On the other hand, if you are planning to do some Java programming, you need to install the JDK instead.
Sometimes, even if you are not planning to do any Java development on a computer, you still need the JDK installed. For example, if you are deploying a web application with JSP, you are technically just running Java programs inside the application server. Why would you need the JDK then? Because the application server will convert JSP into Java servlets and needs to use the JDK to compile the servlets. I am sure that there are more examples.
The answer above (by Pablo) is very right. This is just additional information.
The JRE is, as the name implies, an environment. It's basically a bunch of directories with Java-related files, to wit:
bin/
contains Java's executable programs. The most important isjava
(and for Windows,javaw
as well), which launches the JVM. There are some other utilities here as well, such askeytool
andpolicytool
.conf/
holds user-editable configuration files for Java experts to play with.lib/
has a large number of supporting files: some.jar
s, configuration files, property files, fonts, translations, certs, etc. – all the "trimmings" of Java. The most important ismodules
, a file that contains the.class
files of the Java standard library.- At a certain level, the Java standard library needs to call into native code. For this purpose, the JRE contains some
.dll
(Windows) or.dylib
(macOS) or.so
(Linux) files underbin/
orlib/
with supporting, system-specific native binary code.
The JDK is also a set of directories. It is a superset of the JRE, with some additions:
bin/
has been enlarged with development tools. The most important of them isjavac
; others includejar
,javadoc
andjshell
.jmods/
, which holds JMOD files for the standard library, has been added. These files allow the standard library to be used withjlink
.
JDK is a superset of JRE, and contains everything that is in JRE, plus tools such as the compilers and debuggers necessary for developing applets and applications. JRE provides the libraries, the Java Virtual Machine (JVM), and other components to run applets and applications written in the Java programming language.