Quelle est la différence entre JDK et JRE ?
Quels sont leurs rôles et quand dois-je utiliser l’un ou l’autre ?
Réponses
Trop de publicités?JRE: Java Runtime Environment. Fondamentalement, c'est la Machine Virtuelle Java où vos programmes Java s'exécutent. Il comprend également des plug-ins de navigateur pour l'exécution de l'Applet.
JDK: C'est le complet Kit de Développement Logiciel pour Java, y compris les JRE, et les compilateurs et des outils (comme JavaDoc, et Débogueur Java), pour créer et compiler des programmes.
Habituellement, lorsque vous ne se soucient que l'exécution des programmes Java sur votre navigateur ou votre ordinateur, vous aurez seulement installer le JRE. C'est tout ce dont vous avez besoin. D'autre part, si vous prévoyez de faire certains de programmation Java, vous aurez également besoin du JDK.
Parfois, même si vous ne prévoyez pas de faire tout Développement Java sur un ordinateur, vous avez encore besoin du JDK installé. Par exemple, si vous déployez une Application web avec JSP, vous êtes techniquement juste pour exécuter des Programmes Java à l'intérieur de l'application serveur. Pourquoi auriez-vous besoin du JDK alors? En raison de l'application serveur de convertir des JSP en Servlet et l'utilisation JDK pour compiler les servlets. Je suis sûr qu'il pourrait y avoir d'autres exemples.
Pablo est très à droite. C'est juste des informations supplémentaires:
"Le JRE" est, comme son nom l'indique, un environnement. C'est fondamentalement un tas de répertoires avec Java fichiers liés, à savoir:
- /bin avec les programmes exécutables comme
java
et (pour Windows)javaw
, qui sont essentiellement le programme de la machine virtuelle Java; - /lib avec un grand nombre de fichiers de prise en charge: Certains
jar
s, des fichiers de configuration, fichiers de propriétés, polices, sons, icônes,... tout le "tralala" de Java. Les plus importants sontrt.jar
et, éventuellement, quelques-uns de ses frères et sœurs, qui contiennent les "API java, la Java, le code de bibliothèque. - Quelque part, éventuellement cachées par le programme d'installation dans un répertoire spécifié par le système d'exploitation, sont quelques -
.DLL
s (pour Windows) ou.so
'(Unix/Linux) avec le soutien, souvent spécifiques à un système binaire natif de code.
Le JDK est aussi un ensemble de répertoires. Elle ressemble beaucoup à la JRE, mais il contient un répertoire (appelé JRE
) avec un JRE, et il a un certain nombre d'outils de développement, plus important encore, le compilateur Java javac
ses bin
répertoire.
De Officiel de site web de java...
JRE (Java Runtime environment):
- C'est une implémentation de la Machine Virtuelle Java* qui exécute des programmes Java.
- Java Runtime Environment est un plug-in requis pour l'exécution de 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é/pris en charge gratuitement à partir de https://www.java.com
- Il comprend la JVM , les bibliothèques de Base et d'autres composants supplémentaires pour exécuter des applications et des applets Java.
JDK (Java Development Kit)
- C'est un bundle de logiciels que vous pouvez utiliser pour développer des applications Java.
- Java Development Kit est nécessaire pour le développement d'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 gratuitement à partir de https://www.oracle.com/technetwork/java/javase/downloads/
- Il contient le JRE, un ensemble de classes de l'API, un compilateur Java, web start et d'autres fichiers nécessaires pour écrire des applets Java et des applications.
Une différence à partir d'une perspective débogage:
Pour déboguer en Java classes de système tels que la Chaîne et ArrayList, vous avez besoin d'une version spéciale de la JRE qui est compilé avec "les informations de débogage". Le JRE inclus dans le JDK fournit cette info, mais la régularité de JRE ne pas. Régulière JRE ne comprend pas cette info pour assurer de meilleures performances.
Qu'est-ce que les informations de débogage? Voici une explication rapide prise de ce blog:
Les compilateurs modernes font un assez bon travail de conversion de votre code de haut niveau, avec son bien en retrait et imbriquées les structures de contrôle et arbitrairement les variables de type dans un gros tas de bits appelé code machine (ou de pseudo-code binaire dans le cas de Java), dont le seul but est de courir aussi vite que possible sur la cible du PROCESSEUR (CPU virtuel de votre JVM). Le code Java est converti en plusieurs code machine des instructions. Les Variables sont poussé tous sur la place – dans la pile, dans des registres, ou complètement optimisé loin. Des Structures et des objets qui n'existent même pas dans le code résultant, – qu'ils sont simplement une abstraction qui se traduit en codée en dur décalages dans la mémoire tampon.
Alors, comment un débogueur de savoir où s'arrêter, quand vous lui demandez de pause à l'entrée à une fonction? Comment est-elle réussi à trouver ce que pour vous montrer que vous demandez pour la valeur d'une variable? La réponse est que les informations de débogage.
Les informations de débogage est généré par le compilateur en collaboration avec le code machine. C'est une représentation de la relation entre le programme exécutable et le code source d'origine. Cette information est encodée dans un format pré-défini et stockés à côté de la machine code. Beaucoup de ces formats ont été inventés au fil des années pour différentes plates-formes et des fichiers exécutables.