JRE=JVM+libs【Java运行时所需要的类库】
JDK=JRE+java开发工具
Java跨平台原理
由源文件(.java)—>字节码文件(.class)(二进制文件)-----> 解释---->Unix,Win,Linux等机器。
1.一次编译,到处运行
2.编译器的作用:将源文件编译成class文件
3.虚拟机的作用:将字节码文件解释成对应平台机器码并执行。
4.java可以实现跨所有的平台?只有提供并且安装了相对应的虚拟机就可以跨该平台。
5.虚拟机和解释器的关系:解释器是虚拟机的一个重要的组成部分。
6.Java语言的执行要经过编译和解释两个阶段。
JDK JRE JVM 分别是什么,有什么作用,简述它们之间的关系
JDK
JDK:Java Development Kit
含义:Java开发工具包
JRE
全名:Java runtime environment
含义:Java运行环境
JVM
全名:Java Virtual Machine
含义:Java虚拟机
使用人群:
jdk 是给开发人员使用的, jre和jvm是给普通用户使用
一、JDK(Java Development Kit)
JDK(Java Development Kit),即Java开发工具包,是一个编写Java应用程序的开发环境。
JDK是整个Java的核心,包括了JRE(Java运行环境)与一些Java开发工具(例如:jconsole、javac、java、javadoc、native2ascii、jar等)。JDK=JRE+Java开发工具(编译器、调试器等)。
主流的JDK是Sun公司发布的JDK,除了Sun公司之外,还有很多公司和组织都开发了自己的JDK。例如:IBM公司开发的JDK,BEA公司的JDK,还有GNU组织开发的JDK。
jdk1.8目录包含:
bin:一堆exe文件,可执行的开发工具,最主要的是javac, 例如:jconsole、javac、java、javadoc、native2ascii。
jre:java运行环境,包括JVM+Java基础&核心类库 。
lib:包含dt.jar+tools.jar的常用类库,开发依赖包。
db:jdk从1.6之后内置了Derby数据库,它是是一个纯用Java实现的内存数据库,属于Apache的一个开源项目。用Java实现的,所以可以在任何平台上运行;另外一个特点是体积小,免安装,只需要几个小jar包就可以运行了。
include:java和JVM交互用的头文件。
二、JVM(Java Virtual Machine)
JVM(Java Virtual Machine),即Java虚拟机,运行在操作系统之上,存在于内存中,与内存打交道,与硬件没有直接交互,是Java语言实现跨平台的核心。
JVM主要负责运行Java编译器编译后的字节码文件(*.class文件)。JVM在执行字节码时,把字节码解释成具体平台上的机器码执行。JVM自己无法执行,必须要联合JRE中的Java基础&核心类库才能使用。
JVM是一种抽象,虚拟出来的计算机,和实际的计算机一样,它具有指令集并使用不同的存储区域,它负责执行指令,还要管理数据,内存和寄存器,指令集,寄存器,类文件的格式,栈,垃圾回收堆,存储区等。
三、JRE(Java Runtime Environment)
JRE(Java Runtime Environment),即Java运行环境,支持Java程序运行的标准环境,包括了JVM(Java虚拟机)的标准实现以及Java基础&核心类库。JRE=JVM+Java基础&核心类库。
jre1.8目录包含:
bin:有java.exe但没有javac.exe,无法编译Java程序,但可以运行Java程序,可以把这个bin目录理解成JVM。
lib:Java基础&核心类库,如rt.jar,也包含JVM运行时需要的类库。
四、JDK&JRE&JVM总结:
JRE=JVM+Java基础&核心类库。
JDK=JRE+Java开发工具(编译器、调试器等)。
JRE是个运行环境,JDK是个开发环境,编写Java程序的时候需要JDK,而运行Java程序的时候就需要JRE。因为JDK里面已经包含了JRE,因此只要安装了JDK,就可以开发Java程序,也可以正常运行Java程序。
但由于JDK包含了许多与运行无关的内容,例如编译器、调试器等,占用的空间较大,
因此运行普通的Java程序无须安装JDK,而只需要安装JRE即可(例如在服务器中运行Java程序)。
如下图:
关联关系:简单来说就是JDK包含JRE,JRE包含JVM的关系
Java基础:JDK、JRE、JVM的区别与联系
JVM就是我们常说的java虚拟机,它是整个java实现跨平台的 最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可 以在虚拟机上执行,也就是说class并不直接与机器的…
三者联系:JVM不能单独搞定class的执行,解释class的时候JVM需要调用解释所需要的类库lib。在JDK下面的的jre目录里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。