jdk和jre的区别 |
关于java初学者来说,一般不懂 划分jdk和jre的区别,实际上这两个东西差异很大的,有必要了解一下: 方便的说JDK是面向开发人员 使用的SDK,它提供了Java的开发环境和运行环境 。SDK是Software Development Kit 一般指软件开发包, 可以包含函数库、编译程序等 。 JDK便是Java Development KitJRE是Java Runtime Enviroment是指Java的运行环境,是面向Java程序的 使用者,而不是开发者 。假如安装了JDK,会发同你的电脑有两套JRE,一套位于 \jre 另外一套位于 C:\Program Files\Java\j2re1.4.1_01 目录下,后面这套比前面那套少了Server端的Java 虚构机,不过直接将前面那套的Server端Java 虚构机复制过来就行了 。并且在安装JDK 可以 取舍是不是安装这个位于 C:\Program Files\Jav a 目录下的JRE 。假如你只安装JRE,而不是JDK,那么只会在 C:\Program Files\Java 目录下安装唯一的一套JRE 。 JRE的地位就象一台PC机一样,我们写好的Win32 利用程序需求操作系统帮我们运行,同样的,我们编写的Java程序也必须要JRE 威力运行 。所以当你装完JDK后,假如分别在硬盘上的两个不同地方安装了两套JRE,那么你 可以 设想你的电脑有两台 虚构的Java PC机,都 存在运行Java程序的 性能 。所以我们 可以说, 惟独你的电脑安装了JRE,就 可以正确运行Jav a 利用程序 。 1、为何Sun要让JDK安装两套 雷同的JRE?这是由于JDK里面有众多用Java所编写的开发工具(如javac.exe、jar.exe等),并且都 搁置在 \lib\tools.jar 里 。从下面例子 可以看出,先将tools.jar改名为tools1.jar, 而后运行javac.exe,显示如下 后果: Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/javac /Main 这个意思是说,你输入javac.exe与输入 java -cp c:\jdk\lib\tools.jar com.sun.tools.javac.Main 是一样的,会得到 雷同的 后果 。从这里我们 可以 证实javac.exe只不过一个包装器(Wrapper),而制作的 目标是为了让开发者免于输入太长的指命 。并且 可以发现\lib目录下的程序都很小,不大于2 9K,从这里我们 可以得出一个 论断 。便是JDK里的工具 几乎是用Java所编写,所以也是Java 利用程序, 因此要 使用JDK所附的工具来开发Java程序,也必须要自行附一套JRE才行,所以位于C:\Program Files\Java目录下的那套JRE便是用来运行一般Java程序用的 。 2、假如一台电脑安装两套以上的JRE,谁来决定呢?这个重大 使命就落在java.exe身上 。Java.exe的工作便是找到 合适的JRE来运行 Java程序 。 Java.exe按照底下的顺序来搜索JRE:自己的目录下有没有JRE;父目录有没有JRE; 查问注册表: [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment] 所以java.exe的运行 后果与你的电脑里面哪个JRE被执行有很大的关系 。 3、介绍JVM JRE目录下的Bin目录有两个目录:server与client 。这便是真正的jvm.dll所在 。 jvm.dll 无奈 径自工作,当jvm.dll启动后,会 使用explicit的 步骤(便是 使用Win32 API之中的LoadLibrary()与GetProcAddress()来载入辅助用的动态链接库),而这些辅助用的动态链接库(.dll)都必须位于jvm.dll所在目录的父目录之中 。 因此想 使用哪个JVM, 惟独求设置PATH,指向JRE所在目录底下的jvm.dll 。 |