Java基础回顾---JVM&JDK&JRE

定义:

JVM(java Virtual Machine)Java虚拟机

JDK(Java Develpment Kit) java 开发工具 

JRE(Java Runtime Environment) java运行时环境 

-------------------------------------------------------------------------------------------------------------

JDK: 是java开发工具包,是Sun公司针对java开发人员的产品,jdk中包含jre,在jdk的安装目录下有一个jre的目录,里面有两个文件夹bin和lib,在这里可以认为bin里面就是jvm,lib中是java工作需要的类库,而java和lib合起来就称为jre 。

JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具( Java编译器(javac.exe)、Java运行时解释器(java.exe)、Java文档化化工具(javadoc.exe)及其它工具及资源 )和Java基础的类库(即Java API)。 其中,真正在运行java时起作用的 是以下四个文件夹:bin、include、lib、 jre。有这样一个关系,JDK包含JRE,而JRE包 含JVM。 bin:最主要的是编译器(javac.exe) 

include:java和JVM交互用的头文件 ,lib:类库 ,jre:java运行环境 ,总的来说JDK是用于java程序的开发,而jre则是只能运行class而没有编译的功能。

JRE,包含JVM标准实现及Java核心类库。JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器),光有JVM还不能成class的 执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。 (jre里有运行.class的java.exe) 

JVM ,它是整个java实现跨平台的最核心的部分,所有的java程序首先被编译为.class文件,这种类文件可以在虚拟机上运行,也就是说class并不直接与机器的操作系统相对应。经过虚拟机间接的与操作系统交互,由虚拟机将程序解释给本地系统执行,只有jvm还不能将class执行,因为在解释class的时候jvm需要调用解释所需要的类库lib,而jre包含lib类库,jvm屏蔽了具体操作系统平台的相关信息,使得java程序只需要生成在java虚拟机上运行的目标代码。可以在多种平台(操作系统)上不加修改的运行 。

-----------------------------------------------------------------------------------------------------------------

区别:

1.JDK是给开发人员使用的,而JRE和JVM针对普通用户。

2.JDK和JRE区别:在bin文件夹下会发现,JDK有javac.exe而JRE里面没有,javac指令是用来将java文件编译成class文件的,这是开发者需要的,而用户(只需要运行的人)是不需要的。JDK还有jar.exe, javadoc.exe等等用于开发的可执行指令文件。这也证实了一个是开发环境,一个是运行环境。 

3.JRE和JVM区别:JVM并不代表就可以执行class了,JVM执行.class还需要JRE下的lib类库的支持,尤其是rt.jar。

----------------------------------------------

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

----------------------------------------------

参考资料:原文

 

posted @ 2020-07-01 17:25  s硕s  阅读(186)  评论(0编辑  收藏  举报