Question 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 devrais-je utiliser l'un ou l'autre?


678
2017-12-15 10:19


origine


Réponses:


JRE: Java Runtime Environment. Il s'agit essentiellement de la machine virtuelle Java sur laquelle s'exécutent vos programmes Java. Il inclut également des plugins de navigateur pour l'exécution de l'applet.

JDK: Il s'agit du kit de développement logiciel complet pour Java, comprenant JRE, et les compilateurs et outils (comme JavaDoc, et Java Debugger) pour créer et compiler des programmes.

Habituellement, lorsque vous vous souciez uniquement d'exécuter des programmes Java sur votre navigateur ou votre ordinateur, vous n'installez que JRE. C'est tout ce dont tu as besoin. D'un autre côté, si vous prévoyez de faire de la programmation Java, vous aurez aussi besoin JDK.

Parfois, même si vous ne prévoyez pas de développer Java sur un ordinateur, vous avez toujours besoin de JDK installée. Par exemple, si vous déployez une application Web avec JSP, tu es techniquement  juste exécuter des programmes Java dans le serveur d'applications. Pourquoi auriez-vous besoin JDK puis? Parce que le serveur d'application va convertir JSP en Servlets et utiliser JDK compiler les servlets. Je suis sûr qu'il pourrait y avoir plus d'exemples.


904
2017-12-15 10:21



Pablo a très raison. Ceci est juste une 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 avec des programmes exécutables comme java et (pour Windows) javaw, qui sont essentiellement le programme qui est la machine virtuelle Java;
  • / lib avec un grand nombre de fichiers de support: certains jars, les fichiers de configuration, les fichiers de propriétés, les polices, les sons, les icônes ... tous les "gadgets" de Java. Les plus importants sont rt.jar et peut-être quelques uns de ses frères et soeurs, qui contiennent "l'API java", c'est-à-dire le code de la bibliothèque Java.
  • Quelque part, peut-être squirreled par l'installateur à un répertoire spécifié par le système d'exploitation, sont certains .DLLs (pour Windows) ou .so's (Unix / Linux) avec le support, code binaire natif souvent spécifique au système.

le JDK est également un ensemble de répertoires. Cela ressemble beaucoup au JRE mais contient un répertoire (appelé JRE) avec un JRE complet, et il a un certain nombre d'outils de développement, le plus important le compilateur Java javac dans son bin annuaire.


111
2017-12-15 10:54



enter image description here

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 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 écrits dans le langage de programmation Java.


97
2018-03-20 06:24



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 + Java Packages Classes (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 inclura JRE et JVM aussi, mais si vous êtes un utilisateur normal qui aime jouer à des jeux en ligne, vous n'aurez besoin que de JRE. JDK dedans.

JVM:

La machine virtuelle Java (JVM) est la machine virtuelle qui exécute les bytecodes Java. La JVM ne comprend pas la faute de frappe Java, c'est pourquoi vous compilez vos fichiers * .java pour obtenir les fichiers * .class contenant les bytecodes compréhensibles par la JVM. C'est aussi l'entité qui permet à Java d'être un "langage portable" (écrire une fois, courir 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 étant 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)

Java Runtime Environment (JRE) fournit les bibliothèques, la machine virtuelle Java et d'autres composants pour exécuter des applets et des applications écrits dans le langage de programmation Java. En outre, deux technologies clés de déploiement 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 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 le développement d'applets et d'applications.

Kit de développement Java (JDK)

Le JDK est un sur-ensemble du JRE, et contient tout ce qui est 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 du JDK.

Processus de compilation JIT (Courtoisie: documentation Oracle)

JDK > JRE > JVM


68
2017-12-29 12:07



Depuis le site officiel de Java ...

JRE (environnement Java Runtime):

  • C'est une implémentation de Java Virtual Machine * qui exécute réellement 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 donc il a besoin de moins d'espace disque.
  • Le JRE peut être téléchargé / supporté librement depuis https://www.java.com
  • Il inclut la JVM, les bibliothèques Core et d'autres composants supplémentaires pour exécuter des applications et des applets écrits en Java.

JDK (Kit de développement Java)

  • C'est un ensemble de logiciels que vous pouvez utiliser pour développer des applications Java.
  • Java Development Kit est nécessaire pour développer des applications Java.
  • Le JDK a besoin de plus d'espace disque car il contient le JRE avec divers outils de développement.
  • Le JDK peut être téléchargé / pris en charge librement depuis https://www.oracle.com/technetwork/java/javase/downloads/
  • Il inclut le JRE, l'ensemble de classes d'API, le compilateur Java, le Webstart et les fichiers supplémentaires nécessaires pour écrire des applets et des applications Java.

24
2018-04-01 13:24



Une différence par rapport à une perspective de 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 cette information, mais pas le JRE ordinaire. L'environnement JRE ordinaire n'inclut pas cette information pour garantir de meilleures performances.

Qu'est-ce que l'information de débogage? Voici une explication rapide tirée de ce blog:

Les compilateurs modernes font du bon travail en convertissant votre code de haut niveau, avec ses structures de contrôle bien découpé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). pour s'exécuter le plus rapidement possible sur la CPU cible (CPU virtuelle de votre JVM). Le code Java est converti en plusieurs instructions de code machine. Les variables sont déplacées partout - dans la pile, dans des 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   cela est traduit en offsets 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 casser à l'entrée d'une fonction? Comment parvient-elle à trouver ce qu'il faut vous montrer lorsque vous lui demandez la valeur d'une variable?   La réponse est - débogage des informations.

Les informations de débogage sont générées par le compilateur avec le code machine. C'est une représentation de la relation entre le programme exécutable et le code source original. Cette information est codée dans un format prédéfini et stockée à côté du code machine. Beaucoup de ces formats ont été inventés au fil des années pour différentes plates-formes et fichiers exécutables.


21
2017-07-09 17:56



JRE

JRE est un acronyme pour Java Runtime Environment.It est utilisé pour fournir l'environnement d'exécution.Il est l'implémentation de JVM.Il existe physiquement.Il contient un ensemble de bibliothèques + autres fichiers que JVM utilise à 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

Habituellement, lorsque vous vous souciez uniquement d'exécuter des programmes Java sur votre navigateur ou votre ordinateur, vous n'installez que JRE. C'est tout ce dont tu as besoin. D'un autre côté, si vous prévoyez de faire de la programmation Java, vous aurez aussi besoin de JDK.


7
2018-04-21 08:13



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 de ligne de commande JRE plus comme les compilateurs et les débogueurs qui sont nécessaires ou utiles pour le développement d'applets et d'applications.


7
2017-09-02 09:00