目录
二、JRE(Java Runtime Environment)
既然想成为大数据专家,那么Java是必学的,第一次学Java对里面的概念会比较抽象,模糊,难以理解。那么下面学习下JDK、JRE和JVM的之间的关系:
JDK(Java Development Kit)简单理解就是Java开发工具包,是java的核心所在;
JRE(Java Runtime Enviroment)是Java的运行环境
JVM( java virtual machine)也就是常常听到Java虚拟机。
JDK是面向开发者的,JRE是面向使用JAVA程序的用户,JVM是java实现跨平台和系统的媒介所在。
一、JDK(Java Development Kit)
JDK(Java Development Kit)是Java开发工具包的缩写,是Java开发人员必备的工具之一。它包含了Java编译器、Java虚拟机、Java类库等开发工具和资源,可以帮助开发人员编写、调试和运行Java程序。
JDK是整个Java的核心,包括了JRE(Java运行环境),同时在jdk文件夹bin(通常我们配置jdk的环境变量的根目录)目录中包含了一些Java开发工具(例如:jconsole、javac、java、javadoc、native2ascii、jar等)。JDK=JRE+Java开发工具(编译器、反编译器、调试器等)。下面我简单介绍一下目前最常用的jdk1.8版本的目录内容。
JDK目录剖析:
bin:一堆exe文件,可执行的开发工具,最主要的是javac, 例如:jconsole、javac、java、javadoc、native2ascii、jar。
jre:java运行环境,包括JVM+Java基础和核心类库 。
lib:本地资源库,包含dt.jar+tools.jar的常用类库,开发依赖包。
include:java和JVM交互用的头文件。
二、JRE(Java Runtime Environment)
JRE(Java Runtime Environment),即Java运行环境,支持Java程序运行的标准环境,包含JVM标准实现及Java核心类库。 JRE中包含了Java virtual machine(JVM),runtime class libraries和Java application launcher,这些是运行Java程序的必要组件。通过它,Java的开发者才得以将自己开发的程序发布到用户手中,让用户使用。JRE=JVM+Java基础和核心类库。
JRE目录剖析:
bin:有java.exe但没有javac.exe,无法编译Java程序,但可以运行Java程序,可以把这个bin目录理解成JVM。
lib:Java基础和核心类库,如rt.jar,也包含JVM运行时需要的类库。
三、JVM(Java Virtual Machine)
JVM(Java Virtual Machine)是Java程序的运行环境,它是一个虚拟的计算机,它能够在不同的操作系统上运行Java程序。JVM将Java程序编译后的字节码解释成机器码,然后在计算机上执行。
JVM是一种抽象,虚拟出来的计算机,和实际的计算机一样,它具有指令集并使用不同的存储区域,它负责执行指令,还要管理数据,内存和寄存器,指令集,寄存器,类文件的格式,栈,垃圾回收堆,存储区等。
Java虚拟机,是JRE的一部分。它是整个java实现跨平台的最核心的部分,负责解释执行字节码文件,是可运行java字节码文件的虚拟计算机。所有平台的上的JVM向编译器提供相同的接口,而编译器只需要面向虚拟机,生成虚拟机能识别的代码,然后由虚拟机来解释执行。
JVM主要负责运行Java编译器编译后的字节码文件(*.class文件)。这些字节码只面向JVM,不同平台的JVM都是不同的,但它们都提供了相同的接口。JVM是Java程序跨平台的关键部分,只要为不同平台实现了相应的虚拟机,编译后的Java字节码就可以在该平台上运行。把字节码解释成具体平台上的机器码执行。JVM自己无法执行,必须要联合JRE中的Java基础&核心类库才能使用。
四、JDK,JRE,JVM三者关系图
通过上图可以看出JDK包含JRE,而JRE包含JVM。