Maison  >  Article  >  Java  >  La différence entre jdk et jre

La différence entre jdk et jre

藏色散人
藏色散人original
2020-05-25 14:59:4333523parcourir

La différence entre jdk et jre

La différence entre jdk et jre

Définition

JRE (Java Runtime Environment) ) C'est l'environnement d'exécution de Java. Pour les utilisateurs de programmes Java, pas pour les développeurs. Si vous téléchargez et installez uniquement le JRE, votre système ne peut exécuter que des programmes Java. JRE est un ensemble d'environnements nécessaires à l'exécution de programmes Java, notamment l'implémentation standard JVM et la bibliothèque de classes de base Java. Il comprend la machine virtuelle Java, les classes principales de la plate-forme Java et les fichiers de support. Il ne contient pas d'outils de développement (compilateurs, débogueurs, etc.).

JDK (Java Development Kit), également connu sous le nom de J2SDK (Java2 Software Development Kit), est une boîte à outils de développement Java. Il fournit un environnement de développement Java (fournissant des outils tels que le compilateur javac pour compiler des fichiers Java pour la classe. fichiers) et l'environnement d'exécution (fournissant des packages auxiliaires JVM et Runtime pour analyser les fichiers de classe afin de les exécuter). Si vous téléchargez et installez le JDK, vous pouvez non seulement développer des programmes Java, mais également disposer d'une plate-forme pour exécuter des programmes Java. JDK est le cœur de l'ensemble de Java, y compris Java Runtime Environment (JRE), un ensemble d'outils Java tools.jar et la bibliothèque de classes standard Java (rt.jar).

Recommandé : "apprentissage Java"

2. Différences

JRE comprend principalement : les fichiers de classe de la bibliothèque de classes Java ( Tous sont regroupés dans des jars dans le répertoire lib) et des machines virtuelles (jvm.dll) comprennent principalement : les fichiers de classe de la bibliothèque de classes Java (tous regroupés dans des jars dans le répertoire lib) et sont livrés avec un JRE. Alors pourquoi le JDK est-il livré avec un JRE ? De plus, les dossiers client et serveur sous jdk/jre/bin contiennent tous deux jvm.dll (indiquant que le JRE fourni avec JDK possède deux machines virtuelles).

N'oubliez pas de définir le chemin jdk/bin dans le chemin de la variable d'environnement ? L'enseignant dira à tout le monde que javac et java ne peuvent pas être utilisés s'ils ne sont pas configurés. Il est vrai que le répertoire jdk/bin contient toutes les commandes. Mais est-ce que quelqu'un a déjà pensé que la commande Java que nous utilisons ne se trouve pas dans le répertoire jdk/bin mais dans le répertoire jre/bin ? Si vous ne me croyez pas, vous pouvez faire une expérience. Vous pouvez couper le fichier java.exe dans le répertoire jdk/bin vers un autre endroit, puis exécuter le programme Java. Qu'avez-vous trouvé ? Tout va bien ! (Il n'y a pas de commande javac dans JRE, la raison est simple, ce n'est pas un environnement de développement) Alors quelqu'un va demander ? Je n'ai évidemment pas défini le répertoire jre/bin sur la variable d'environnement ? Imaginez simplement que si Java est destiné à la plupart des gens, ils n'ont pas besoin de jdk pour le développement. Ils n'ont besoin que de jre pour exécuter le programme Java. Alors, à quel point est-il difficile pour chaque client de définir manuellement les variables d'environnement ? Ainsi, lorsque vous installez jre, le programme d'installation ajoute automatiquement le fichier java.exe de jre aux variables système pour vous. La méthode de vérification est très simple. Accédez à Windows/system32 et jetez un œil. Il existe un java.exe.

3. Difficultés

Si vous avez installé JDK, votre ordinateur aura deux ensembles de JRE (JRE lui-même et le JRE dans le JDK). Le premier ensemble a moins de Java côté serveur que). ce dernier est défini sur la machine virtuelle.

(1) Pourquoi Sun exige-t-il que JDK installe deux ensembles du même JRE ? En effet, il existe de nombreux outils de développement écrits en Java dans le JDK (tels que javac.exe, jar.exe, etc.), et ils sont tous placés dans /lib/tools.jar. Si nous renommeons tools.jar en tools1.jar puis exécutons javac.exe, les résultats suivants seront affichés : Exception dans le fil "main" java.lang.NoClassDefFoundError : com/sun/tools/javac/Main. Cela signifie que si vous entrez javac.exe et java -cp c:/jdk/lib/tools.jar com.sun.tools.javac.Main, vous obtiendrez le même résultat. À partir de là, nous pouvons prouver que javac.exe n'est qu'un wrapper (Wrapper), et que le but de sa création est d'éviter aux développeurs de saisir des commandes trop longues. Et nous pouvons constater que les programmes du répertoire /lib sont très petits, ne dépassant pas 29 Ko. De là, nous pouvons tirer une conclusion. Autrement dit, presque tous les outils du JDK sont écrits en Java, ce sont donc également des applications Java. Par conséquent, si vous souhaitez utiliser les outils attachés au JDK pour développer des programmes Java, vous devez également attacher vous-même un ensemble de JRE. ainsi l'ensemble situé dans le répertoire JDK JRE est utilisé pour exécuter des programmes Java généraux.

(2) Si plus de deux ensembles de JRE sont installés sur un ordinateur, qui décidera ? Cette tâche importante incombe à java.exe. Le travail de java.exe consiste à trouver le JRE approprié pour exécuter le programme Java. java.exe recherche JRE dans l'ordre suivant : 1) Existe-t-il un JRE dans son propre répertoire ; 2) Existe-t-il un JRE dans le répertoire parent ; 3) Interrogez le registre : [HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment] . Par conséquent, le résultat de l'exécution de java.exe a une excellente relation avec laquelle JRE est exécuté sur votre ordinateur.

(3) Il y a deux dossiers dans le répertoire JDK-->JRE-->Bin : serveur et client. C'est là que se trouve le vrai jvm.dll. jvm.dll ne peut pas fonctionner seul. Lorsque jvm.dll est démarré, il utilisera la méthode explicite (c'est-à-dire en utilisant LoadLibrary() et GetProcAddress() dans l'API Win32 pour charger la bibliothèque de liens dynamiques auxiliaires), et ces liens dynamiques auxiliaires. bibliothèques Les bibliothèques de liens dynamiques (.dll) doivent se trouver dans le répertoire parent du répertoire où se trouve jvm.dll. Par conséquent, quelle que soit la JVM que vous souhaitez utiliser, il vous suffit de définir le PATH pour qu'il pointe vers jvm.dll dans le répertoire où se trouve le JRE.

4. Le JDK le plus courant est le JDK publié par Sun. En plus de Sun, de nombreuses entreprises et organisations ont développé leur propre JDK, comme le JDK développé par IBM, le Jrocket par BEA et des JDK développés. par l'organisation GNU et ainsi de suite.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn