你知道为什么Java需要虚拟机吗?
曾几何时,当我们第一次了解Hello world时,我们怎么知道在执行代码时,一种神奇的语言Java并没有直接将我们编写的Java代码交付到操作系统的底部进行解析和编译,而是使用JDK编译Java代码,编译成dotclass文件,然后将dotclass文件传输到JRE。(dotclass实际上是.Class)
JRE是Java运行时环境,因为Java有一个秘密武器,那就是JVM!JVM是JRE的一个重要核心。可以说,JVM是JRE的灵魂,控制身体,执行代码的艺术。JRE包含JVM调用所需的几乎所有类库。可以说JVM是JRE的驱动程序,是整个JDK的驱动程序,也是整个java的驱动程序!
你好,我是人生激活码。今天,让我们简单地谈谈为什么Java需要JVM。今天的话题非常大,但限于篇幅,我们只是简单地谈谈!
一、快速理解JVM
JVM是Java虚拟机,也就是Java虚拟机的意思。基本上,“虚拟”这个词也可以看出,如果你想在操作系统上实现许多功能,你需要一个具有完整架构和强大执行力的执行标准!这有点像“操作系统”吗?JVM实际上是一种Java指令执行规范,它构成了JVM。当我们学习java时,我们都知道有JDK和JRE。当我们深入研究的时候,我们会发现,也有JVM的仙女。。。
让我们先澄清一下这些事情之间的关系:
让我先给出答案:JDK包含JRE,JRE包含JVM。
我们都知道JDK是一个java开发工具包,也称为toolkit,因为它的主要功能是为JVM提供额外的类库工具,例如用于编译java文件的javac二进制程序,这些程序存储在bin目录中。很多程序都安装了bin目录,这不是很奇怪吗?因为这个bin的意思是binary,它是binary的缩写,也就是二进制文件的目录。
除了javac,类似的小工具还包括Java(bin目录中的.Exe二进制文件)、jar和其他文件。好的,那么JRE呢?JRE为Java程序提供了一个执行环境。有了JRE,我们的Java程序可以在浏览器中运行。为什么是JRE?由于我们的JVM,我们都知道Java只需编译一次,就可以在任何地方运行。这是怎么回事?
这实际上是JRE的功劳。我们的JRE中文版不是Java运行时环境吗?是的,我们知道Java在JVM中运行。Java运行时环境不是JVM的运行时环境吗?俗话说,聪明的女人没有稻草就做不了砖。JVM不可能单独执行所有Java程序。它还需要一些用底层C语言编写的类库。此时,JRE的重要性显而易见。JRE为JVM提供了几乎所有的依赖类库。这样,它真的实现了一次性编译,到处运行!
JVM可以执行Java程序。它是否直接执行java文件?不,正如我们所说,Java和操作系统之间没有直接的联系,Java文件被交给操作系统进行处理,但Java文件是从javac二进制文件类文件(也称为字节码文件)编译而来的。字节码文件是否直接执行到操作系统?不,让我们看看普通程序和Java程序执行之间的区别:
二、Java程序的加载过程
这是什么意思?这意味着操作系统不知道字节码文件。字节码文件还需要通过JVM加载到机器代码中,即操作码操作代码(目前还不是全部),它被翻译成机器代码,即操作系统返回执行Java程序之前可以理解的语言。这是什么,这实际上有点像我们通常所说的黑盒测试。我们看不到整个过程。我们只能看到我们编写的Java规范代码是由操作系统执行的!
我们说,在JVM识别字节码文件后,它将字节码指令翻译成操作系统,从而控制操作系统执行相应的功能。因此,当谈到翻译时,我们必须简要介绍JVM翻译字节码文件的方式和方法。JVM有两种常见的方法来翻译字节码。一种是即时加载方法,一种是解释和执行。解释执行是将字节码文件中的操作码和操作数转换为操作指令,即机器码。即时加载是在特定情况下触发的。它是在字节码转换成机器码后执行的。如果你想知道字节码文件包含什么,当我通过JVM时,我会添加你的朋友,我会与你自由交谈!尽管它将不得不等到年底