jdk is necessary to compile to code and convert java code to byte codes while jre is necessary for executing the byte codes. JDK includes the JRE plus command-line development tools such as compilers and debuggers that are necessary or useful for developing applets and applications.