web-dev-qa-db-fra.com

Quelle est la différence entre JVM, JDK, JRE et OpenJDK?

Quelle est la différence entre JVM, JDK, JRE & OpenJDK?

Je programmais en Java et j'ai rencontré ces expressions, quelles sont les différences entre elles?

310
Alireza

JVM

La machine virtuelle Java (JVM) est la machine virtuelle qui exécute les bytecodes Java. La JVM ne comprend pas le code source Java; C'est pourquoi vous avez besoin de compiler vos fichiers *.Java pour obtenir les fichiers *.class contenant les bytecodes compris par la machine virtuelle Java. C'est aussi l'entité qui permet à Java d'être un "langage portable" ( écrire une fois, exécuter n'importe où ). En effet, il existe des implémentations spécifiques de la machine virtuelle Java pour différents systèmes (Windows, Linux, macOS, voir la liste de Wikipédia ), l’objectif est que, avec les mêmes bytecodes, ils donnent tous les mêmes résultats.

JDK et JRE

Pour expliquer la différence entre JDK et JRE, le mieux est de lire le documentation Oracle et de consulter le diagramme:

Java Runtime Environment (JRE)

L'environnement d'exécution Java (JRE) fournit les bibliothèques, la machine virtuelle Java et d'autres composants permettant d'exécuter des applets et des applications écrites dans le langage de programmation Java. En outre, deux technologies de déploiement clés font partie de JRE: le plug-in Java, qui permet aux applets de s'exécuter dans les navigateurs courants; et Java Web Start, qui déploie des applications autonomes sur un réseau. C'est également la base des technologies de la plate-forme Java 2, édition Enterprise (J2EE) pour le développement et le déploiement de logiciels d'entreprise. JRE ne contient pas d'outils et d'utilitaires tels que des compilateurs ou des débogueurs pour développer des applets et des applications.

Java Development Kit (JDK)

Le JDK est un sur-ensemble du JRE et contient tout ce qui se trouve dans le JRE, ainsi que des outils tels que les compilateurs et les débogueurs nécessaires au développement d'applets et d'applications.

Notez que Oracle n'est pas le seul à fournir des JDK.

OpenJDK

OpenJDK est une implémentation à source ouverte du JDK et la base du JDK Oracle. Il n'y a presque pas de différence entre le JDK Oracle et l'OpenJDK.

Les différences sont indiquées dans ce blog :

Q: Quelle est la différence entre le code source trouvé dans le référentiel OpenJDK et le code que vous utilisez pour créer le JDK Oracle?

R: C’est très proche. Notre processus de création des versions JDK d’Oracle s’appuie sur OpenJDK 7 en n’ajoutant que quelques éléments, comme le code de déploiement, qui inclut l’implémentation par Oracle du plug-in Java et de Java WebStart, ainsi que des tiers à sources fermées. des composants tiers comme un rasterizer graphique, certains composants tiers open source, tels que Rhino, et quelques éléments ici et là, tels que de la documentation supplémentaire ou des polices tierces. À l’avenir, notre intention est d’ouvrir en open source tous les éléments du JDK Oracle, à l’exception de ceux que nous considérons comme des fonctionnalités commerciales telles que JRockit Mission Control (non encore disponible dans Oracle JDK), et de remplacer les composants tiers encombrés par des alternatives open source pour obtenir une parité plus étroite. entre les bases de code.

Mise à jour pour JDK 11 - Un article de Donald Smith tente de lever l’ambiguïté sur la différence entre le JDK Oracle et le logiciel OpenJDK d’Oracle: https://blogs.Oracle.com/Java-platform-group/Oracle-jdk-releases-for- Java-11-and-later

356
alain.janinm

La machine virtuelle Java est la machine virtuelle Java. Elle exécute en réalité ByteCode Java.

JRE est l'environnement d'exécution Java. Il contient, entre autres, une machine virtuelle Java et vous permet d'exécuter un programme Java.

JDK est le kit de développement Java - c'est le JRE, mais avec javac (ce dont vous avez besoin pour compiler le code source Java) et d'autres outils de programmation ajoutés.

OpenJDK est une implémentation spécifique de JDK.

83
hvgotcodes

JDK (Kit de développement Java)

Java Developer Kit contient les outils nécessaires pour développer les programmes Java et JRE pour les exécuter. Les outils incluent compilateur (javac.exe), programme de lancement d’applications Java (Java.exe), Appletviewer, etc.

Le compilateur convertit le code Java en code octet. Le programme de lancement d'applicatifs Java ouvre un JRE, charge la classe et appelle sa méthode principale.

Vous avez besoin de JDK, si du tout vous voulez écrire vos propres programmes et les compiler. Pour exécuter des programmes Java, JRE est suffisant.

JRE est ciblé pour l'exécution de fichiers Java

c'est-à-dire JRE = JVM + Java Packages Classes (comme util, math, lang, awt, swing, etc.) + bibliothèques d'exécution.

JDK est principalement destiné au développement Java. C'est à dire. Vous pouvez créer un fichier Java (à l'aide de packages Java), compiler un fichier Java et exécuter un fichier Java.

