Java知识理解:为什么安装JDK以及JDK、JRE、JVM三者关系及相关理解

简介: Java知识理解:为什么安装JDK以及JDK、JRE、JVM三者关系及相关理解

大家都知道电脑的操作系统是由汇编和C语言写出,因此操作系统无法直接识别其他语言。这时我们就需要添加一个(翻译)编译环境,将其他语言(翻译)编译为操作系统能够识别的语言。


Java为我们提供了一个很好的

当我们在电脑编译Java语言时就需要借助一个翻译的平台-----可跨系统的----JDK。


编译过程大致为:

java源程序—>JDK把java翻译成.class—>jre(JDK中包含jre)运行.class文件解释为中间代码—>送给操作系统(C语言识别、汇编语言识别)—>转变为二进制


下面是根据我的理解制作的流程图:

以Windows系统为例

JDK把.java文件翻译成.class文件—>jre运行.class文件—>送给操作系统识别—>汇编语言识别—>转变为二进制,机器进行操作

20190116202749304.png

JDK是 Java 语言的软件开发工具包(SDK)。在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm(真正对java进行翻译的),lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre。


一、什么是JDK


通俗来说:JDK 是整个JAVA的核心,包括了Java运行环境,一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。


JDK是java开发工具包,我们学java都会先在机器上装一个JDK,JDK目录下面有六个文件夹:一个src类库源码压缩包、和其他几个声明文件。其中,真正在运行java时起作用的 是以下四个文件夹:bin、include、lib、 jre。其中JDK包含JRE,而JRE包 含JVM。

bin:最主要的是编译器(javac.exe)

include:java和JVM交互用的头文件

lib:第三方类库的存放

jre:java运行环境


总的来说JDK是用于java程序的开发编译,而jre则是为运行 .class文件提供环境 而没有编译功能。


20190116102207679.png

二、什么是JRE


通俗来说:JRE是指java运行环境,包含JVM及Java核心类库。 我们编写的Java程序必须要借助JRE才能运行,光有JVM还不能完成class的执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。(jre里有运行.class的java.exe)


2019011610330164.png


三、什么是JVM


JVM(Java Virtual Machine),即java虚拟机,为 java运行时的环境制定规则,是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。针对java用户,也就是拥有可运行的.class文件包(jar或者war)的用户。里面主要包含了jvm和java运行时基本类库(rt.jar)。rt.jar可以简单粗暴地理解为:它就是java源码编译成的jar包。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。


四、JDK、JRE、JVM三者的联系与区别

1.三者联系:


JVM不能单独搞定class的执行,解释class的时候JVM需要调用解释所需要的类库lib。在JDK下面的的jre目录里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和

lib和起来就称为jre。 JVM+Lib=JRE。

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


JDK把java翻译成.class—>jre运行.class—>送给操作系统识别—>C语言识别—>汇编语言识别—>转变为二进制


2.三者区别:


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


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


(3)JVM和JRE区别: JVM定义执行规则,JRE按照规则执行。


五、相关理解


不使用eclipse编辑器也可以通过记事本写java并成功运行,只要有对应的运行环境即可,只是eclipse为我们提供了便捷。


脚本语言:vb(window系统自带识别环境)、shell(Linux系统自带识别环境)

js(自带浏览器识别)

脚本语言操作系统本身也是并不识别,只是操作系统提前配置了识别环境,我们只需要通过记事本编辑,完成后更改后缀名就可以运行。所以我们认为不需要进行编译可以直接在操作系统执行的就是脚本语言。

目录
相关文章
|
3天前
|
监控 Java 测试技术
Java中的JVM调优技巧
Java中的JVM调优技巧
|
1天前
|
监控 Java 调度
探秘Java虚拟机(JVM)性能调优:技术要点与实战策略
【6月更文挑战第30天】**探索JVM性能调优:**关注堆内存配置(Xms, Xmx, XX:NewRatio, XX:SurvivorRatio),选择适合的垃圾收集器(如Parallel, CMS, G1),利用jstat, jmap等工具诊断,解决Full GC问题,实战中结合MAT分析内存泄露。调优是平衡内存占用、延迟和吞吐量的艺术,借助VisualVM等工具提升系统在高负载下的稳定性与效率。
12 1
|
3天前
|
Java 编译器
Java健壮性 Java可移植性 JDK, JRE, JVM三者关系 Java的加载与执行原理 javac编译与JAVA_HOME环境变量介绍 Java中的注释与缩进 main方法的args参数
Java健壮性 Java可移植性 JDK, JRE, JVM三者关系 Java的加载与执行原理 javac编译与JAVA_HOME环境变量介绍 Java中的注释与缩进 main方法的args参数
5 1
|
3天前
|
存储 监控 算法
深入理解Java虚拟机(JVM)原理与调优技巧
深入理解Java虚拟机(JVM)原理与调优技巧
|
3天前
|
Oracle Java 关系型数据库
在Linux环境下采用压缩包方式安装JDK 13
在Linux环境下采用压缩包方式安装JDK 13
|
4天前
|
Java UED 开发者
JVM逃逸分析原理解析:优化Java程序性能和内存利用效率
JVM逃逸分析原理解析:优化Java程序性能和内存利用效率
|
5天前
|
Linux 测试技术 开发工具
CentOS Linux 8使用阿里源(安装jdk11、git测试)
CentOS Linux 8使用阿里源(安装jdk11、git测试)
20 1
|
11天前
|
Java 关系型数据库 MySQL
杨校老师课堂之Java项目部署到云端服务器之安装MySQL、Jdk、Tomcat
杨校老师课堂之Java项目部署到云端服务器之安装MySQL、Jdk、Tomcat
19 0
杨校老师课堂之Java项目部署到云端服务器之安装MySQL、Jdk、Tomcat
|
23天前
|
Oracle Java 关系型数据库
玩客云安装Armbian和部署jdk环境
该文介绍了在玩客云设备上安装Armbian系统和Java SDK的步骤。首先,需要准备玩客云设备、Armbian镜像文件和USB工具。然后,通过短接点刷入Armbian系统,并通过SSH访问。接着,从可信源下载Java SDK,将其解压并移动到合适目录,编辑环境变量使其生效。最后验证Java安装成功。注意选择兼容版本并备份数据。内容涵盖了ROM开发相关技术。
|
24天前
|
Oracle Java 关系型数据库
Java入门——开发环境、入门程序(搭建Java开发环境、安装JDK 验证、JDK、编写代码、编译代码、运行代码)
Java入门——开发环境、入门程序(搭建Java开发环境、安装JDK 验证、JDK、编写代码、编译代码、运行代码)
31 3