Quelle est la différence entre JDK et JRE?


Quelle est la différence entre JDK et JRE?

Quels sont leurs rôles et quand dois-je utiliser l'un ou l'autre?

 964
Author: Lii, 2009-12-15

20 answers

Le JRE est le Java Runtime Environment. C'est un paquet de tout ce qui est nécessaire pour exécuter un programme Java compilé, y compris la Machine virtuelle Java (JVM), la bibliothèque de classes Java, la commande java et d'autres infrastructures. Cependant, il ne peut pas être utilisé pour créer de nouveaux programmes.

Le JDKest le Kit de développement Java, le SDK complet pour Java. Il a tout ce que le JRE a, mais aussi le compilateur (javac) et les outils (comme javadoc et jdb). Il est capable de créer et de compiler des programmes.

Habituellement, si vous ne vous souciez que de l'exécution de programmes Java sur ordinateur, vous n'installerez que le JRE. C'est tout ce dont vous avez besoin. D'autre part, si vous prévoyez de faire de la programmation Java, vous devez installer le JDK à la place.

Parfois, même si vous ne prévoyez pas de faire de développement Java sur un ordinateur, vous avez toujours besoin du JDK installé. Par exemple, si vous déployez une application web avec JSP, vous êtes techniquement juste exécution de programmes Java dans le serveur d'applications. Pourquoi auriez-vous besoin du JDK alors? Parce que le serveur d'applications convertira JSP en servlets Java et doit utiliser le JDK pour compiler les servlets. Je suis sûr qu'il y a plus d'exemples.

 1278
Author: Pablo Santa Cruz, 2020-05-07 11:04:07

La réponse ci-dessus (par Pablo) est très juste. C'est juste de l'information supplémentaire.

Le JRE est, comme son nom l'indique, un environnement. C'est essentiellement un tas de répertoires avec des fichiers liés à Java, à savoir:

  • bin/ contient les programmes exécutables de Java. Le plus important est java (et pour Windows, javaw aussi), qui lance la JVM. Il existe également d'autres utilitaires, tels que keytool et policytool.
  • conf/ tient fichiers de configuration modifiables par l'utilisateur pour les experts Java.
  • lib/a un grand nombre de fichiers de support: certains .jar s, fichiers de configuration, fichiers de propriété, polices, traductions, certificats, etc. - toutes les" garnitures " de Java. Le plus important est modules, un fichier qui contient les fichiers .class de la bibliothèque standard Java.
  • À un certain niveau, la bibliothèque standard Java doit appeler en code natif. À cette fin, le JRE contient des .dll (Windows) ou .dylib (macOS) ou .so (Linux) fichiers sous bin/ ou lib/ avec support, code binaire natif spécifique au système.

Le JDK est aussi un ensemble de répertoires. C'est un sur-ensemble du JRE, avec quelques ajouts:

  • bin/ a été élargi avec des outils de développement. Le plus important d'entre eux est javac; d'autres sont des jar, javadoc et jshell.
  • jmods/, qui contient des fichiers JMOD pour la bibliothèque standard, a été ajouté. Ces fichiers permettent à la bibliothèque standard d'être utilisé avec jlink.
 150
Author: Carl Smotricz, 2018-10-21 17:41:29

entrez la description de l'image ici

JDK est un sur-ensemble de JRE, et contient tout ce qui se trouve dans JRE, ainsi que des outils tels que les compilateurs et les débogueurs nécessaires au développement d'applets et d'applications. JRE fournit les bibliothèques, la Machine virtuelle Java (JVM) et d'autres composants pour exécuter des applets et des applications écrites dans le langage de programmation Java.

 142
Author: Chinbold Gansukh, 2015-03-20 06:24:10

