JDK JRE先保存 后面再整理

1. 定义
JRE(Java Runtime Enviroment)是Java的运行环境。面向Java程序的使用者,而不是开发者。若是你仅下载并安装了JRE,那么你的系统只能运行Java程 序。JRE是运行Java程序所必须环境的集合,包含JVM标准实现及 Java核心类库。它包括Java虚拟机、Java平台核心类和支持文件。它不包含开发工具(编译器、调试器等)。
JDK(Java Development Kit)又称J2SDK(Java2 Software Development Kit),是Java开发工具包,它提供了Java的开发环境(提供了编译器javac等工具,用于将java文件编译为class文件)和运行环境(提 供了JVM和Runtime辅助包,用于解析class文件使其获得运行)。若是你下载并安装了JDK,那么你不只能够开发Java程序,也同时拥有了运 行Java程序的平台。JDK是整个Java的核心,包括了Java运行环境(JRE),一堆Java工具tools.jar和Java标准类库 (rt.jar)。
2. 区别
JRE主要包含:java类库的class文件(都在lib目录下打包成了jar)和虚拟机(jvm.dll);JDK主要包含:java类库的 class文件(都在lib目录下打包成了jar)并自带一个JRE。那么为何JDK要自带一个JRE呢?并且jdk/jre/bin下的client 和server两个文件夹下都包含jvm.dll(说明JDK自带的JRE有两个虚拟机)。
记得在环境变量path中设置jdk/bin路径吗?老师会告诉你们不设置的话javac和java是用不了的。确实jdk/bin目录下包含了全部的命 令。但是有没有人想过咱们用的java命令并非jdk/bin目录下的而是jre/bin目录下的呢?不信能够作一个实验,你们能够把jdk /bin目录下的java.exe剪切到别的地方再运行java程序,发现了什么?一切OK!(JRE中没有javac命令,缘由很简单,它不是开发环 境)那么有人会问了?我明明没有设置jre/bin目录到环境变量中啊?试想一下若是java为了提供给大多数人使用,他们是不须要jdk作开发的,只需 要jre能让java程序跑起来就能够了,那么每一个客户还须要手动去设置环境变量多麻烦啊?因此安装jre的时候安装程序自动帮你把jre的 java.exe添加到了系统变量中,验证的方法很简单,去Windows/system32下面去看看吧,发现了什么?有一个java.exe。
3. 难点
若是安装了JDK,会发现你的电脑有两套JRE,一套位于C:\Program Files\Java\jre6, 另一套位于 C:\Program Files\Java\jdk1.6.0_41\jre目录下。
JRE的地位就象一台PC机同样,咱们写好的Win32应用程序须要操做系统帮咱们运行,一样的,咱们编写的Java程序也必需要JRE才能运行。因此当你装完JDK后,若是分别在硬盘上的两个不一样地方安装了两套JRE,那么你能够想象你的电脑有两台虚拟的Java
PC机,都具备运行Java程序的功能。因此咱们能够说,只要你的电脑安装了JRE,就能够正确运行Java应用程序。
一、为何Sun要让JDK安装两套相同的JRE?
这是由于JDK里面有不少用Java所编写的开发工具,如javac.exe、jar.exe等,这些命令放置在 C:\Program Files\Java\jdk1.6.0_41\bin目录里。
由于他们是java编写的命令,因此要依靠java的jar包,这些jar包存放在C:\Program Files\Java\jdk1.6.0_41\lib目录里
若是将C:\Program Files\Java\jdk1.6.0_41\lib\目录里面的tools.jar更名为tools1.jar,而后运行javac.exe,显示以下结果:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/javac /Main
可是输入 java -cp C:\Program Files\Java\jdk1.6.0_41\lib\tools1.jar com.sun.tools.javac.Main
会获得与javac.exe相同的结果。
从这里咱们能够证实javac.exe只是一个包装器(Wrapper),而制做的目的是为了让开发者免于输入太长的指命。
并且咱们能够发现C:\Program Files\Java\jdk1.6.0_41\bin目录下的程序都很小,不大于29K,从这里咱们能够得出一个结论。就是JDK里的工具几乎是用 Java所编写,因此也是Java应用程序,所以要使用JDK所附的工具来开发Java程序,也必需要自行附一套JRE才行,因此位于 C:\Program Files\Java\jdk1.6.0_41\jre目录下的那套JRE就是用来运行通常Java程序用的。
二、若是一台电脑安装两套以上的JRE,谁来决定呢?
这个重大任务就落在java.exe身上。java.exe的工做就是找到合适的JRE来运行Java程序。 java.exe依照底下的顺序来查找JRE:本身的目录下有没有JRE;父目录有没有JRE;查询注册表:
[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment]
因此java.exe的运行结果与你的电脑里面哪一个JRE被执行有很大的关系。java

相关文章
相关标签/搜索