认识JDK、JRE、JVM

JDK、JRE、JVM之间的关系:

首先看看JDK与JRE的区别与联系,如下图所示:

由图可知: JDK = JRE + Tools&Tool APIs

JDK的核心是Java SE API。JavaSE API是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。Java SE API包括一些重要的语言结构以及基本图形,网络和文件I/O。我们在自己的程序中,调用前辈们写好的这些Class,来作为我们自己开发的一个基础。当然,现在已经有越来越多的性能更好或者功能更强大的第三方类库供我们使用。一般来说,    Java API的非I/O部分对于运行Java的所有平台是相同的,而I/O部分则仅在通用Java环境中实现。

JDK的种类:最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率要比Sun JDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。

JRE(Java RuntimeEnvironment,Java运行环境),运行JAVA程序所必须的环境的集合。J2RE是Java2 Runtime Environment,即Java运行环境,有时简称JRE.如果你只需要运行Java程序或Applet,下载并安装它即可。如果你要自行开发 Java软件,请下载JDK. 在JDK中附带有JRE.注意由于Microsoft对Java的支持不完全,请不要使用IE自带的虚拟机来运行 Applet,务必安装一个JRE或JDK.包含:

1. Java Runtime Environment(JRE)是可以在其上运行、测试和传输应用程序的Java平台。它包括Java JVM标准实现、Java平台核心类库和支持文件。它不包含开发工具——编译器、调试器和其它工具。

JVM:Java Virtual Mechinal(JAVA虚拟机)。JVM是JRE的一部分,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM 的主要工作是解释自己的指令集(即字节码)并映射到本地的 CPU 的指令集或 OS 的系统调用。Java语言是跨平台运行的,其实就是不同的操作系统,使用不同的JVM映射规则,让其与操作系统无关,完成了跨平台性。JVM 对上层的 Java 源文件是不关心的,它关注的只是由源文件生成的类文件( class file )。类文件的组成包括 JVM 指令集,符号表以及一些补助信息。

2. JRE所需辅助软件——Java Plug-in——以便在浏览器中运行applet.

一般情况下,如果您安装了JDK,那么你的电脑地下一定会有两套JRE、一套位于<jdk安装目录>\jre底下,另一套位于C:\Program File\JavaSoft底下(JDK1.4则是放在C:\Program File\Java底下)。如果你只下载了JRE而非JDK,那么就只会在C:\Program File\JavaSoft底下安装唯一的一套JRE。

由图可知JRE的地位就像一台PC一样,WIN32程序需要作业系统来帮我们执行,同样,Java应用程序需要JRE才能帮我们执行。当安装完JDK之后,如果分别在硬盘的不同地方安装了两套JRE,那么你可以想象你的电脑有两台虚拟的Java PC,都具有执行Java程序的功能。所以Java虚拟机只是JRE其中的一个成员而已,以更技术的角度来看,Java虚拟机只是JRE里头的一个动态连结函数库。

那么为什么会有两套JRE?真正原因是-JDK里面也附上了很多用Java写的开发工具(例如javac.exe、jar.exe等),而且它们都放置在<jdk安装目录\lib\tools.jar>之中。有人会问用Java编写的应用程序不是.class才对吗?其实在命令提示符中输入javac.exe和输入java -classpath

d:\j2sdk1.4.0\lib\tools.jar com.sun.tools.javac.Main会得到相同的结果,javac.exe只是一个包装器而已。JDK还有很多开发工具采用包装器的概念,在<jdk安装目录\bin>中可以看到。

JDK里面的工具几乎都是用Java所撰写的,所以JDK本身就是Java应用程序,因此要使用JDK附的工具来开发Java程序,也必需要自行附一套JRE才行,这就是<jdk安装目录>\jre底下需要一套JRE的原因。而位于Program File\底下那套JRE就是哪来执行我们自己撰写的Java应用程序。不过,两套JRE都可以用来执行我们自己写的程序,可以JDK内附的开发工具预设置使用包装器启动的情况下,都会自己去选择用<jdk安装目录>\jre底下的那套JRE。

这样又有新的问题了,像myeclipse等开发工具也有集成JRE,那么电脑就有很多套JRE,同样执行java.exe有可能会得到不同的结果。

那么我们执行的是那一个java.exe?

当我们输入java XXX的时候,java.exe的工作就是找到合适的JRE来执行。Java.exe依照下面的逻辑来寻找JRE:

(1)自己的目录下有没有JRE目录

(2)父目录底下JRE子目录

(3)查询windows registry(HKEY_LOCAL_MACHINE\Software\JavaSoft\Java\Runtime Environment\)

