您的位置:首页 > 编程语言 > Java开发

Java中JDK,JRE,JVM的区别

2014-12-06 20:36 197 查看
Sun官方所定义的Java技术体系包括以下几个组成部分:

——Java程序设计语言

——各种硬件平台上的Java虚拟机

——Class文件格式

——Java API类库

——来自商业机构和开源社区的第三方Java类库



JDK : JavaDevelopment ToolKit(Java开发工具包)

JDK是整个J***A的核心,包括了Java运行环境(Java
Runtime Envirnment),一堆Java工具(javac/jar/jdb等)和Java基础的类库(即JavaAPI
包括rt.jar)。

最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了属于自己的JDK,例如国外IBM公司开发了属于自己的JDK,国内淘宝也开发了属于自己的JDK,各个组织开发自己的JDK都是为了在某些方面得到一些提高,以适应自己的需求,比如IBM的JDK据说运行效率就比SUN的JDK高的多。但不管怎么说,我们还是需要先把基础的Sun
JDK掌握好。
JDK有以下四种版本:
——J2SE,standard edition,标准版,支持面向桌面级应用(windows下的应用程序)的Java平台

——J2EE,enterpsise edtion,企业版,使用这种JDK开发J2EE应用程序,支持使用多层架构的企业应用(ERP、CRM等)
——J2ME,micro edtion,主要用于移动设备、嵌入式设备上的java应用程序
——Java Card,支持一些Java小程序(Applets)运行在小内存设备(如智能卡)上的平台。

我们常常用JDK来代指Java
API,Java API是Java的应用程序接口,其实就是前辈们写好的一些javaClass,包括一些重要的语言结构以及基本图形,网络和文件I/O等等
,我们在自己的程序中,调用前辈们写好的这些Class,来作为我们自己开发的一个基础。当然,现在已经有越来越多的性能更好或者功能更强大的第三方类库供我们使用。

JRE:Java
Runtime
Enviromental(java运行时环境
)

也就是我们说的J***A平台,所有的Java程序都要在JRE下才能运行。包括JVM和J***A核心类库和支持文件。与JDK相比,它不包含开发工具——编译器、调试器和其它工具。

JVM:Java VirtualMechinal(J***A虚拟机)

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

它主要负责将java程序生成的字节码文件解释成具体系统平台上的机器指令。让具体平台如window运行这些Java程序。
三者关系:

JVM:将字节码文件转成具体系统平台的机器指令。

JRE:JVM+Java语言的核心类库。

JDK:JRE+Java的开发工具。

下图很好的表面了JDK,JRE,JVM三者间的关系



我们开发的实际情况是:我们利用JDK(调用J***A API)开发了属于我们自己的J***A程序后,通过JDK中的编译工具(javac)将我们的文本java文件编译成J***A字节码,在JRE上运行这些J***A字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: