JDK,JRE,JVM区别与联系

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

的系统调用。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

昵称 *