我们可以用path来指定执行哪个java.exe。当我们指定了path=d:\j2skd1.4.0\bin是,执行java.exe一定是d:\j2skd1.4.0\bin底下的java.exe,所以java.exe选到的是父目录d:\j2skd1.4.0底下的JRE。打开d:\j2skd1.4.0\jre\bin这个目录,您会看到client和server两个目录,里面都会分别看到jvm.dll,这就是Java虚拟机所在。

我们开发Java应用程序或是执行Java程序的时候,一定要记住两件事:

(1)那一个java.exe被执行。

(2)java.exe找到哪一套JRE。

参考来源:http://blog.csdn.net/fanyun_01/article/details/50972863
 参考来源:http://freesea.iteye.com/blog/160124

时间: 2024-10-07 11:23:44

认识JDK、JRE、JVM的相关文章

JDK,JRE,JVM的区别与联系

很多朋友跟我一样,已经使用Java开发很久了,可是对JDK,JRE,JVM这三者的区别与联系一直都是模模糊糊的,下面我们来总结一下. JDK Java Development ToolKit(Java开发工具包).JDK是整个Java的核心,包括了Java运行环境(Java Runtime Environment),一堆Java工具(javac/java/jdb)和Java基础类库(即Java API包括rt.jar).最流行的JDK是sun公司发布的JDK,除了sun之外,还有好多公司和组织都

4/2/2017 Sun.(Week1,01Day) dos命令,jdk&amp;jre&amp;jvm的关系,classpath和path区别

一.学习方法 1.独立思考 2.独立整理.总结知识点 3.整理Exception报错文档 4.莫钻牛角尖 5.敲代码,敲,猛敲,死里敲 一句话:"代码虐我千百遍,我视代码如初恋!!!" 二.常用dos命令 1.start:重新打开一个dos命令窗口 2.exit:退出dos命令窗口 3.cd:显示或进入指定目录 4.cls:清屏   5.dir:遍历并罗列当前目录下的文件和文件夹 6.help:罗列所有的dos命令 (注:①↑或↓:切换历史命令 ②. :当前目录 ③.. :上层目录 ④

JDK,JRE,JVM区别与联系

JDK : Java Development ToolKit(Java开发工具包).JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar). JDK有以下三种版本: J2SE,standard edition,标准版,是我们通常用的一个版本 J2EE,enterpsise edtion,企业版,使用这种JDK开发J2EE应用程序 J2ME,

JDK,JRE,JVM的区别

在lua,cocos-2d的开发中,需要用到java的东东,这些东东之间的联系往往不是很清楚明了,于是整理了下... 下图很好的表面了JDK,JRE,JVM三者间的关系: JDK Java Development Kit(JDK) 是 Java 语言的软件开发工具包(SDK).作为Java语言的SDK,普通用户并不需要安装JDK来运行Java程序,而只需要安装JRE(Java Runtime Environment).而程序开发者必须安装JDK来编译.调试程序. SE(J2SE),standar

什么是JDK JRE JVM?

金字塔结构 JDK=JRE+JVM+其它 运行Java程序一般都要求用户的电脑安装JRE环境(Java Runtime Environment):没有jre,java程序无法运行:而没有java程序,jre就没有用武之地. JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE.Java工具和Java基础类库. JRE(Java Runtime Environment)是运行JAVA程序所必须的环境的集合,包含JVM标准实

JDK,JRE,JVM区别与联系(转)

JDK : JavaDevelopment ToolKit(Java开发工具包).JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即JavaAPI 包括rt.jar).最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了属于自己的JDK,例如国外IBM公司开发了属于自己的JDK,国内淘宝也开发了属于自己的JDK,各个组织开发自己的JDK都是为

JDK,JRE,JVM区别与联系(ZZ)

http://www.cnblogs.com/hencehong/p/3252166.html 我们开发的实际情况是:我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用. JDK : Java Development ToolKit(Java开发工具包).JDK是整个JAVA的核心,包括了Java运行环

JVM学习笔记(一)JDK&amp;JRE&amp;JVM

JDK : Java Development ToolKit(Java开发工具包),包括了Java运行环境JRE(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar).JDK中包括JRE主要是因为JDK中自带的工具及例子,需要JRE支持才能运行. JRE:Java Runtime Enviromental(java运行时环境).也就是我们说的JAVA平台,所有的Java程序都要在JRE下才

JDK,JRE,JVM区别与联系-理解与概括

我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用. JDK : Java Development ToolKit(Java开发工具包).JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础

JDK JRE JVM 区别

JDK : Java Development ToolKit(Java开发工具包).JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar). 最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了属于自己的JDK,例如国外IBM公司开发了属于自己的JDK,国内淘宝也开发了属于自己的JDK,各个组织开发自己的JDK