【问题标题】:Java virtual machine (JVM) - In what language JVM coded?Java 虚拟机 (JVM) - JVM 用什么语言编码?
【发布时间】:2019-04-25 07:25:51
【问题描述】:

是否基于 JVM 软件?如果是这样,JVM 是用哪种语言编码的?

【问题讨论】:

  • @bignose:感谢您的指正,希望现在可以了

标签: java jvm


【解决方案1】:

几乎所有的 JVM 都是用软件实现的。但是,JVM 是任何以符合JVM specification 的方式解释Java bytecode 的东西,还有一些hardware-based JVMs

【讨论】:

  • 甚至还有 JVM 的半硬件实现。见en.wikipedia.org/wiki/Jazelle
  • 如果用硬件实现,它就不再是真正的“虚拟”机器了,是吗?
  • @Michael,哈哈,不,我猜不是......这有点像人们说“ATM 机”而不是 ATM,但我认为 OP 仍然想知道 Java 可以在硬件级别进行解释。
  • 除了通常很难知道边界在哪里。例如,微型或纳米编码机器,“指令集”的一部分是通过捕获到软件实现来实现的机器等。
【解决方案2】:

Java 虚拟机是一个formal specification,通过将字节码解释为虚拟机操作集中的指令来说明虚拟机需要如何表现

如果有某种机制可以解释字节码并以正确的方式运行,那么它就是一个 JVM,不管它是如何实现的。

这意味着JVM 可以在程序中实现,或者同样可以在硬件中实现。如果你想知道是哪种情况,你需要谈论some specific implementation

【讨论】:

    【解决方案3】:

    有点……它更像是一个标准,它产生了许多软件。你不能 100% 确定 JVM 是用什么语言编写的,但在大多数情况下,我敢打赌它是用 C/C++ 编写的。

    【讨论】:

    • FWIW,它是使用 Visual Studio 和 gcc 用 C++ 编写的。其中一位 Java 工程师是邻居 :)
    • @Michael,没有单一的 JVM。 Sun Java JVM 是一种实现……还有其他实现,包括在 Mac OS X 上使用的实现,还有一些开源 JVM。
    【解决方案4】:

    为了回答我认为是您的问题,JVM 是用 C++ 编写的。然而,大多数 Java 库都是用 Java 编写的。

    同样适用于 .NET:代码 CLR/VM 是用 C++ 编写的,但类库是用 C# 编写的。

    【讨论】:

      【解决方案5】:

      JVM 代表“Java 虚拟机”。它是一个虚拟化环境,可为 Java 应用程序提供一种在多个不同物理环境中以相同方式运行的方式。

      这个想法是 Java 代码由 JVM 编译和执行。 JVM 为实际代码提供了相同的外观和感觉,无论它是在大规模并行大型机上运行还是在运行 Windows XP 的单处理器 PC 上运行。

      如今,JVM 被用于 Java 以外的语言(例如 Scala)。

      【讨论】:

      • @Andrew 你能指定它是否是一个软件
      【解决方案6】:
      JVM is a specification that provides runtime environment in which java bytecode can be executed.
      

      Jvm 将您的字节码解释为机器可理解的代码

      JVM执行以下操作:

       - Loads code
       - Verifies code
       - Executes code
       - Provides runtime environment 
      

      为此,必须编写代码,
      所以规范的实现在这里完成(主要是 sun 提供)。
      这个实现是 JRE

      JVM 还告诉必须如何发生以下事情:

       - Memory area
       - Class file format
       - Register set
       - Garbage-collected heap
       - Fatal error reporting etc.
      

      所以这一切都是软件,在这里找到工作细节JVM Details

      【讨论】:

      • 不,JVM 规范 是一个规范。 JVM 是由其规范定义的抽象,可以在软件、硬件或介于两者之间的任何东西中实现。它也松散地用于指代正在运行的进程。
      【解决方案7】:

      Java 虚拟机是一个旨在执行其他程序的程序。

      JVM 有两个主要功能:允许 Java 程序在任何设备或操作系统上运行(称为“一次编写,随处运行”原则),以及管理和优化程序内存。 1995 年 Java 发布时,所有计算机程序都写入特定的操作系统,程序内存由软件开发人员管理。

      JVM 是一种软件规范。 JVM 规范以某种循环的方式强调其实现细节并未在规范中定义,以便在其实现中发挥最大的创造力。

      因此,JVM 所要做的就是正确运行 Java 程序。听起来很简单,甚至从外面看起来也很简单,但这是一项艰巨的任务,尤其是考虑到 Java 语言的强大功能和灵活性。

      查看文章至learn more about JVM

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-10
        相关资源
        最近更新 更多