Qual é a diferença entre JDK e JRE?
Quais são os papéis deles e quando devo usar um ou outro?
Qual é a diferença entre JDK e JRE?
Quais são os papéis deles e quando devo usar um ou outro?
Respostas:
O JRE é o Java Runtime Environment . É um pacote de tudo o que é necessário para executar um programa Java compilado, incluindo a Java Virtual Machine (JVM), a Java Class Library, o java
comando e outras infra-estruturas. No entanto, não pode ser usado para criar novos programas.
O JDK é o Java Development Kit , o SDK completo para Java. Ele tem tudo o que o JRE possui, mas também o compilador ( javac
) e ferramentas (como javadoc
e jdb
). É capaz de criar e compilar programas.
Normalmente, se você se importa apenas com a execução de programas Java no computador, instalará apenas o JRE. É tudo que você precisa. Por outro lado, se você estiver planejando fazer alguma programação Java, precisará instalar o JDK.
Às vezes, mesmo se você não planeja desenvolver Java em um computador, ainda precisa do JDK instalado. Por exemplo, se você estiver implementando um aplicativo da web com JSP, tecnicamente estará executando apenas programas Java dentro do servidor de aplicativos. Por que você precisaria do JDK então? Como o servidor de aplicativos converterá JSP em servlets Java e precisará usar o JDK para compilar os servlets. Estou certo de que existem mais exemplos.
A resposta acima (de Pablo) é muito correta. Esta é apenas uma informação adicional.
O JRE é, como o nome indica, um ambiente . É basicamente um monte de diretórios com arquivos relacionados a Java, a saber:
bin/
contém os programas executáveis do Java. O mais importante é java
(e também para Windows javaw
), que inicia a JVM. Existem alguns outros utilitários aqui também, como keytool
e policytool
.conf/
contém arquivos de configuração editáveis pelo usuário para os especialistas em Java brincarem.lib/
possui um grande número de arquivos de suporte: alguns .jar
s, arquivos de configuração, arquivos de propriedades, fontes, traduções, certificados etc. - todos os "adornos" do Java. O mais importante é modules
um arquivo que contém os .class
arquivos da biblioteca padrão Java..dll
(Windows) ou .dylib
(macOS) ou .so
(Linux) sob bin/
ou lib/
com código binário nativo específico do sistema de suporte.O JDK também é um conjunto de diretórios. É um superconjunto do JRE, com algumas adições:
bin/
foi ampliado com ferramentas de desenvolvimento. O mais importante deles é javac
; outros incluem jar
, javadoc
e jshell
.jmods/
, que contém arquivos JMOD para a biblioteca padrão, foi adicionado. Esses arquivos permitem que a biblioteca padrão seja usada jlink
.O JDK é um superconjunto do JRE e contém tudo o que está no JRE, além de ferramentas como os compiladores e depuradores necessários para o desenvolvimento de applets e aplicativos. O JRE fornece as bibliotecas, a Java Virtual Machine (JVM) e outros componentes para executar applets e aplicativos escritos na linguagem de programação Java.
Em termos leigos: JDK é avô, JRE é pai e JVM é filho deles. [ie JDK> JRE> JVM]
JDK = JRE + Ferramentas de desenvolvimento / depuração
JRE = JVM + classes de pacotes Java (como util, math, lang, awt, swing etc) + bibliotecas de tempo de execução.
JVM = Sistema do carregador de classes + área de dados de tempo de execução + Mecanismo de Execução.
Em outras palavras, se você é um programador Java, precisará do JDK em seu sistema e este pacote também incluirá JRE e JVM, mas se você for um usuário normal que gosta de jogar jogos on-line, precisará apenas do JRE e este pacote não terá JDK nele.
JVM:
A Java Virtual Machine (JVM) é a máquina virtual que executa os bytecodes Java. A JVM não entende o código-fonte Java, é por isso que você compila seus arquivos * .java para obter arquivos * .class que contêm os bytecodes compreensíveis pela JVM. É também a entidade que permite que o Java seja uma "linguagem portátil" (escreva uma vez, execute em qualquer lugar). De fato, existem implementações específicas da JVM para diferentes sistemas (Windows, Linux, MacOS, consulte a lista da wikipedia ..), o objetivo é que, com os mesmos bytecodes, todos tenham os mesmos resultados.
JDK e JRE
Para explicar a diferença entre JDK e JRE, o melhor é ler a documentação do Oracle e consultar o diagrama:
Java Runtime Environment (JRE)
O Java Runtime Environment (JRE) fornece as bibliotecas, a Java Virtual Machine e outros componentes para executar applets e aplicativos escritos na linguagem de programação Java. Além disso, duas principais tecnologias de implantação fazem parte do JRE: Java Plug-in, que permite que os applets sejam executados em navegadores populares; e Java Web Start, que implementa aplicativos independentes em uma rede. É também a base para as tecnologias na Java 2 Platform, Enterprise Edition (J2EE) para desenvolvimento e implantação de software corporativo. O JRE não contém ferramentas e utilitários, como compiladores ou depuradores, para o desenvolvimento de applets e aplicativos.
Kit de Desenvolvimento Java (JDK)
O JDK é um superconjunto do JRE e contém tudo o que está no JRE, além de ferramentas como os compiladores e depuradores necessários para o desenvolvimento de applets e aplicativos.
Observe que o Oracle não é o único a fornecer o JDK.
Do site oficial do java ...
JRE (Java Runtime Environment):
JDK (Kit de Desenvolvimento Java)
Uma diferença da perspectiva de depuração:
Para depurar em classes de sistema Java como String e ArrayList, você precisa de uma versão especial do JRE, que é compilada com "informações de depuração". O JRE incluído dentro do JDK fornece essas informações, mas o JRE normal não. O JRE regular não inclui essas informações para garantir melhor desempenho.
O que são informações de depuração? Aqui está uma explicação rápida retirada desta postagem do blog :
Os compiladores modernos fazem um bom trabalho ao converter seu código de alto nível, com suas estruturas de controle aninhadas e bem recuadas e variáveis digitadas arbitrariamente em uma grande pilha de bits chamada código de máquina (ou código de código no caso de Java), cujo único objetivo é para executar o mais rápido possível na CPU de destino (CPU virtual da sua JVM). O código Java é convertido em várias instruções de código de máquina. As variáveis são empurradas por todo o lado - na pilha, nos registros ou completamente otimizadas. Estruturas e objetos nem sequer existem no código resultante - são apenas uma abstração que é traduzida para compensações codificadas em buffers de memória.
Então, como um depurador sabe onde parar quando você pede para interromper na entrada de alguma função? Como ele consegue encontrar o que mostrar quando você solicita o valor de uma variável? A resposta é - informações de depuração.
As informações de depuração são geradas pelo compilador junto com o código da máquina. É uma representação do relacionamento entre o programa executável e o código fonte original. Essas informações são codificadas em um formato predefinido e armazenadas ao lado do código da máquina. Muitos desses formatos foram inventados ao longo dos anos para diferentes plataformas e arquivos executáveis.
JVM, JRE, JDK - todos esses são a espinha dorsal da linguagem Java. Cada componente trabalha separadamente. O JDK e o JRE existem fisicamente, mas a JVM é uma máquina abstrata que significa que ela não existe fisicamente.
JVM é o subsistema do JDK e JRE que é usado para verificar o código intermediário conhecido como "bytecode". Primeiro, ele carrega o "arquivo de classe" (com extensão .c) gerado pelo compilador Java (javac) através do carregador de classes do subsistema JVM e do local da memória classificada (registros de área de classe, pilha, heap e pc) de acordo com seu uso. Em seguida, verifica todo o bytecode para garantir que ele seja retornado em Java e todo o acesso à acessibilidade da memória pela rede. O trabalho do intérprete começa depois disso, onde verifica todo o programa, linha por linha. Os resultados são finalmente mostrados no console / navegador / aplicativo por meio do JRE (Java Runtime Environment), que facilita o tempo de execução.
O JRE também é um subsistema do JDK que fornece recursos de tempo de execução como JVM, classes, arquivos executáveis como arquivo .jar, etc.
JDK significa Java Development Kit. Ele contém todos os componentes necessários usados na programação Java, como classe, método, swing, AWT, pacote, Java (intérprete), javac (compilador), appletviewer (visualizador de aplicativo de applet), etc. Para concluir, contém todos os arquivos necessários para o desenvolvimento aplicativos, autônomos ou baseados na Web.
JRE
JRE é um acrônimo para Java Runtime Environment.É usado para fornecer ambiente de tempo de execução.É a implementação da JVM.Existe fisicamente.Ele contém um conjunto de bibliotecas e outros arquivos que a JVM usa em tempo de execução.
JDK
JDK é um acrônimo para Java Development Kit, que existe fisicamente e contém ferramentas de desenvolvimento JRE +.
Link: - http://www.javatpoint.com/difference-between-jdk-jre-and-jvm
Normalmente, quando você se preocupa apenas em executar programas Java no navegador ou no computador, instala apenas o JRE. É tudo que você precisa. Por outro lado, se você estiver planejando fazer alguma programação Java, também precisará do JDK.
JVM, JRE e JDK dependem da plataforma porque a configuração de cada sistema operacional é diferente. Mas, Java é independente de plataforma.
A Java Virtual Machine (JVM) é um sistema de tempo de execução que executa o bytecode Java.
JRE é o ambiente (bibliotecas padrão e JVM) necessário para executar aplicativos Java.
O JDK inclui as ferramentas de desenvolvimento de linha de comando JRE plus, como compiladores e depuradores, necessários ou úteis para o desenvolvimento de applets e aplicativos.
Aqui está uma resposta simples diretamente do Oracle http://docs.oracle.com/javase/7/docs/technotes/guides/
Java SE Runtime Environment (JRE)
O JRE fornece as bibliotecas, a máquina virtual Java e outros componentes necessários para a execução de applets e aplicativos gravados na linguagem de programação Java. Esse ambiente de tempo de execução pode ser redistribuído com aplicativos para torná-los independentes.
Kit de Desenvolvimento Java SE (JDK)
O JDK inclui as ferramentas de desenvolvimento de linha de comando JRE plus, como compiladores e depuradores, necessários ou úteis para o desenvolvimento de applets e aplicativos.
Se você deseja executar programas Java, mas não desenvolvê-los, faça o download do Java Run-time Environment ou JRE. Se você deseja desenvolvê-los, faça o download do kit de desenvolvimento Java ou JDK
Vamos chamar JDK é um kit, que inclui o que essas coisas precisam para desenvolver e executar aplicativos java.
O JDK é fornecido como ambiente de desenvolvimento para a criação de aplicativos, componentes e applets.
Ele contém tudo o que você precisa para executar aplicativos Java na forma compilada. Você não precisa de bibliotecas e outros materiais. Todas as coisas que você precisa são compiladas.
O JRE não pode ser usado para desenvolvimento, apenas usado para executar os aplicativos.
JVM (Java Virtual Machine) é uma máquina abstrata. É uma especificação que fornece um ambiente de tempo de execução no qual o bytecode java pode ser executado.
JRE é um acrônimo para Java Runtime Environment.É usado para fornecer ambiente de tempo de execução.É a implementação da JVM.Existe fisicamente.Ele contém um conjunto de bibliotecas e outros arquivos que a JVM usa em tempo de execução
JDK é um acrônimo para Java Development Kit. Ele existe fisicamente. Ele contém ferramentas de desenvolvimento JRE +
Se você é um programador Java , precisará do JDK em seu sistema e este pacote também incluirá JRE e JVM, mas se você for um usuário normal que gosta de jogar jogos online, precisará apenas do JRE e este pacote não terá o JDK. .
JVM
JVM (Java Virtual Machine) é uma máquina abstrata. É uma especificação que fornece um ambiente de tempo de execução no qual o bytecode java pode ser executado.
JVMs estão disponíveis para muitas plataformas de hardware e software. JVM, JRE e JDK dependem da plataforma porque a configuração de cada sistema operacional é diferente. Mas, Java é independente de plataforma.
JRE
Ele contém tudo o que você precisa para executar aplicativos Java na forma compilada. Você não precisa de bibliotecas e outros materiais. Todas as coisas que você precisa são compiladas.
O JRE não pode ser usado para desenvolvimento, apenas usado para executar os aplicativos.
Kit de Desenvolvimento Java SE (JDK)
O JDK inclui as ferramentas de desenvolvimento de linha de comando JRE plus, como compiladores e depuradores, necessários ou úteis para o desenvolvimento de applets e aplicativos.
(Fontes: perguntas e respostas de GeeksForGeeks , visão geral da plataforma Java )
Um entendimento claro desses termos (JVM, JDK, JRE) é essencial para entender seu uso e diferenças.
JVM Java Virtual Machine (JVM) é um sistema de tempo de execução que executa o bytecode Java. A JVM é como um computador virtual que pode executar um conjunto de instruções compiladas e manipular os locais de memória. Quando um compilador Java compila o código-fonte, ele gera um conjunto de instruções altamente otimizado chamado bytecode em um arquivo .class. A JVM interpreta essas instruções de bytecode e as converte em código específico da máquina para execução.
JDK O Java Development Kit (JDK) é um ambiente de desenvolvimento de software que você pode usar para desenvolver e executar aplicativos Java. Inclui o JRE e um conjunto de ferramentas de programação, como um compilador Java, intérprete, visualizador de applet e visualizador de documentos. O JDK é implementado através das plataformas Java SE, Java EE ou Java ME.
JRE O Java Runtime Environment (JRE) faz parte do JDK que inclui uma JVM, classes principais e várias bibliotecas que suportam o desenvolvimento de aplicativos. Embora o JRE esteja disponível como parte do JDK, você também pode fazer o download e usá-lo separadamente.
Para uma compreensão completa, você pode ver meu Blog: Jdk Jre Jvm e diferenças
O jdk é necessário compilar para codificar e converter o código java em códigos de bytes, enquanto o jre é necessário para executar os códigos de bytes.
JDK inclui as ferramentas de desenvolvimento de linha de comando JRE plus, como compiladores e depuradores, necessárias ou úteis para o desenvolvimento de applets e aplicativos.
JRE é basicamente a Java Virtual Machine na qual seus programas Java são executados. Também inclui plugins de navegador para execução de Applet.
JDK é uma máquina abstrata. É uma especificação que fornece um ambiente de tempo de execução no qual o bytecode java pode ser executado.
Então, basicamente JVM <JRE <JDK, como disse @Jaimin Patel.
A diferença entre o JDK e o JRE é que o JDK é o kit de desenvolvimento de software para java, enquanto o JRE é o local onde você executa seus programas.
suponha que, se você é um desenvolvedor, sua função é desenvolver o programa e também executá-lo. portanto, você deve ter um ambiente para desenvolvimento e execução, fornecido pelo JDK.
suponha que, se você é um cliente, não precisa se preocupar com o desenvolvimento. Você só precisa de um ambiente para executar o programa e obter apenas resultados, fornecido pelo JRE.
O JRE executa o aplicativo, mas a JVM lê as instruções linha por linha, por isso é intérprete.
JDK = JRE + Ferramentas de desenvolvimento
JRE = JVM + Classes de Biblioteca
JRE
JRE é um acrônimo para Java Runtime Environment.É usado para fornecer ambiente de tempo de execução.É a implementação da JVM. Existe fisicamente. Ele contém um conjunto de bibliotecas + outros arquivos que a JVM usa no tempo de execução.
A implementação de JVMs também é ativamente lançada por outras empresas além da Sun Micro Systems.
JDK
JDK é um acrônimo para Java Development Kit, que existe fisicamente e contém ferramentas de desenvolvimento JRE +.