JRE (Java Runtime Environment)

Java Runtime Environment contient JVM, des bibliothèques de classes et d'autres fichiers de support. Il ne contient aucun outil de développement tel qu'un compilateur, un débogueur, etc. En réalité, JVM exécute le programme et utilise les bibliothèques de classes et autres fichiers de support fournis dans JRE. Si vous souhaitez exécuter un programme Java, vous devez avoir installé JRE sur le système.

La machine virtuelle Java fournit une méthode d'exécution du code indépendante de la plate-forme. Cela signifie que compiler une fois dans n’importe quelle machine et l’exécuter n’importe où (n’importe quelle machine).

JVM (Java Virtual Machine)

Comme nous le savons tous lorsque nous compilons un fichier Java, la sortie n’est pas un fichier "exe", mais un fichier ".class". Le fichier ‘.class’ est constitué de codes d’octets Java compréhensibles par JVM. Java Virtual Machine interprète le code d'octet en code machine en fonction du système d'exploitation sous-jacent et de la combinaison matérielle. Il est responsable de toutes les tâches telles que la récupération de place, la vérification des limites de tableaux, etc. La machine virtuelle Java dépend de la plate-forme.

La machine virtuelle Java est appelée "virtuelle" car elle fournit une interface machine qui ne dépend pas du système d'exploitation sous-jacent et de l'architecture matérielle de la machine. Cette indépendance par rapport au matériel et au système d'exploitation est la pierre angulaire de la valeur d'écriture unique des programmes Java.

Il existe différentes implémentations JVM. Celles-ci peuvent différer en termes de performances, de fiabilité, de rapidité, etc. Ces implémentations diffèrent dans les domaines où la spécification Java ne mentionne pas comment implémenter les fonctionnalités, comme le fonctionnement du processus de récupération de place dépend de la JVM, les spécifications Java ne le sont pas. définir une manière spécifique de le faire.

45
user25226

A machine virtuelle Java (JVM) est une machine virtuelle pouvant exécuter le ByteCode Java. C'est le composant d'exécution du code de la plateforme logicielle Java.

Java Development Kit (JDK) est un produit Oracle Corporation destiné aux développeurs Java. Depuis l'introduction de Java, il est de loin le kit de développement de logiciel Java (SDK) le plus utilisé.

Java Runtime Environment, est également appelé Java Runtime, Runtime Environment

OpenJDK (Kit de développement Open Java) est une implémentation libre et à source ouverte du langage de programmation Java. C’est le résultat d’un effort lancé par Sun Microsystems en 2006. L’implémentation est concédée sous la licence GNU General Public License (GPL) avec une exception de liaison.

23
nidhin

JDK (Kit de développement Java):

  • contient les outils nécessaires pour développer les programmes Java.
  • Vous avez besoin de JDK, si du tout vous voulez écrire vos propres programmes et les compiler.
  • JDK est principalement destiné au développement Java.

