首先,java是个编程语言。
其次,SUN推出了3个java平台,分别是J2SE,J2EE,J2ME。 然后,J2SE平台上其余两个的基础。针对J2SE提供了开发 工具,java development kits 也就是传说中的JDK,后面 更名为J2SDK,但是习惯还是称为JDK。
那么,来看看JDK当中到底为我们提供了什么东西。
根据目录层次来看,
bin目录:提供的是JDK的工具程序,比如javac java等。
demo目录:一些使用java编写好的范例程序
jre目录:JDK自己的JRE
lib目录:工具程序实际会使用到的java工具类
src.zip文档:java提供的API的源码压缩文件。
1.关于两个JRE的问题
在安装JDK的过程中会出个问题,就是在安装完JDK后 会提示你安装共用JRE,如果你点同意的话,那么这个共用 JRE会安装在java目录小和JDK并列(针对JDK6来说)。那 么问题就来了,既然JDK当中本来就有一个JRE,那么为什 么还要提示你安装一个公用JRE呢?这两个JRE肯定是有区 别的,那么这两个JRE的区别在哪里呢?JDK的JRE(很绕口?)是开发程序做测试用的,它比公用 JRE多了个sever的VM选项。当运行JDK的工具程序的时候, 调用的是JDK自己的JRE。共用JRE呢?当然是少了这个 sever,原因是如果使用sever那么相对于仅仅是提供运行 时环境的共用JRE来说,无疑会花费更长的启动时间和更多 的内存。 这就是为什么会存在两个JRE的原因。
2.JRE和JVM的关系
JRE是JAVA程序的运行时环境。一个JAVA程序要运行必须 要有JRE的支持。电脑要执行程序必须要有机器码去指挥他 ,但是不同的电脑都有自己的语言,JVM虚拟机提供了这种 支持。执行JAVA源码即字节码的是JVM,JVM会去和平台做 沟通。然而,JVM去执行源码仅仅是JAVA程序执行的一部分 ,另外还包括类的加载,安全校验和JIT编译技术。
3.关于JDK的工具程序
首先,JDK的工具程序都是用JAVA语言来编写的 。它的源 码位于<JDK安装目录>\lib\tools.jar文件中。
那么,我们 不得不考虑过问题,既然这些个工具是JAVA来编写的,那 么为什么我们在运行他们的时候不需要设置CLASSPATH呢?其实在bin目录下看到的那些.exe的工具只是包装器而已。 他们的功用是找到JRE+Tools.jar然后执行。包装器仅仅是 个中介而已。
4.进一步说明
JDK里面的工具几乎都是用JAVA来编写的,所以JDK本身 就JAVA应用程序,因此要使用JDK附带的工具来开发JAVA程 序,也必须要自行附带一套才行,这就是为什么JDK目录下 也有一个JRE的原因。再说一次,公用JRE只是单纯的JAVA 程序的运行时环境而已。
5.关于环境变量
PATH:
提供给操作系统寻找Java命令工具的路径。通常配置到 JDK安装路径\bin 列:"c:\programe\Java\jdk1.6.0_02\bin;"
JAVA_HOME:
提供给其他基于Java的程序使用,让他们能够找到JDK 的位置。通常配置到JDK安装路径。注意:这个必须书写正 确,全部大写,中间用下划线。 列:"c:\programe\Java\jdk1.6.0_02“
CLASSPATH:
提供程序运行期间寻找所需资源的路径,比如:类,文 件,图片等等。注意:在windows操作系统上,最好在 classpath的配置里面,始终在前面保持“.;”的配置, 在windows里面“.”表示当前路径。
最后,不得不佩服微软的作风了,良好的布局,处处可见 的帮助文档,详细得简直恨不得手把手的教你。SUN的JDK 干脆叫java developer killer算了,太混乱了。另外,这 些东西都是很简单的,粗略看下了解下有这么会事情就好 了,没必要记得,也根本不可能记得。出来问题知道去哪 里找答案就行了。
当你开发JAVA程序或者执行JAVA程序的 时候,一定要记得两件事情:
1.哪一个java.exe被执行
2.java.exe找到那一套JRE