JDK e JRE são os conceitos principais na programação Java e suas diferenças são algumas das perguntas de entrevista mais populares. Não usamos esses conceitos durante a programação, mas se quisermos nos tornar um desenvolvedor Java, devemos conhecer esses conceitos. 

JDK

JDK significa Java Development Kit. É um ambiente de desenvolvimento de software usado para desenvolver aplicativos e miniaplicativos Java. É um software específico da plataforma, ou seja, há instaladores separados para sistemas Windows, Mac e Unix. Os desenvolvedores Java podem usá-lo em seus Windows, macOS, Solaris e Linux para codificar e executar programas Java. Ele contém Java Runtime Environment (JRE) e outras ferramentas de desenvolvimento como um interpretador, compilador, arquivador e um gerador de documentos. Possivelmente, podemos instalar mais de uma versão do JDK no mesmo computador. 

                                                 

JDK

JRE

JRE significa Java Runtime Environment. É a implementação de JVM (Java Virtual Machine) e é especialmente projetado para fornecer um ambiente para a execução de programas Java. Também depende da plataforma, como o JDK. Ele consiste em JVM, binários Java e outras classes para a execução suave do programa. Não contém nenhuma ferramenta de desenvolvimento como compilador, depurador, etc. Se quisermos apenas executar um programa, basta instalar o JRE e não o JDK, pois não há desenvolvimento ou compilação do código necessário.

JRE

Vamos ver a principal diferença com a ajuda do diagrama abaixo:

JDK Vs JRE vs JVM

                         

Diferença entre JDK e JRE

       CHAVE                      JDK                                 JRE
DEFINIÇÃO                                                          JDK (Java Development Kit) é usado para desenvolver aplicativos Java. O JDK também contém várias ferramentas de desenvolvimento, como compiladores, depuradores, etc.               JRE (Java Runtime Environment) é a implementação de JVM (Java Virtual Machine) e é especialmente projetado para executar programas Java.
FUNCIONALIDADE                                                                                    É usado principalmente para a execução de código e sua principal funcionalidade é o desenvolvimento. É usado principalmente para criar um ambiente para execução de código.
DEPENDÊNCIA DA PLATAFORMA                                                                            Depende da plataforma. Também depende da plataforma, como o JDK.
TIPO DE FERRAMENTASComo o JDK é responsável pelo propósito de desenvolvimento, ele contém ferramentas que são necessárias para o propósito de desenvolvimento e depuração.Por outro lado, o JRE não é responsável pelos propósitos de desenvolvimento, portanto não contém ferramentas como o compilador, o depurador, etc. Em vez disso, ele contém bibliotecas de classes e arquivos de suporte necessários para o propósito de execução do programa.
IMPLEMENTAÇÃO DE JDK E JRE                                                                       JDK = JRE + outras ferramentas de desenvolvimento.JRE = JVM + outras bibliotecas de classe.