JRE (environnement d'exécution Java)

Java Runtime Environment contient JVM, des bibliothèques de classes et d'autres fichiers de support. JRE est destiné à l'exécution de fichiers Java.

JVM (machine virtuelle Java)

La machine virtuelle Java interprète le code d'octet dans le code machine en fonction de la combinaison système d'exploitation et matériel sous-jacente. Il est responsable de toutes les tâches telles que la récupération de place, la vérification des limites de tableaux, etc. Java Virtual Machine fournit un moyen d’exécuter du code indépendant de la plate-forme.

15
A_BOSS

JVM est la machine virtuelle que le code Java exécute sur

JRE est l'environnement (bibliothèques standard et JVM) requis pour exécuter des applications Java.

JDK est le JRE avec les outils de développement et la documentation

OpenJDK est une version open source du JDK, contrairement au JDK commun appartenant à Oracle.

13
Garrett Hall

JDK - Compile Java en ByteCode. Se compose de débogueurs, compilateurs, etc.

javac file.Java // Is executed using JDK

JVM - Exécute le code d'octet. JVM est celle qui rend la plate-forme Java indépendante. Mais JVM varie pour les plates-formes.

JRE - JVM avec les bibliothèques d'exécution Java pour exécuter les programmes Java.

6
bharanitharan

Un autre aspect à noter:

JDK (kit de développement Java)

Vous en aurez besoin à des fins de développement, comme son nom l'indique.

Par exemple: une société de logiciels installera JDK sur son ordinateur car elle devra développer un nouveau logiciel impliquant la compilation et l'exécution de ses programmes Java.

Nous pouvons donc dire que JDK = JRE + JVM.

JRE (environnement d'exécution Java)

Il est nécessaire d'exécuter des programmes Java. Vous ne pouvez pas compiler des programmes Java avec cela.

Par exemple: un utilisateur régulier qui souhaite exécuter des jeux en ligne aura besoin de JRE dans son système pour exécuter des programmes Java.

JVM (machine virtuelle Java)

Comme vous le savez peut-être, lancez les bytecodes. Elle rend la plate-forme Java indépendante car elle exécute le fichier .class que vous obtenez après avoir compilé le programme Java, que vous le compiliez sous Windows, Mac ou Linux.

Ouvrir JDK

Eh bien, comme je l'ai dit ci-dessus. Maintenant, JDK est fabriqué par différentes sociétés, dont OpenJDK, l’un d’entre eux étant libre et gratuit, tandis que d’autres sont le JDK JRockit ou le JDK IBM d’Oracle Corporation.

Cependant, ils peuvent tous sembler identiques aux utilisateurs généraux.

Conclusion

Si vous êtes un programmeur Java, vous aurez besoin de JDK dans votre système et ce paquet inclura également les JRE et JVM, mais si vous êtes un utilisateur normal qui aime jouer à des jeux en ligne, vous n'aurez besoin que de JRE et ce paquet ne contiendra pas JDK. .

En d'autres termes, JDK est le grand-père JRE est le père et JVM est leur fils.

4
Mrinal

Java est le langage et inclut une syntaxe stricte et fortement typée avec laquelle vous devriez maintenant être très familier.

La plate-forme Java 2, Standard Edition, également appelée J2SE, fait référence à la plate-forme et inclut les classes des packages Java.lang et Java.io, entre autres. C'était le bloc de construction sur lequel les applications Java ont été construites.

Une machine virtuelle Java, ou JVM, est une machine virtuelle logicielle qui exécute du code Java compilé. Étant donné que le code Java compilé est simplement du bytecode, la machine virtuelle Java est chargée de la compilation de ce bytecode en code machine avant de l'exécuter. (Ceci est souvent appelé le compilateur Just In Time ou le compilateur JIT.) La machine virtuelle Java prend également en charge la gestion de la mémoire, de sorte que le code de l’application n’est pas obligé.

Le kit de développement Java, ou JDK, était et reste le logiciel que les développeurs Java utilisent pour créer des applications Java. Il contient un compilateur en langage Java, un générateur de documentation, des outils permettant de travailler avec du code natif et (généralement) le code source Java de la plate-forme pour permettre le débogage de ses classes.

Java Runtime Environment, ou JRE, était et reste le logiciel que les utilisateurs finaux téléchargent pour exécuter des applications Java compilées. Il inclut une machine virtuelle Java mais ne contient aucun des outils de développement fournis dans le JDK. Le JDK, cependant, contient un JRE.

3
Koray Tugay

JVM: Une spécification décrivant la manière/les ressources pour exécuter un programme Java. Exécute réellement le code d'octet et rend la plate-forme Java indépendante. Ce faisant, il diffère d’une plate-forme à l’autre. JVM pour Windows ne peut pas fonctionner en tant que JVM pour UNIX.

JRE: Implémentation de la machine virtuelle Java. (Bibliothèques JVM + run-time)

JDK: Compilateur JRE + Java et autres outils essentiels pour créer un programme Java à partir de zéro

3
user2807418

JVM: cela signifie en fait l'interpréteur de code octet. Il dépend de la plate-forme. Par exemple, dans la plate-forme Windows, le processus ' Java.exe ' ou ' javaw.exe ' correspond au processus jvm.

JDK: est une boîte à outils contenant les bibliothèques et les utilitaires nécessaires au développement et à l'exécution de programmes/applications Java

JRE: est l'environnement d'exécution pour une application Java. Elle ne prend en charge que les dépendances d'exécution, y compris jvm pour le programme compilé. Si nous voulons compiler un programme Java, nous avons besoin de jdk.

2
Tom Sebastian

JVM

JVM (Java Virtual Machine) est une machine abstraite. C'est une spécification qui fournit un environnement d'exécution dans lequel le bytecode Java peut être exécuté. Les machines virtuelles sont disponibles pour de nombreuses plates-formes matérielles et logicielles.

JRE

JRE est un acronyme pour Java Runtime Environment.Il est utilisé pour fournir un environnement d'exécution.Il est l'implémentation de la machine virtuelle Java.Il existe physiquement.Il contient un ensemble de bibliothèques + d'autres fichiers que JVM utilise lors de l'exécution.

JDK

JDK est un acronyme pour Java Development Kit.Il existe physiquement.Il contient des outils de développement JRE +.

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

2
Nikhil Kumar

JVM: machine virtuelle de Java. indique à la machine quoi faire avec le code Java. Vous ne pouvez pas télécharger la machine virtuelle Java telle quelle. Il vient emballé dans un autre composant.

JRE: Un autre composant mentionné ci-dessus est le JRE. C'est la JVM + d'autres jars pour créer un environnement d'exécution

JDK: contient JRE (qui contient à son tour JVM). Une fois que vous obtenez JDK, vous n'avez pas besoin d'installer JRE et JVM séparément. Il contient un compilateur qui compile vos fichiers .Java en fichiers .class

2
Jain

JVM est abrégé en Java Virtual Machine, JVM est le composant principal de l'architecture Java. JVM est écrit en langage de programmation C. Le compilateur Java produit le code octet pour la machine virtuelle Java. La JVM lit le code d'octet en vérifiant le code d'octet et en le liant à la bibliothèque.

JRE est abrégé en Java Runtime Environment. c'est fournir l'environnement au moment de l'exécution. C'est physiquement exister. Il contient JVM + ensemble de bibliothèques (jar) + autres fichiers.

JDK est abrégé en Java Development Kit. c'est développer des applications Java. Et aussi le débogage et la surveillance des applications Java. JDK contient des outils de développement JRE + (javac, Java)

OpenJDK OpenJDK est une version open source de Sun JDK. Oracle JDK est le JDK officiel de Sun.

1

JDK: Le package complet dont vous avez besoin pour écrire et exécuter du code Java

OpenJDK: Une implémentation indépendante de JDK pour l'améliorer

JVM: Convertit le code Java en bytecode et fournit les spécifications indiquant comment un code Java doit être compilé, chargé, vérifié, vérifié pour les erreurs et exécuté.

JRE: Implémentation de la machine virtuelle Java avec laquelle certaines bibliothèques Java sont utilisées pour exécuter le programme

0
dhirwan

En termes simples: - JDK = JRE + Outils de développement/débogage , où JDK est notre package complet pour travailler avec Java, de la création à la compilation jusqu'à son exécution. Par contre, JRE est juste en train d’exécuter du code (Byte Code).

Remarque: - Que nous installions JDK ou JRE, JVM serait livré avec les packages et JVM est la partie où le compilateur JIT convertit le code octet en code spécifique à la machine.

Il suffit de lire l’article sur JDK, JRE, JVM et JIT

0
AugustRush

JVM Java Virtual Machine, exécute en réalité le bytecode Java. C'est le bloc d'exécution sur la plate-forme Java. Il convertit le bytecode en code machine.

JRE Java Runtime Environment fournit la configuration minimale requise pour l'exécution d'une application Java. Il comprend la machine virtuelle Java (JVM), les classes principales et les fichiers de support.

JDK Java Development Kit, il contient tous les outils pour développer votre logiciel d’application. C'est comme JRE + JVM

Open JDK est une implémentation libre et open source de la plate-forme Java.

0
Ankur Anandapu

JRE exécute l'application, mais JVM lit les instructions ligne par ligne pour en faire un interprète.

JDK= JRE + Outils de développement

JRE= JVM + Classes de bibliothèque

0
KIBOU Hassan