Differences between JDK and JRE
Reprinted link: http://www.cnblogs.com/myitm/archive/2011/05/03/2035942.html
Reprinted link: http://swiftlet.net/archives/639
Many programmers have been working on java for a while and still do not understand the difference between jdk and jre.
JDK is the Java Development Kit. In short, JDK is an SDK for developers. It provides the Java Development environment and runtime environment. The SDK is a Software Development Kit. It generally refers to a Software Development Kit, which can include function libraries and compiled programs.
JRE is the Java Runtime Enviroment, which refers to the Java Runtime Environment and is intended for Java program users rather than developers.
If JDK is installed, there will be two sets of JRE on your computer, one in the \ jre and the other in the C: \ Program Files \ Java \ jre1.5.0 _ 15 directory, this later set is less Server-side Java virtual machine than the previous one, but simply copy the previous Server-side Java virtual machine. When installing JDK, you can choose whether to install the JRE in the C: \ Program Files \ Java directory. If you only install JRE instead of JDK, only a unique set of JRE will be installed in the C: \ Program Files \ Java directory.
The status of JRE is just like that of a PC. The Win32 application we write requires the operating system to help us run it. Similarly, the Java program we write must also run JRE. So after installing JDK, if two sets of JRE are installed in two different locations on the hard disk, you can imagine that your computer has two virtual Java PCs, all have the function of running Java programs. So we can say that if your computer has installed JRE, you can run the Java application correctly.
1. Why does Sun need JDK to install two identical JRE?
This is because JDK has a lot of Java-compiled development tools (such as javac.exe‑jar.exe), and they are all placed in \ lib \ tools. jar. As shown in the following example, change tools.jarto tools1.jarand run javac.exe. the following result is displayed: Exception in thread "main" java. lang. noClassDefFoundError: com/sun/tools/javac/Main. You can input javac.exe and java-cp c: \ jdk \ lib \ tools. jar com. sun. tools. javac. the Main is the same and the same result is obtained. From this we can prove that javac.exe is just a Wrapper, and the purpose is to prevent developers from entering too long fingers. In addition, we can find that the programs in the \ lib directory are very small, not greater than 2 9 K. Here we can draw a conclusion. That is, JDK tools are almost written in Java, so they are also Java applications. Therefore, to use the tools attached to JDK to develop Java programs, you must also attach a set of JRE, therefore, the JRE located in the C: \ Program Files \ Java directory is used to run general Java programs.
2. If two or more JRE are installed on a computer, who will decide?
This major task falls on java.exe. The job of Java.exe is to find the appropriate JRE to run the Java program. Java.exe searches for JRE in the following order: whether JRE is in its own directory; whether JRE is in its parent directory; and query the registry: [HKEY_LOCAL_MACHINE \ SOFTWARE \ JavaSoft \ Java Runtime Environment] The running result of java.exe has a great relationship with which JRE is executed on your computer.
ADD :( small summary)
1. JVM -- java virtual machineJVM is the most common java virtual machine. It is the core of cross-platform java Implementation. All java programs are first compiled. class files, which can be executed on virtual machines. That is to say, the class does not directly correspond to the operating system of the machine, but indirectly interacts with the operating system through the Virtual Machine, the Virtual Machine interprets the program to the local system for execution. 2. JRE -- java runtime environmentJRE refers to the java runtime Environment. JVM alone cannot be executed as a class, because the JVM needs to call the library lib required for explanation when interpreting the class. In the JDK installation directory, you can find the jre Directory, which contains two folders bin and lib. Here we can think that the bin contains jvm, And the lib is the class library required for jvm work, jvm and lib are called jre. Therefore, after you compile the java program into a. class file, you can package the. class file with jre to your friends so that your friends can run your program. (Jrehas java.exe running .class) 3.JDK -- java development kitJDK is a java development Kit. Basically, everyone who learns java will first install a JDK on the machine. Which part does it contain? Let's take a look at the JDK installation directory. The directory contains six folders, one src Class Library source code package, and several other declaration files. The following four folders are actually used when running java: bin, include, lib, and jre. Now we can see that JDK contains JRE, and JRE contains JVM. Bin: the most important part is the compiler (javac.exe) include: header file for java and JVM interaction lib: Class Library jre: java Runtime Environment (note: the bin, lib folder and bin and lib in jre are different. In general, JDK is used for java program development, while jre can only run class without compiling.
Other ides such as eclipse and idea have their own compilers instead of those embedded in the JDK bin directory. Therefore, during installation, you will find that they only require you to select the jre path.