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

Réponses:

375

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 devez compiler vos *.javafichiers pour obtenir des *.classfichiers contenant les bytecodes compris par la JVM. C'est également 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 JVM pour différents systèmes (Windows, Linux, macOS, voir la liste Wikipedia ), le but est qu'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 la documentation Oracle et de consulter le schéma:

Environnement d'exécution Java (JRE)

L'environnement d'exécution Java (JRE) fournit les bibliothèques, la machine virtuelle Java et d'autres composants pour exécuter des applets et des applications écrites dans le langage de programmation Java. De plus, deux technologies de déploiement clés font partie du JRE: le plug-in Java, qui permet aux applets de s'exécuter dans les navigateurs populaires; et Java Web Start, qui déploie des applications autonomes sur un réseau. Il constitue également le fondement des technologies de la plate-forme Java 2, Enterprise Edition (J2EE) pour le développement et le déploiement de logiciels d'entreprise. Le 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.

Kit de développement Java (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 pour développer des applets et des applications.

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

OpenJDK

OpenJDK est une implémentation open source du JDK et la base du Oracle JDK. Il n'y a presque pas de différence entre Oracle JDK et 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 construction pour Oracle JDK publie s'appuie sur OpenJDK 7 en ajoutant seulement quelques éléments, comme le code de déploiement, qui comprend la mise en œuvre d'Oracle du plug-in Java et de Java WebStart, ainsi que certains tiers de source fermée des composants tiers comme un rasterizer graphique, des composants tiers open source, comme Rhino, et quelques morceaux ici et là, comme de la documentation supplémentaire ou des polices tierces. À l'avenir, notre intention est d'ouvrir 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 atteindre une parité plus étroite. entre les bases de code.

Mise à jour pour JDK 11 - Un article de Donald Smith essaie de lever toute ambiguïté entre Oracle JDK et OpenJDK d'Oracle: https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11- et ensuite

alain.janinm
la source
@ alain.janinm, Alors, choisiriez-vous OracleJDK ou OpenJDK pour votre développement?
Pacerier
@Pacerier J'ai l'habitude d'utiliser OracleJDK au travail mais je n'ai rien contre OpenJDK :) En fait je n'ai jamais trébuché sur une différence concrète qui me fasse choisir entre eux. Si vous préférez l'open source et n'avez pas besoin d'utiliser une licence propriétaire, optez pour OpenJDK.
alain.janinm
1
Veuillez me dire si j'ai raison sur les points suivants: Fondamentalement, aucune application Java réelle ne peut être exécutée sans JRE. Ainsi, tous les téléchargements (peut-être à l'exception de certaines choses exotiques pour les développeurs) contiennent à la fois JVM et JRE (sinon le JDK superset)?
Mads Skjern
8
@MadsSkjern Oui, vous avez besoin d'un JRE pour exécuter l'application Java. Mais lorsque vous téléchargez une application Java, elle ne vient pas avec le JRE, il s'attend à ce que vous en ayez une installée sur votre ordinateur.
alain.janinm
92

JVM est la machine virtuelle Java - elle exécute en fait Java ByteCode.

JRE est l'environnement d'exécution Java - il contient, entre autres, une machine virtuelle Java et c'est ce dont vous avez besoin pour exécuter un programme Java.

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

OpenJDK est une implémentation JDK spécifique.

hvgotcodes
la source
3
Probablement parce que vous n'avez pas mentionné le other thingscontenu d'une JVM. Que sont-ils ? Cet article répond-il pleinement à cette question - javabeat.net/what-is-the-difference-between-jrejvm-and-jdk
Erran Morad
OpenJDK contient JVM qui est l'une des implémentations de la spécification JVM. Oracle JDK contient une autre implémentation de la spécification JVM
AKh
46

JDK (Java Development Kit)

Java Developer Kit contient les outils nécessaires pour développer les programmes Java et JRE pour exécuter les programmes. Les outils incluent le compilateur (javac.exe), le lanceur d'applications Java (java.exe), Appletviewer, etc…

Le compilateur convertit le code java en code octet. Le lanceur d'applications Java ouvre un JRE, charge la classe et appelle sa méthode principale.

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

JRE est destiné à l'exécution de fichiers Java

