简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。SDK是Software Development Kit 一般指软件开发包,
可以包括函数库、编译程序等。 JDK就是Java Development Kit JRE是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。   
在Windows系统下环境变量的名字是与大小写无关的,也就是说,JAVA_HOME和java_home是一样的。

最新文章

  1. VMware创建Linux虚拟机并安装CentOS(二)
  2. awk中的system和getline的用法
  3. [C]基本数据类型:整型(int)用法详解
  4. POJ2104 —— K-th number
  5. 一个ICMP单元
  6. iOS数据持久化
  7. 部署K2 Blackpearl流程时出错(与基础事务管理器的通信失败或Communication with the underlying transaction manager has failed.
  8. 1483:[HNOI]2009 梦幻布丁 - BZOJ
  9. Tomcat的错误 之 java.lang.IllegalArgumentException: Document base * does not exist
  10. elasticsearch REST API方式批量插入数据
  11. 部分iphone手机上的div的点击事件无效
  12. Linuxc - C语言下return 0的意义
  13. Socket编程实践(6) --TCP服务端注意事项
  14. Nodejs搭建基于express的应用,使用脚手架工具--express-generator
  15. 虚拟环境之virtualenvwrapper
  16. Tensorflow应用之LSTM
  17. 第三次作业--导入excel表格(完整版)
  18. EXCEL2010如何显示工作表中单元格内的公式
  19. day 92 跨域和CORS
  20. 浅析Windows系统调用——2种切换到内核模式的方法

热门文章

  1. java-PreparedStatement的用法
  2. 93、持续集成以及Jenkins的知识介绍
  3. LeetCode - 207. Course Schedule
  4. 关于GC垃圾回收的原理
  5. 使用Uboot启动内核并挂载NFS根文件系统
  6. 【CodeForces 624D】Array GCD
  7. 【Algorithm】堆排,C++实现
  8. 原型prototype -- 深入理解javascript
  9. Java Map 迭代
  10. Tomcat重定向
  11. IOS动画(Core Animation)总结 (参考多方文章)
  12. PAT 甲级真题题解(1-62)
  13. 【XSY3042】石像 拓扑排序 状压DP 洲阁筛
  14. Docker:dockerfile构建php项目 [八]
  15. SAP MM ME57 把PR转成PO
  16. 利用ThreadLocal管理事务
  17. 使用JDBC连接数据库报“找不到驱动程序”错误解决
  18. JSP中的编码问题
  19. Tomcat+Redis+Nginx实现session共享(Windows版)
  20. js如何判断用户是在pc端和还是移动端访问