【问题标题】:How Translate ByteCode to Machine Native Code [closed]如何将字节码翻译成机器原生代码 [关闭]
【发布时间】:2011-11-17 12:57:56
【问题描述】:

我正在寻找一个翻译器,用于在执行前将 Java 字节码翻译成机器本机代码以提高性能。

听说OpenOffice是用JAVA做的,但是我在他的安装文件夹中看不到jar文件,所以可能有翻译器但是我找不到。

有没有人知道一些工具或商业产品可以做到这一点?

谢谢!

【问题讨论】:

  • 你看过 GCJ(GCC Java 编译器吗?)
  • JVM 本身包含一个 JIT 编译器,它会在需要时将字节码转换为机器码,但市场上的工具通常只是将 JVM 包装在一个可执行文件中,就像 ExcelsiorJET - excelsior-usa.com/jet.html跨度>
  • 只是给你一个关键字来搜索:你正在寻找一个 AOT(提前)编译器。
  • 看不到 jar 的原因有很多——自定义类加载器可以读取它喜欢的任何格式。所以我不会对 OpenOffice 的领导抱太大希望。
  • JVM 不仅在运行时将字节码编译为机器码,而且做得非常好。我建议您使用其中一种性能分析器工具(例如 Netbeans 中的一种)来确定代码的关键部分,并尝试自己改进它。如果不能,请将您的具体性能问题作为问题发布。 AOT 编译的代码可能会更慢,除非您只对更好的启动时间感兴趣。

标签: java bytecode aot


【解决方案1】:

有多种解决方案。一切都不理想。

看看here (exe4j)。要了解更多信息,请阅读此article

【讨论】:

  • 我不认为 exe4j 是 AOT - 它不会预编译为本机代码,AFAICT。
【解决方案2】:

看看 Avian JVM。请参阅我对此问题的回复here,以获取有关如何嵌入它以及可以使用哪些类库来生成独立可执行文件的指示。

如果您只需要托管语言/平台,您也可以使用.NET/Mono AOT。请参阅 Mono 2.x 中包含的 mkbundle 工具。

【讨论】:

    【解决方案3】:

    请查看https://www.graalvm.org/。 它可以从你的 jar 中构建一个原生镜像并将其作为二进制(原生代码)运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-21
      相关资源
      最近更新 更多