是否有适用于 Mac OSX 的本机 Java AOT?

Posted

技术标签:

【中文标题】是否有适用于 Mac OSX 的本机 Java AOT?【英文标题】:Is there a Native Java AOT For Mac OSX? 【发布时间】:2011-06-30 09:17:47 【问题描述】:

我想知道 Mac 是否有 AOT 编译器可以将 Java 应用程序编译为本机可执行文件,从而消除对 JRE 的需求?

我已经看到了适用于 Windows 和 Linux 的商业示例,但找不到任何适用于 Mac 的示例,除了开源 GCJ,它在一些 poplar java 库中取得了有限的成功。

Mac 的本机可执行文件将摆脱 JRE,并且可能允许对其进行签名,从而允许 Java 开发的应用程序可能被应用商店接受。

【问题讨论】:

【参考方案1】:

Install4J 可以将您的 Java 编译为原生 OS X 应用程序,但系统仍应安装 JRE。 Install4J 只是为 JRE 调用创建一个包装器。

【讨论】:

这不是一个真正的本机 OS X 应用程序,就像你说的它是一个包装器并且仍然需要 JRE。真正的 AOT 会将 Java 代码编译成真正的本机应用程序,因此不存在这种依赖关系。【参考方案2】:

您可以为此使用Avian JVM。 (Wikipedia article)。

您可以将您的应用程序编译为独立的可执行文件,它支持不同的类库:openjdk、android 类库实现(即使您没有在 Android 上运行),以及一个自定义类库非常有限(基本上他们会向其中添加方法,因为作者需要 API 来运行自己的应用程序)。

在代码库中的README 中有描述如何嵌入 VM 并生成将运行您的应用程序的“启动”C++ 程序,如果您想 AOT 编译所有方法并生成二进制图像,无需在运行时进行 JIT 编译。

如果没有启动映像,您可以发送 jar 文件和将“启动”它们的可执行文件(可执行文件将嵌入虚拟机)。使用启动映像,jar 文件将另外预编译为本机代码。

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

【讨论】:

以上是关于是否有适用于 Mac OSX 的本机 Java AOT?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MAC OSX 中拆分 sql?

Mac OSX 上的 TortoiseSVN 都有哪些等价物? [关闭]

适用于 OSX 的 MySQL 工作台。没有可用的实用程序

是否可以提交到不包括 OsX Mavericks 的 Mac App Store 下载

关于mac 和其它osx系统添加 微软雅黑字体 适用于安装字体报错或者安装失败

如何在 Mac OSX 上更正 NSLinguisticTagger 函数并出现错误“Type 'String' has no member 'tokenType'”(该函数适用于 iOS)?