ie 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 que 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 prise en charge. Il ne contient aucun outil de développement tel que compilateur, débogueur, etc. En fait, JVM exécute le programme et utilise les bibliothèques de classes et autres fichiers de prise en charge fournis dans JRE. Si vous souhaitez exécuter un programme Java, vous devez avoir installé JRE dans le système

La machine virtuelle Java fournit une manière indépendante de la plate-forme d'exécuter du code; Cela signifie compiler une fois sur n'importe quelle machine et l'exécuter n'importe où (n'importe quelle machine).

JVM (machine virtuelle Java)

Comme nous le savons tous lorsque nous compilons un fichier Java, la sortie n'est pas un «exe» mais un fichier «.class». Le fichier «.class» se compose de codes d'octets Java compréhensibles par JVM. La machine virtuelle Java interprète le code octet dans le code machine en fonction du système d'exploitation sous-jacent et de la combinaison matérielle. Il est responsable de toutes les choses comme la récupération de place, la vérification des limites des tableaux, etc… JVM dépend de la plate-forme.

La JVM 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 vis-à-vis du matériel et du système d'exploitation est la pierre angulaire de la valeur en écriture unique exécutable n'importe où des programmes Java.

Il existe différentes implémentations JVM. Celles-ci peuvent différer dans des domaines tels que les performances, la fiabilité, la vitesse, etc. définir une manière spécifique de le faire.

user25226
la source
23

Une machine virtuelle Java (JVM) est une machine virtuelle qui peut exécuter Java ByteCode. Il s'agit du composant d'exécution de code de la plate-forme logicielle Java.

Le kit de développement Java (JDK) est un produit Oracle Corporation destiné aux développeurs Java. Depuis son introduction, Java est de loin le kit de développement logiciel (SDK) Java le plus utilisé.

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

OpenJDK (Open Java Development Kit) est une implémentation gratuite et open source du langage de programmation Java. C'est le résultat d'un effort que Sun Microsystems a commencé en 2006. L'implémentation est sous licence GNU General Public License (GPL) avec une exception de liaison.

nidhin
la source
Bonne réponse, mais une précision. D'autres que Oracle produisent des JDK - par exemple IBM pour AIX et z / OS, HP pour HP-UX, etc.
Trent Gray-Donald
16

JVM est le code Java de la machine virtuelle exécuté sur

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

JDK est le JRE avec des outils de développement et des documentations

OpenJDK est une version open source du JDK, contrairement au JDK commun détenu par Oracle

Garrett Hall
la source
15

JDK (Java Development Kit):

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

JRE (Java Runtime Environment)

Java Runtime Environment contient JVM, des bibliothèques de classes et d'autres fichiers de prise en charge. 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 du système d'exploitation sous-jacent et de la combinaison matérielle. Il est responsable de toutes les choses comme le ramasse-miettes, la vérification des limites des tableaux, etc… Java Virtual Machine fournit une manière indépendante de la plate-forme d'exécuter du code.

UN PATRON
la source
6

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

javac file.java // Is executed using JDK

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

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

bharanitharan
la source
4

Un autre aspect mérite d'être mentionné:

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 aura JDK installé sur son ordinateur car elle devra développer de nouveaux logiciels qui impliquent également de compiler et d'exécuter leurs programmes Java.

On peut donc dire que JDK = JRE + JVM.

JRE (environnement d'exécution java)

Il est nécessaire pour exécuter des programmes Java. Vous ne pouvez pas compiler de programmes Java avec.

Par exemple: un utilisateur d'ordinateur ordinaire qui souhaite exécuter des jeux en ligne aura alors besoin de JRE dans son système pour exécuter des programmes Java.

JVM (machine virtuelle java)

Comme vous le savez peut-être, il exécute les bytecodes. Il rend la plate-forme Java indépendante car il exécute le .classfichier que vous obtenez après avoir compilé le programme Java, que vous le compiliez sur Windows, Mac ou Linux.

Ouvrir JDK

Eh bien, comme je l'ai dit plus haut. Maintenant, JDK est fabriqué par différentes sociétés, l'une d'entre elles qui se trouve être une source ouverte et gratuite pour un usage public est OpenJDK, tandis que d'autres sont JRockit JDK ou IBM JDK d'Oracle Corporation.

Cependant, ils peuvent tous sembler identiques à l'utilisateur général.

Conclusion

Si vous êtes un programmeur Java, vous aurez besoin de JDK dans votre système et ce package comprendra également 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 package ne contiendra pas de JDK. .

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

Mrinal
la source
9
Votre message est erroné partout. JRE (environnement d'exécution) contient la JVM (machine virtuelle) et la bibliothèque de classes Java. JDK contient JRE et un tas d'outils de programmation pour les développeurs. en.wikipedia.org/wiki/JDK en.wikipedia.org/wiki/Java_virtual_machine Répondez à mon commentaire lorsque vous le corrigez et je vais supprimer le downvote.
nhahtdh
@nhahtdh peut-on dire: jdk est un package indépendant, peut être téléchargé, installé séparément. Jre = certaines classes + plugin java + JVM
Prakash Pandey
3

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

Java 2 Platform, Standard Edition, également connu sous le nom de J2SE, faisait référence à la plate-forme et incluait les classes dans les packages java.lang et java.io, entre autres. C'est 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é. Comme le code Java compilé n'est qu'un bytecode, la JVM est responsable 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 afin que le code d'application n'ait pas à le faire.

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

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

Koray Tugay
la source
3

JVM: Une spécification qui décrit la manière / les ressources pour exécuter un programme java. Exécute réellement le code octet et rend la plate-forme Java indépendante. Ce faisant, c'est différent pour différentes plates-formes. JVM pour Windows ne peut pas fonctionner comme JVM pour UNIX.

JRE: Implémentation de JVM. (Bibliothèques d'exécution JVM +)

JDK: compilateur JRE + java et autres outils essentiels pour construire un programme java à partir de zéro

user2807418
la source
2

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

JDK : est une boîte à outils contenant les bibliothèques et les utilitaires nécessaires pour développer et exécuter un programme / une application java

JRE : est l'environnement d'exécution pour une application Java, il 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.

Tom Sebastian
la source
2

JVM: machine virtuelle de java. indique à la machine quoi faire avec le code Java. Vous ne pouvez pas télécharger JVM tel quel. Il est livré dans un autre composant.

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

JDK: contient JRE (qui à son tour contient 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

Jain
la source
2

JVM

JVM (Java Virtual Machine) est une machine abstraite. Il s'agit d'une spécification qui fournit un environnement d'exécution dans lequel le bytecode java peut être exécuté. Les JVM 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 l'environnement d'exécution.Il s'agit de l'implémentation de JVM.Il existe physiquement.Il contient un ensemble de bibliothèques + d'autres fichiers que JVM utilise lors de l'exécution.

JDK

JDK est l'acronyme de Java Development Kit, il existe physiquement et contient des outils de développement JRE +.

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

Nikhil Kumar
la source
1

En résumé:

  • JRE = JVM + packages Java (comme util, math, lang, awt, swing etc.) + bibliothèques d'exécution
  • JDK = JRE + Outils de développement / débogage

Si vous voulez développer en java, vous avez besoin du JDK, mais si vous voulez juste exécuter java, vous avez besoin du JRE.

Hugo Valenza M
la source
0

JVM Java Virtual Machine, exécute en fait le bytecode java. Il s'agit du bloc d'exécution sur la plateforme JAVA. Il convertit le bytecode en code machine.

JRE Java Runtime Environment, fournit les exigences minimales pour l'exécution d'une application Java; il se compose de la machine virtuelle Java (JVM), des classes principales et des fichiers de prise en charge.

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

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

Ankur Anandapu
la source
0

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.

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

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

AugustRush
la source
0

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 le rendre bien meilleur

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

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

dhirwan
la source
0

JRE exécute l'application mais JVM lit les instructions ligne par ligne, c'est donc l'interpréteur.

JDK = JRE + Outils de développement

JRE = JVM + Classes de bibliothèque

KIBOU Hassan
la source
0

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 d'octet pour JVM. JVM lisant le code d'octet vérifiant le code d'octet et liant le code avec l'ibrary.

JRE est abrégé en Java Runtime Environment . c'est fournir un environnement au moment de l'exécution. Il existe physiquement. 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 Débogage et 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.

Poorna Senani Gamage
la source