`

JDK,JRE,JVM区别与联系

    博客分类:
  • JDK
阅读更多

JDK,JRE,JVM区别与联系

文章分类:Java编程

    很多朋友可能跟我一样,已经使用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都是为了在某些方面得到一些提高,以适应自己的需求,比如IBM的JDK据说运行效率就比SUN的JDK高的多。 但不管怎么说,我们还是需要先把基础的 Sun JDK 掌握好。

    JDK有以下三种版本:

J2SE,standard edition,标准版,是我们通常用的一个版本 J2EE,enterpsise edtion,企业版,使用这种JDK开发J2EE应用程序 J2ME,micro edtion,主要用于移动设备、嵌入式设备上的java应用程序

 

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

 

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

 

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

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



 

 

 

    我们开发的实际情况是:我们利用 JDK (调用JAVA API)开发了属于我们自己的 JAVA 程序后,通过 JDK 中的编译程序( javac )将我们的文本 java文件 编译成 JAVA 字节码,在 JRE 上运行这些 JAVA 字节码, JVM 解析这些字节码,映射到 CPU 指令集或 OS 的系统调用。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics