有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么不能使用JIT编译器生成二进制文件?

JIT编译器用于将java字节码转换为本机语言。据我所知,没有一个程序可以直接将java字节码转换成二进制文件,比如。exe文件。那么,为什么不能使用JIT编译器从字节码生成二进制代码呢


共 (5) 个答案

  1. # 1 楼答案

    准时制=准时制。安*。exe是在执行之前编译的</nitpick>;)

    正如其他人所说,JVM不仅仅是将字节码编译成本机代码。但是,JVM的这些部分可以放入本机库(“dll”)

    至少有一个项目可以用java代码生成本机二进制文件:GCJ(http://en.wikipedia.org/wiki/Gcj)。我不知道它有多好,也不知道是否有可用的windows版本。可能还有其他Java到本机编译器

  2. # 2 楼答案

    JIT编译器动态编译代码

    • 它为不同风格的CPU生成不同的代码
    • 它为不同的内存模型生成不同的代码,例如,如果最大堆大小为<;4 GB,<;24GB,<;32 GB或更高,您将在每种情况下生成不同的代码
    • 它将在加载和卸载类时重新编译代码
    • 它将根据代码的使用方式重新优化代码。e、 g.如果曾经关闭的标志没有打开,visa国际组织也没有打开

    静态编译器不能做这些事情

  3. # 3 楼答案

    JIT和编译器的目标通常是不同的,我认为这是主要原因

    也就是说,Maxine VM包含一个用Java编写的JIT,用于编译整个VM本身,输出被写入所谓的bootimage,本质上是二进制文件。然而,即使这个二进制文件也需要一个名为loader的可执行文件来启动

    因此,至少有一个用于生成二进制文件的JIT示例, 但通常,JIT的目标并不包括生成二进制文件

  4. # 4 楼答案

    IBMJava运行时能够将动态字节码到本机代码编译的结果存储在其共享数据缓存中,并在JVM(prooflink)之间共享

  5. # 5 楼答案

    Jit是一种重新编译器,因此对于任何特定的系统平台,它都会将字节码编译成特定的系统代码。因此,我们不能直接使用Jit将Java字节码转换为二进制可执行文件

    当jit生成二进制代码时,其二进制格式将不支持其他平台。Jit编译器的主要用途是作为Java的第二个编译器进行快速编译。因此,Jit不能从Java字节码生成二进制文件