En termes simples: JDK est grand-père JRE est père et JVM est leur fils. [c'est à dire JDK > JRE > JVM ]

JDK = JRE + Outils de développement/débogage

JRE = JVM + Classes de paquets Java (comme util, math, lang, awt,swing, etc.)+bibliothèques d'exécution.

JVM = Système de chargeur de classe + zone de données d'exécution + Moteur d'exécution.

En d'autres termes, si vous êtes un programmeur Java, vous aurez besoin de JDK dans votre système et ce paquet incluez é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 paquet n'aura pas de JDK.

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 compilez votre *.fichiers java à obtenir *.fichiers de classe contenant les bytecodes compréhensibles par la JVM. 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 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 diagramme:

Java Runtime Environment (JRE)

Le Java Runtime Environment (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. En outre, deux technologies de déploiement clés font partie du JRE: Java Plug-in, 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. C'est également la base des technologies de la plate-forme Java 2, Enterprise Edition (J2EE) pour les logiciels d'entreprise développement et déploiement. 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.

Vous avez besoin d'un logiciel de développement Java.]}

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 qu'Oracle n'est pas le seul à fournir JDK.

Processus de compilation JIT (avec la permission de: Oracle la documentation)

JDK > JRE > JVM

 109
Author: Jaimin Patel, 2020-06-20 09:12:55

Du site officiel de java...

JRE (Environnement d'exécution Java):

  • C'est une implémentation de la Machine virtuelle Java* qui exécute en fait des programmes Java.
  • Java Runtime Environment est un plug-in nécessaire pour exécuter des programmes java.
  • Le JRE est plus petit que le JDK, il a donc besoin de moins d'espace disque.
  • Le JRE peut être téléchargé/pris en charge librement à partir de https://www.java.com
  • Il inclut la JVM, les bibliothèques de base et d'autres composants supplémentaires pour exécuter des applications et des applets Java.

JDK (Kit de développement Java)

  • C'est un ensemble de logiciels que vous pouvez utiliser pour développer des applications basées sur Java.
  • Le kit de développement Java est nécessaire pour développer des applications java.
  • Le JDK a besoin de plus d'espace disque car il contient le JRE ainsi que divers outils de développement.
  • Le JDK peut être téléchargé/pris en charge librement de https://www.oracle.com/technetwork/java/javase/downloads /
  • Il comprend le JRE, l'ensemble des classes API, le compilateur Java, le Webstart et les fichiers supplémentaires nécessaires pour écrire des applets et des applications Java.
 26
Author: Wanna Coffee, 2014-04-01 13:24:25

Une différence du point de vue du débogage:

Pour déboguer dans des classes système Java telles que String et ArrayList, vous avez besoin d'une version spéciale du JRE qui est compilée avec "debug information". Le JRE inclus dans le JDK fournit ces informations, mais pas le JRE régulier. JRE régulier n'inclut pas ces informations pour assurer de meilleures performances.

Qu'est-ce que les informations de débogage? Voici une explication rapide tirée de cet article de blog :

Les compilateurs modernes font un très bon travail pour convertir votre code de haut niveau, avec ses structures de contrôle bien indentées et imbriquées et ses variables arbitrairement typées en un gros tas de bits appelé code machine (ou bytecode dans le cas de Java), dont le seul but est de s'exécuter le plus vite possible sur le CPU cible (CPU Le code Java est converti en plusieurs instructions de code machine. Les variables sont poussées partout – dans la pile, dans les registres ou complètement optimisé loin. Les structures et les objets n'existent même pas dans le code résultant-ils ne sont qu'une abstraction cela se traduit par des décalages codés en dur dans des tampons de mémoire.

Alors, comment un débogueur sait-il où s'arrêter lorsque vous lui demandez de se casser à l'entrée d'une fonction? Comment parvient-il à trouver quoi vous montrer lorsque vous lui demandez la valeur d'une variable? La réponse est-informations de débogage.

Les informations de débogage sont générées par le compilateur ensemble avec le code machine. C'est une représentation de la relation entre le programme exécutable et le code source d'origine. Ces informations sont codées dans un format prédéfini et stockées à côté du code machine. De nombreux formats de ce type ont été inventés au fil des ans pour différentes plates-formes et fichiers exécutables.

 24
Author: Steve, 2014-07-10 16:46:53

JVM, JRE, JDK - ce sont tous l'épine dorsale du langage Java. Chaque composant séparément. JDK et JRE existent physiquement mais JVM est une machine abstraite qui signifie qu'elle n'existe pas physiquement.

JVM est le sous-système de JDK et JRE qui est utilisé pour vérifier le code intermédiaire connu sous le nom de "bytecode". Il charge d'abord le" fichier de classe " (ayant .extension c) générée par le compilateur Java (javac) via le sous-système JVM classloader et l'emplacement de mémoire classé (zone de classe, registres stack, heap et pc) selon leur utilisation. Ensuite, il vérifie tout le bytecode pour s'assurer qu'il est retourné en Java et tout l'accès à l'accessibilité de la mémoire par le réseau. Le travail de l'interprète commence après cela où il vérifie l'ensemble du programme ligne par ligne. Les résultats sont finalement affichés dans la console / navigateur / application via JRE (Java Runtime Environment) qui gère l'exécution.

JRE est également un sous-système de JDK qui fournit des fonctionnalités d'exécution comme JVM, classes, fichiers exécutables comme .fichier jar, etc.

JDK signifie Kit de développement Java. Il contient tous les composants nécessaires utilisés dans la programmation Java tels que class, method, swing, AWT, package, Java (interpreter), javac (compiler), appletviewer (applet application viewer), etc. Pour conclure, il contient tous les fichiers nécessaires au développement d'applications, qu'elles soient autonomes ou basées sur le Web.

 9
Author: Kanan J, 2020-03-31 05:13:57

JRE

JRE est un acronyme pour Java Runtime Environment.It est utilisé pour fournir l'exécution environment.It est la mise en œuvre de JVM.It physiquement exists.It 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.It physiquement exists.It contient des outils de développement JRE+.

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

Habituellement, quand vous ne vous souciez que de en exécutant des programmes Java sur votre navigateur ou votre ordinateur, vous n'installerez que JRE. C'est tout ce dont vous avez besoin. D'autre part, si vous prévoyez de faire de la programmation Java, vous aurez également besoin de JDK.

 8
Author: Nikhil Kumar, 2015-04-21 08:13:53

JVM, JRE et JDK dépendent de la plate-forme car la configuration de chaque système d'exploitation diffère. Mais, Java est indépendant de la plate-forme.

Java Virtual Machine (JVM) est un système d'exécution qui exécute le bytecode Java.

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

Le JDK inclut les outils de développement en ligne de commande JRE plus tels que les compilateurs et les débogueurs qui sont nécessaires ou utiles pour développer des applets et des applications.

 8
Author: Chintan Patni, 2016-09-02 09:00:35

Voici une réponse simple directement d'Oracle http://docs.oracle.com/javase/7/docs/technotes/guides/

L'environnement d'exécution Java SE (JRE)

Le JRE fournit les bibliothèques, la machine virtuelle Java et les autres composants nécessaires pour exécuter des applets et des applications écrites dans le langage de programmation Java. Cet environnement d'exécution peut être redistribué avec des applications pour les rendre autonomes.

Kit de Développement Java SE (JDK)

Le JDK inclut les outils de développement en ligne de commande JRE plus tels que les compilateurs et les débogueurs qui sont nécessaires ou utiles pour développer des applets et des applications.

 7
Author: Alex, 2015-05-08 18:01:51

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é.

JRE est un acronyme pour Java Runtime Environment.It est utilisé pour fournir l'exécution environment.It est la mise en œuvre de JVM.It physiquement exists.It contient un ensemble de bibliothèques + d'autres fichiers que JVM utilise à l'exécution

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

 7
Author: Pruthvi Kumar, 2015-09-28 15:32:18

Si vous souhaitez exécuter des programmes Java, mais pas les développer, téléchargez l'environnement d'exécution Java ou JRE. Si vous voulez les développer, téléchargez le kit de développement Java, ou JDK

JDK

Appelons JDK est un kit, qui comprend quelles sont ces choses nécessaires pour développer et exécuter des applications java.

JDK est donné comme environnement de développement pour la construction d'applications, de composants et d'applets.

JRE

Il contient tout ce dont vous avez besoin pour exécuter Java applications sous forme compilée. Vous n'avez pas besoin de bibliothèques et d'autres objets. Toutes les choses dont vous avez besoin sont compilées.

JRE ne peut pas être utilisé pour le développement, seulement utilisé pour exécuter les applications.

 7
Author: nifCody, 2015-11-01 03:39:39

Si vous êtes un programmeur Java vous aurez besoin de JDK dans votre système et cette trousse comprend JRE et de la JVM, mais si vous êtes normal utilisateur qui aiment jouer aux jeux en ligne, alors vous aurez seulement besoin d' JRE et ce paquet n'aura pas de JDK il.

JVM

JVM (Java Virtual Machine) est une machine abstraite. C'est un 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. JVM, JRE et JDK dépendent de la plate forme car la configuration de chaque système d'exploitation différer. Mais, Java est indépendant de la plate-forme.

JRE

Il contient tout ce dont vous avez besoin pour exécuter des applications Java dans compilé forme. Vous n'avez pas besoin de bibliothèques et d'autres objets. Toutes les choses que vous besoin sont compilés.

JRE ne peut pas être utilisé pour le développement, seulement utilisé pour exécuter le application.

Vous avez besoin d'une solution de développement Java SE (JDK)

Le JDK inclut les outils de développement en ligne de commande JRE plus tels que compilateurs et débogueurs nécessaires ou utiles pour le développement applets et applications.

(Je ne sais pas si c'est le cas., Présentation de la plateforme Java)

 6
Author: Harita M, 2016-08-11 12:07:08

Simplement :

JVM est la machine virtuelle sur laquelle le code Java s'exécute

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

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

 6
Author: ABP, 2016-08-19 12:41:04

Une compréhension claire de ces termes(JVM, JDK, JRE) est essentielle pour saisir leur utilisation et leurs différences.

JVM Java Virtual Machine (JVM) est un système d'exécution qui exécute le bytecode Java. La JVM est comme un ordinateur virtuel qui peut exécuter un ensemble d'instructions compilées et manipuler des emplacements de mémoire. Lorsqu'un compilateur Java compile du code source, il génère un ensemble d'instructions hautement optimisé appelé bytecode dans a.fichier de classe. La JVM interprète ces bytecode instructions et les convertit en code spécifique à la machine pour l'exécution.

JDK Le Kit de développement Java (JDK) est un environnement de développement logiciel que vous pouvez utiliser pour développer et exécuter des applications Java. Il comprend le JRE et un ensemble d'outils de programmation, tels qu'un compilateur Java, un interpréteur, un appletviewer et une visionneuse de documents. Le JDK est implémenté via les plates-formes Java SE, Java EE ou Java ME.

JRE L'Environnement d'Exécution Java (JRE) est une partie de le JDK qui comprend une JVM, des classes de base et plusieurs bibliothèques qui prennent en charge le développement d'applications. Bien que le JRE soit disponible dans le cadre du JDK, vous pouvez également le télécharger et l'utiliser séparément.

Pour une compréhension complète, vous pouvez voir mon blog: Jdk Jre Jvm et différences

 6
Author: Chandra Shekhar Goka, 2018-04-22 02:48:59

Jdk est nécessaire pour compiler en code et convertir le code java en codes d'octets tandis que jre est nécessaire pour exécuter les codes d'octets.

 5
Author: Mayank Jain, 2016-02-14 12:10:29

JDK inclut les outils de développement en ligne de commande JRE plus tels que les compilateurs et les débogueurs qui sont nécessaires ou utiles pour développer des applets et des applications.

JRE est essentiellement la machine virtuelle Java sur laquelle s'exécutent vos programmes Java. Il comprend également des plugins de navigateur pour l'exécution d'applet.

JDK 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é.

Donc, Fondamentalement JVM

 5
Author: Dev, 2016-08-19 11:39:54

La différence entre JDK et JRE est que JDK est le kit de développement logiciel pour java tandis que JRE est l'endroit où vous exécutez vos programmes.

 4
Author: Samarth Shah, 2016-04-08 21:02:54

Supposons que, si vous êtes un développeur, votre rôle est de développer le programme ainsi que d'exécuter le programme. vous devez donc avoir un environnement pour le développement et l'exécution, qui est fourni par JDK.

Supposons que si vous êtes un client, vous n'avez pas à vous soucier du développement.Juste vous avez besoin est, un environnement pour exécuter le programme et obtenir le résultat seulement, qui est fourni par JRE.

JRE exécute l'application mais JVM lit les instructions ligne par ligne interprète.

JDK=JRE + Outils de développement

JRE=JVM+Classes de bibliothèque

 4
Author: bishwas pokharel, 2016-06-06 07:39:51

JRE

JRE est un acronyme pour Java Runtime Environment.It est utilisé pour fournir l'exécution environment.It est 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.

La mise en œuvre de JVM est également activement publiée par d'autres sociétés que Sun Micro Systems.

entrez la description de l'image ici

JDK

JDK est un acronyme pour Java Development Kit.It physiquement exists.It contient JRE + outils de développement.

entrez la description de l'image ici

 3
Author: aKilleR, 2017-10-27 08:02:23