什么是Java虚拟机及其运作方式?

使用Java进行编程时,Java虚拟机(JVM)是​​实名制。与名称相反,Java虚拟机也可以与其他编程语言结合使用。

通常,不必知道Java虚拟机是什么,甚至不需要知道它做什么,以便能够使用Java进行编程。另一方面,熟悉机器的内部工作原理确实有助于增加您的了解和全面的了解。

本文介绍了Java虚拟机的概念,它对您的作用以及一些最重要的利弊。尽管我一直尝试使其简单,并且肯定有更多有关该主题的文献,但是对Java和编程的基本了解是可以预期的。

高级语言

编程语言的语义被设计为与我们的自然语言接近,同时保持简洁并易于为机器解释。您可能知道,编程语言与机器代码(计算机用来构建和运行程序的指令集)完全不同。我们称之为高级语言;从机器代码中提取一个或多个抽象级别。

在能够运行之前,必须首先解释高级代码。许多编程接口都针对特定平台预先进行了编译( AOT编译)。这使程序在运行时效率更高,但与不同平台的兼容性却差很多。相比之下,Java使用称为 Java字节码 Java虚拟机的中间语言。

JVM和Java字节码

构建Java项目时,它将源代码(包含在* .java 源文件中)转换为Java字节码(通常包含在* .class文件中)。这使您的高级代码更接近机器代码,但还远远不够。该字节码是紧凑指令的集合。

在计算机,手机或任何其他支持Java的平台上运行Java应用程序时,实际上是将此Java字节码传递给Java虚拟机。 Java虚拟机中的解释器通常会在运行时按照所谓的及时编译的原理开始编译整个字节码。这会导致打开Java应用程序时通常会稍有延迟,但与解释编译相比,通常会提高程序性能。

该系统的主要优点是增加兼容性。由于您的应用程序在虚拟机中运行,而不是直接在您的硬件上运行,因此开发人员可以对它们的应用程序进行一次编程和构建,然后可以在实现Java虚拟机的每个设备上执行该应用程序。这一原则催生了Java口号:“ 编写一次,随处运行。"

Pro:兼容性和增强的安全性

除了代码兼容性之外, Java虚拟机还具有其他优势。其中最重要的一项是Java虚拟机带来的Java程序的相对安全性。安全性,这意味着在虚拟机上运行的程序如果发生错误,极不可能破坏用户的操作系统或损坏数据文件。

Con:不同的JVM实现和调试

这些不同的实现意味着您的代码可以在一个虚拟机上平稳运行Java虚拟机,但崩溃后又烧毁了。尽管实际上,您可以编写一次代码并在任何地方运行它,但是有时仍必须在不同的Java虚拟机实现中调试更复杂的代码,以确保正确的操作。

您是否有工作经验?使用Java虚拟机?如果是这样,我在这里有什么值得一提的吗?

图片来源:Michaelaw,Dcoetzee

标签: Java 编程