Qual é a diferença entre JVM, JDK, JRE e OpenJDK?

Qual é a diferença entre JVM , JDK , JRE e OpenJDK ?

Eu estava programando em Java e encontrei essas frases, quais são as diferenças entre elas?

JVM

A máquina Java Virtual (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 compreendidos 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, veja a lista da Wikipedia ), o objective é que, com os mesmos bytecodes, todos obtenham os mesmos resultados.

JDK e JRE

Para explicar a diferença entre o JDK e o 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 tecnologias-chave de implantação fazem parte do JRE: Java Plug-in, que permite que os applets sejam executados em navegadores populares; e o Java Web Start, que implanta aplicativos independentes em uma rede. É também a base para as tecnologias na Plataforma Java 2, Enterprise Edition (J2EE) para desenvolvimento e implementação de software corporativo. O JRE não contém ferramentas e utilitários como compiladores ou depuradores para desenvolver applets e aplicativos.


Java Development Kit (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 desenvolver applets e aplicativos.

Observe que o Oracle não é o único a fornecer JDKs.

OpenJDK

O OpenJDK é a implementação de código aberto do Java SE 7 JSR ( JSR 336 ). Agora quase não há diferença entre o Oracle JDK e o OpenJDK. No ano passado, a Oracle tomou essa decisão: Mudando para o OpenJDK como a implementação oficial da Referência do Java SE 7

As diferenças são declaradas neste blog :

P: Qual é a diferença entre o código-fonte encontrado no repository do OpenJDK e o código que você usa para construir o Oracle JDK?

R: É muito próximo – nosso processo de criação para as versões do Oracle JDK se baseia no OpenJDK 7, adicionando apenas algumas partes, como o código de implantação, que inclui a implementação do Java Plugin e do Java WebStart, bem como de terceiros. componentes de grupo como um rasterizador gráfico, alguns componentes de terceiros de código aberto, como o Rhino, e alguns fragments aqui e acolá, como documentação adicional ou fonts de terceiros. Seguindo em frente, nossa intenção é abrir o código-fonte de todas as partes do Oracle JDK, exceto aquelas que consideramos resources comerciais como JRockit Mission Control (ainda não disponível no Oracle JDK) e replace componentes de terceiros com alternativas de código aberto para alcançar paridade mais próxima entre as bases de código.

Dependendo da versão usada, a VM pode diferir: Correspondência entre as versões Sun / Oracle JDK, OpenJDK e HotSpot VM

  • JVM é Java Virtual Machine – a JVM na verdade executa o bytecode de Java.
  • JDK é Java Developer Kit – o JDK é o que você precisa para compilar o código-fonte Java.
  • JRE é Java Runtime Environment – é o que você precisa para executar um programa Java e contém uma JVM, entre outras coisas.

O OpenJDK é uma implementação específica do JDK.

JDK (Java Development Kit)

O Java Developer Kit contém ferramentas necessárias para desenvolver os programas Java e o JRE para executar os programas. As ferramentas incluem o compilador (javac.exe), o iniciador de aplicativos Java (java.exe), o Appletviewer, etc…

O compilador converte código java em código de bytes. O ativador de aplicativos Java abre um JRE, carrega a class e chama seu método principal.

Você precisa do JDK, se quiser escrever seus próprios programas e compilá-los. Para executar programas java, o JRE é suficiente.

O JRE é direcionado para execução de arquivos Java

Exemplo: JRE = JVM + Java Pacotes Classes (como util, math, lang, awt, swing etc) + bibliotecas de tempo de execução.

O JDK é voltado principalmente para o desenvolvimento de java. Ou seja, você pode criar um arquivo Java (com a ajuda de pacotes Java), compilar um arquivo Java e executar um arquivo java.

JRE (Java Runtime Environment)

O Java Runtime Environment contém JVM, bibliotecas de classs e outros arquivos de suporte. Ele não contém nenhuma ferramenta de desenvolvimento, como compilador, depurador, etc. Na verdade, a JVM executa o programa e usa as bibliotecas de classs e outros arquivos de suporte fornecidos no JRE. Se você quer rodar qualquer programa java, você precisa ter o JRE instalado no sistema

A Java Virtual Machine fornece uma maneira independente de plataforma de executar código; Isso significa compilar uma vez em qualquer máquina e executá-la em qualquer lugar (qualquer máquina).

JVM (Java Virtual Machine)

Como todos sabemos quando compilamos um arquivo Java, a saída não é um ‘exe’, mas é um arquivo ‘.class’. O arquivo ‘.class’ consiste em códigos de byte Java que são compreensíveis pela JVM. A Java Virtual Machine interpreta o código de byte no código de máquina, dependendo da combinação de sistema operacional e hardware subjacente. Ele é responsável por todas as coisas, como garbage collection, verificação de limites de matriz, etc … A JVM depende da plataforma.

A JVM é chamada de “virtual” porque fornece uma interface de máquina que não depende do sistema operacional subjacente e da arquitetura de hardware da máquina. Essa independência do hardware e do sistema operacional é uma pedra angular do valor write-once run-anywhere dos programas Java.

Existem diferentes implementações de JVM que estão lá. Eles podem diferir em termos de desempenho, confiabilidade, velocidade, etc. Essas implementações serão diferentes nas áreas onde a especificação Java não menciona como implementar os resources, como o processo de garbage collection funciona depende da JVM, a especificação Java não definir qualquer maneira específica de fazer isso.

Uma máquina virtual Java (JVM) é uma máquina virtual que pode executar o bytecode Java. É o componente de execução de código da plataforma de software Java.

O Java Development Kit (JDK) é um produto da Oracle Corporation destinado a desenvolvedores Java. Desde a introdução do Java, ele é de longe o Kit de Desenvolvimento de Software Java (SDK) mais utilizado.

Java Runtime Environment , também é conhecido como Java Runtime, Runtime Environment

O OpenJDK (Open Java Development Kit) é uma implementação livre e de código aberto da linguagem de programação Java. É o resultado de um esforço que a Sun Microsystems iniciou em 2006. A implementação está licenciada sob a GNU General Public License (GPL) com uma exceção de vinculação.

Simplesmente:

JDK (Java Development Kit):

  • contém ferramentas necessárias para desenvolver os programas Java.
  • Você precisa do JDK, se quiser escrever seus próprios programas e compilá-los.
  • O JDK é voltado principalmente para o desenvolvimento de java.

JRE (Java Runtime Environment)

O Java Runtime Environment contém JVM, bibliotecas de classs e outros arquivos de suporte. O JRE é destinado à execução de arquivos Java.

JVM (Java Virtual Machine)

A JVM interpreta o código de byte no código da máquina, dependendo da combinação do sistema operacional e do hardware subjacente. Ele é responsável por todas as coisas, como garbage collection, verificação de limites de array, etc … O Java Virtual Machine fornece uma maneira independente de plataforma de executar código.

JVM é o código Java da máquina virtual executado em

O JRE é o ambiente (bibliotecas padrão e JVM) requerido para executar aplicativos Java

JDK é o JRE com ferramentas e documentação para desenvolvedores

O OpenJDK é uma versão de código aberto do JDK, ao contrário do JDK comum de propriedade da Oracle

JDK – Compila java para Byte Code. Consiste em depuradores, compiladores etc.

 javac file.java // Is executed using JDK 

JVM – Executa o código de byte. A JVM é aquela que torna a plataforma java independente. Mas a JVM varia para plataformas.

JRE – JVM junto com bibliotecas de tempo de execução java para executar programas java.

Outro aspecto que vale a pena mencionar:

JDK (kit de desenvolvimento java)

Você precisará disso para fins de desenvolvimento, como o nome sugere.

Por exemplo: uma empresa de software terá o JDK instalado em seu computador porque precisará desenvolver um novo software que envolva também a compilation e execução de seus programas Java.

Então podemos dizer que JDK = JRE + JVM.

JRE (ambiente de tempo de execução java)

É necessário executar programas Java. Você não pode compilar programas Java com ele.

Por exemplo: um usuário regular de computador que deseja executar alguns jogos on-line precisará do JRE em seu sistema para executar programas Java.

JVM (máquina virtual java)

Como você deve saber, execute os bytecodes. Isso torna a plataforma Java independente porque executa o arquivo .class que você obtém depois de compilar o programa Java, independentemente de compilá-lo no Windows, Mac ou Linux.

Abra o JDK

Bem, como eu disse acima. Agora, o JDK é feito por empresas diferentes, uma delas que é de código aberto e gratuita para uso público é o OpenJDK, enquanto outras são o JRockit JDK da Oracle Corporation ou o IBM JDK.

No entanto, todos podem parecer iguais para o usuário geral.

Conclusão

Se você for um programador Java, precisará do JDK em seu sistema e este pacote includeá JRE e JVM também, mas se você for um usuário normal que gosta de jogar jogos on-line, precisará do JRE e este pacote não terá o JDK nele. .

Em outras palavras, JDK é o avô JRE é pai e JVM é o filho deles.

JRE – significa Java run-time e é necessário para executar o aplicativo Java.

JDK – significa kit de desenvolvimento Java e fornece ferramentas para desenvolver programas Java, por exemplo, compilador Java. Também contém o JRE.

JVM – significa máquina virtual Java e é o processo responsável pela execução do aplicativo Java.

JIT – significa compilation Just In Time e ajuda a aumentar o desempenho do aplicativo Java convertendo o código de byte Java em código nativo quando o limite determinado cruzado, ou seja, principalmente o código ativo, é convertido em código nativo.

Java é a linguagem e inclui uma syntax estrita e fortemente tipada com a qual você deve estar muito familiarizado até agora.

A Plataforma Java 2, Standard Edition, também conhecida como J2SE, referiu-se à plataforma e incluiu as classs nos pacotes java.lang e java.io, entre outras. Foi o bloco de construção em que os aplicativos Java foram desenvolvidos.

Uma Java Virtual Machine, ou JVM, é uma máquina virtual de software que executa código Java compilado. Como o código Java compilado é meramente bytecode, a JVM é responsável por compilar esse bytecode para o código da máquina antes de executá-lo. (Isso geralmente é chamado de Compilador Just In Time ou Compilador JIT.) A JVM também cuida do gerenciamento de memory para que o código do aplicativo não precise.

O Java Development Kit, ou JDK, foi e continua sendo a parte do software que os desenvolvedores Java usam para criar aplicativos Java. Ele contém um compilador de linguagem Java, um gerador de documentação, ferramentas para trabalhar com código nativo e (normalmente) o código-fonte Java para a plataforma para ativar as classs de plataforma de debugging.

O Java Runtime Environment, ou JRE, foi e continua sendo a parte de download de usuários finais de software para executar aplicativos Java compilados. Inclui uma JVM, mas não contém nenhuma das ferramentas de desenvolvimento incluídas no JDK. O JDK, no entanto, contém um JRE.

Em palavras simples:

JVM: Uma especificação que descreve o caminho / resources para executar um programa java. Na verdade, executa o código de byte e torna a plataforma java independente. Ao fazê-lo, é diferente para diferentes plataformas. JVM para Windows não pode funcionar como JVM para UNIX.

JRE: Implementação da JVM. (JVM + bibliotecas de tempo de execução)

JDK: JRE + compilador java e outras ferramentas essenciais para construir um programa java a partir do zero

JVM : isso realmente significa o interpretador de código de bytes. É dependente da plataforma. Por exemplo: na plataforma Windows, o processo ‘ java.exe ‘ ou ‘ javaw.exe ‘ é o processo jvm.

JDK : é um kit de ferramentas contendo bibliotecas e utilitários necessários para desenvolver e executar o programa / aplicativo java

JRE : é o ambiente de execução para um aplicativo java.ie, ele suporta apenas dependencies de tempo de execução, incluindo o jvm para o programa compilado. Se quisermos compilar um programa java, precisamos do jdk.

JVM: máquina virtual de java. diz à máquina o que fazer com o Código Java. Você não pode fazer o download da JVM como está. Ele vem embalado em algum outro componente.

JRE: Algum outro componente referido acima é o JRE. É JVM + outros jars para criar ambiente de tempo de execução

JDK: contém o JRE (que, por sua vez, contém a JVM). Depois de obter o JDK, não será necessário instalar o JRE e a JVM separadamente. Ele contém o compilador que compila seus arquivos .java para arquivos .class

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 do java pode ser executado. As JVMs estão disponíveis para muitas plataformas de hardware e software.

JRE

JRE é um acrônimo para Java Runtime Environment.Ele é usado para fornecer o ambiente de tempo de execução.É a implementação da JVM.Ele existe fisicamente.Ele contém um conjunto de bibliotecas + outros arquivos que a JVM utiliza em tempo de execução.

JDK

JDK é um acrônimo para Java Development Kit.Ele existe fisicamente.Ele contém ferramentas de desenvolvimento JRE +.

Link: – http://www.javatpoint.com/difference-between-jdk-jre-and-jvm

JVM Java Virtual Machine, na verdade, executa o bytecode java. É o bloco de execução na plataforma JAVA. Converte o bytecode para o código da máquina.

JRE Java Runtime Environment, fornece os requisitos mínimos para executar um aplicativo Java; consiste na Java Virtual Machine (JVM), classs principais e arquivos de suporte.

JDK Java Development Kit, tem todas as ferramentas para desenvolver seu software aplicativo. É como JRE + JVM

O Open JDK é uma implementação gratuita e de código aberto da Plataforma Java.

Em termos leigos: – JDK = JRE + Ferramentas de desenvolvimento / debugging , onde o JDK é nosso pacote completo para trabalhar com Java, desde a criação da compilation até a execução. Por outro lado, o JRE é apenas o código (Byte Code).

Nota: – Se estivermos instalando o JDK ou o JRE, a JVM virá junto com os pacotes e a JVM será a parte em que o compilador JIT converterá o código de byte no código específico da máquina.

Basta ler o artigo sobre JDK, JRE, JVM e JIT

JDK : O pacote completo que você precisa para escrever e executar o código java

OpenJDK : Uma implementação independente do JDK para torná-lo muito melhor

JVM : Converte código Java em bytecode e fornece as especificações que informam como um código Java deve ser compilado, carregado, verificado, verificado quanto a erros e executado.

JRE : Implementação da JVM com a qual algumas bibliotecas Java são usadas para executar o programa

O JRE executa o aplicativo, mas a JVM lê as instruções linha por linha, portanto, é o interpretador.

JDK = JRE + Ferramentas de desenvolvimento

JRE = JVM + Classes de Biblioteca