Quelle est la différence entre JDK et JRE?
Quels sont leurs rôles et quand devrais-je utiliser l'un ou l'autre?
Quelle est la différence entre JDK et JRE?
Quels sont leurs rôles et quand devrais-je utiliser l'un ou l'autre?
Réponses:
Le JRE est l' environnement d'exécution Java . Il s'agit d'un ensemble 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 java
commande et d'autres infrastructures. Cependant, il ne peut pas être utilisé pour créer de nouveaux programmes.
Le JDK est le kit de développement Java , le SDK complet pour Java. Il a tout ce que 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 d'exécuter des programmes Java sur un ordinateur, vous n'installez que le JRE. C'est tout ce dont vous avez besoin. D'un autre côté, 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 devez toujours installer le JDK. Par exemple, si vous déployez une application Web avec JSP, vous exécutez techniquement simplement des programmes Java à l'intérieur du 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.
La réponse ci-dessus (par Pablo) est très juste. Ce ne sont que des informations supplémentaires.
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
également), qui lance la JVM. Il existe également d'autres utilitaires, tels que keytool
et policytool
.conf/
contient des fichiers de configuration modifiables par l'utilisateur pour que les experts Java puissent jouer avec.lib/
possède un grand nombre de fichiers de support: certains .jar
s, fichiers de configuration, fichiers de propriétés, polices, traductions, certificats, etc. - tous les "trimmings" de Java. Le plus important est modules
un fichier contenant les .class
fichiers de la bibliothèque standard Java..dll
(Windows) ou .dylib
(macOS) ou .so
(Linux) sous bin/
ou lib/
avec un code binaire natif spécifique au système.Le JDK est également un ensemble de répertoires. Il s'agit d'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 incluent jar
, javadoc
et jshell
.jmods/
, qui contient des fichiers JMOD pour la bibliothèque standard, a été ajoutée. Ces fichiers permettent d'utiliser la bibliothèque standard jlink
.JDK est un sur-ensemble de JRE, et contient tout ce qui est dans JRE, ainsi que des outils tels que les compilateurs et les débogueurs nécessaires pour développer des applets et des 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.
En termes simples: JDK est grand-père JRE est père et JVM est leur fils. [ie JDK> JRE> JVM]
JDK = JRE + Outils de développement / débogage
JRE = JVM + classes de packages Java (comme util, math, lang, awt, swing etc.) + bibliothèques d'exécution.
JVM = système de chargement 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 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 n'aura pas JDK dedans.
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 vos fichiers * .java pour obtenir des fichiers * .class qui contiennent les bytecodes compréhensibles 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 JDK.
Processus de compilation JIT (Courtoisie: documentation Oracle)
Depuis le site officiel de Java ...
JRE (environnement Java Runtime):
JDK (Java Development Kit)
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 de JRE qui est compilée avec des "informations de débogage". Le JRE inclus dans le JDK fournit ces informations, mais pas le JRE normal. Le JRE régulier n'inclut pas ces informations pour garantir de meilleures performances.
Qu'est-ce que le débogage des informations? Voici une brève explication tirée de ce billet de blog :
Les compilateurs modernes font un très bon travail de conversion de votre code de haut niveau, avec ses structures de contrôle bien indentées et imbriquées et des variables typées arbitrairement en une grande pile de bits appelée code machine (ou bytecode dans le cas de Java), dont le seul but est pour s'exécuter le plus rapidement possible sur le CPU cible (CPU virtuel de votre JVM). 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ées. Les structures et les objets n'existent même pas dans le code résultant - ils sont simplement une abstraction qui est traduite en 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 s'arrêter à 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 - le débogage des informations.
Les informations de débogage sont générées par le compilateur avec le code machine. Il s'agit d'une représentation de la relation entre le programme exécutable et le code source d'origine. Ces informations sont encodées dans un format prédéfini et stockées avec le code machine. Beaucoup de ces formats ont été inventés au fil des ans pour différentes plates-formes et fichiers exécutables.
JVM, JRE, JDK - ce sont tous les piliers du langage Java. Chaque composant fonctionne 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 appelé "bytecode". Il charge d'abord le "fichier de classe" (ayant l'extension .c) généré par le compilateur Java (javac) via le chargeur de classe du sous-système JVM et l'emplacement de la mémoire classée (zone de classe, pile, registres de tas et de PC) selon leur utilisation. Ensuite, il vérifie tout le bytecode pour s'assurer qu'il est retourné en Java et tous les accès d'accessibilité à la mémoire par le réseau. Le travail de l'interprète commence après celui où il vérifie le programme entier ligne par ligne. Les résultats sont enfin affichés dans la console / navigateur / application via JRE (Java Runtime Environment) qui dispose des fonctions d'exécution.
JRE est également un sous-système de JDK qui fournit des fonctionnalités d'exécution comme JVM, des classes, des fichiers exécutables comme le fichier .jar, etc.
JDK signifie Java Development Kit. Il contient tous les composants nécessaires utilisés dans la programmation Java tels que classe, méthode, swing, AWT, package, Java (interprète), javac (compilateur), appletviewer (applet application viewer), etc. Pour conclure, il contient tous les fichiers nécessaires au développement applications, autonomes ou basées sur le Web.
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
Habituellement, lorsque vous ne vous souciez que d'exécuter des programmes Java sur votre navigateur ou votre ordinateur, vous n'installerez que JRE. C'est tout ce dont vous avez besoin. D'un autre côté, si vous prévoyez de faire de la programmation Java, vous aurez également besoin de JDK.
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 plateforme.
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 comprend 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.
Voici une réponse simple directement d'Oracle http://docs.oracle.com/javase/7/docs/technotes/guides/
Environnement d'exécution Java SE (JRE)
Le JRE fournit les bibliothèques, la machine virtuelle Java et d'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 comprend 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.
Si vous souhaitez exécuter des programmes Java sans les développer, téléchargez l'environnement d'exécution Java ou JRE. Si vous souhaitez les développer, téléchargez le kit de développement Java ou JDK
Appelons JDK est un kit, qui comprend ce dont ces éléments ont besoin 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.
Il contient tout ce dont vous avez besoin pour exécuter des applications Java sous forme compilée. Vous n'avez pas besoin de bibliothèques ni d'autres éléments. Tout ce dont vous avez besoin est compilé.
JRE ne peut pas être utilisé pour le développement, uniquement utilisé pour exécuter les applications.
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é.
JRE est un acronyme pour Java Runtime Environment.Il est utilisé pour fournir un 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 est l'acronyme de Java Development Kit, il existe physiquement et contient des outils de développement JRE +
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. .
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. 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 plateforme.
JRE
Il contient tout ce dont vous avez besoin pour exécuter des applications Java sous forme compilée. Vous n'avez pas besoin de bibliothèques ni d'autres éléments. Tout ce dont vous avez besoin est compilé.
JRE ne peut pas être utilisé pour le développement, uniquement utilisé pour exécuter les applications.
Kit de développement Java SE (JDK)
Le JDK comprend 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.
(Sources: GeeksForGeeks Q&A , Présentation de la plate-forme Java )
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 un fichier .class. La JVM interprète ces instructions de bytecode et les convertit en code spécifique à la machine pour 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ète, un appletviewer et un visualiseur de documents. Le JDK est implémenté via les plateformes Java SE, Java EE ou Java ME.
JRE L'environnement d'exécution Java (JRE) fait partie du JDK qui comprend une machine virtuelle Java, des classes principales 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 les différences
jdk est nécessaire pour compiler en code et convertir le code java en codes octets tandis que jre est nécessaire pour exécuter les codes octets.
JDK comprend 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 vos programmes Java s'exécutent. Il comprend également des plugins de navigateur pour l'exécution de l'applet.
JDK 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é.
Donc, essentiellement JVM <JRE <JDK selon @Jaimin Patel dit.
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.
Supposons que si vous êtes développeur, votre rôle consiste à développer le programme ainsi qu'à exécuter le programme. vous devez donc disposer d'un environnement de développement et d'exécution, fourni par JDK.
Supposons que si vous êtes un client, vous n'avez pas à vous soucier du développement. Il vous suffit d'avoir un environnement pour exécuter le programme et obtenir uniquement les résultats, qui est fourni par JRE.
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
JRE
JRE est un acronyme pour Java Runtime Environment, utilisé pour fournir un environnement d'exécution, c'est l'implémentation de JVM. Il existe physiquement. Il contient un ensemble de bibliothèques et d'autres fichiers que JVM utilise lors de l'exécution.
La mise en œuvre des JVM est également activement lancée par d'autres sociétés que Sun Micro Systems.
JDK
JDK est l'acronyme de Java Development Kit, il existe physiquement et contient des outils de développement JRE +.