[转载]SDK、JDK、JRE和JVM的关系总结

一、SDK、JDK、JRE和JVM的关系

 

SDK(Software Develop Kit,软件开发工具包),用于帮助开发人员的提高工作效率。各种不同类型的软件开发,都可以有自己的SDK。Windows有Windows SDK,DirectX 有 DirectX 9 SDK,.NET开发也有Microsoft .NET Framework SDK。JAVA开发也不含糊,也有自己的Java SDK。

  Java SDK最早叫Java Software Develop Kit,后来改名为JDK,即Java Develop Kit。

  JDK作为Java开发工具包,主要用于构建在Java平台上运行的应用程序、Applet 和组件等。 JDK是整个Java的核心,包括了Java运行环境(JRE),一堆Java工具和Java基础的类库(rt.jar)。

  JRE(Java Runtime Environment), Java运行环境 所有的Java程序都要在JRE下才能运行。JDK的工具也是Java程序,也需要JRE才能运行。为了保持JDK的独立性和完整性,在JDK的安装过程中,JRE也是安装的一部分。所以,在JDK的安装目录下有一个名为jre的目录,用于存放JRE文件。

  JVM(Java Virtual Machine,Java虚拟机)是JRE的一部分。它是一个虚构出来的计算机 ,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台。

  下图清晰地展示了JDK(Java SDK)、JRE和JVM之间的关系:

 

可进一步了解 JDK和JRE目录的文件结构

 

二、为什么安装JDK后可能会出现两套相同的JRE?

jdk安装目录下会有一套JRE。

另一套JRE:C:\Program Files\Java\jre6(用户选择的安装目录)---安装jdk后可以选择安装jre

根本原因就是:jdk提供了很多开发工具,本身就是用java编写的,运行这些工具的时候,就需要jre。

 

很容易证明这点:

JDK里面有很多用Java所编写的开发工具(如javac.exe、jar.exe等),而且都放置在 <JDK安装目录>\lib\tools.jar 里。

① 命令行执行javac命令,可以看到输出javac命令提示

② 重命名jdk安装目录下的\lib\tools.jar为tools1.jar,然后执行javac,就会报错java.lang.ClassNotFoundException。

③ 执行java -classpath ..\lib\tools1.jar com.sun.tools.javac.Main 又正确了。

本质上javac.exe只是一个包装器(wrapper),底层调的是com.sun.tools.javac.Main,目的是为了让开发者免於输入太长的指令。既然com.sun.tools.javac.Main是用java编写的,那么运行时就需要jre。

 

 

三、如果一台电脑在安装JDK后有两套以上的JRE,谁来决定使用哪套JRE呢?

这个重大任务就落在java.exe身上。Java.exe的工作就是找到合适的JRE来运行Java程序。

执行java.exe时,一定要记得两件事: 
1. 那一个java.exe被执行:先搜索当前目录,然后搜索path指定的目录。
2. java.exe找到哪一套JRE搜索顺序如下:    

① 自己的目录下有没有jre目录。

② 父目录底下jre子目录。

③ 查询Windows:Registry( HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment\ )。

 

[参考]

 

SDK、JDK、JRE和JVM的关系总结: http://javaeyes.iteye.com/blog/30667

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值