有没有一种方法可以将Java代码编译成独立的(或库)机器码,而不需要JVM?
有没有一种方法可以将Java代码编译成独立的(或库)机器码,而不需要JVM?
曾经有一个称为GCJ的工具是GCC的一部分,但现在已经被删除。现在,GCC网站中的所有链接都会重定向到它们的非GCJ等效链接。
注意:评论都是针对我最初的回答,说你可以使用GCJ将Java编译成本地代码。
Oracle一直在开发GraalVM,它支持原生映像。请查看这里:https://www.graalvm.org/
原生映像 GraalVM SDK中的原生映像功能有助于提高Java应用程序的启动时间,并使其占用更小的空间。实际上,它将在JVM上运行的字节码转换为特定操作系统/平台的本机代码,这就是其性能的来源。它使用激进的提前编译(AOT)优化来实现良好的性能。
了解更多:
摘要
https://www.graalvm.org/docs/getting-started/#native-images
演示:使用本地镜像加快启动速度
https://www.graalvm.org/docs/examples/native-list-dir/
详细信息:'提前编译'
https://www.graalvm.org/docs/reference-manual/aot-compilation/
Micronaut平台使用GraalVM来创建本地微服务:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, Native World!");
}
}
javac HelloWorld.java
native-image HelloWorld
./HelloWorld
输出
Hello, Native World!
Windows
上只有玩具程序可以运行,但任何更高级的程序和/或使用 GUI
时都还不够稳定。Twitter
可能在没有任何 GUI
的情况下使用 Linux
,但他们可能也使用商业版本,而我只尝试过社区版。它可能适用于某些用例,但 Java Windows
桌面应用程序不是其中之一,这仍然使项目稍微令人失望。Excelsior JET
可以可靠地完成这项工作,但现在已经停止了。 - BullyWiiPlazaExcelsior JET 是一款商用的 Java 到本地代码编译器。然而,它已于2019年5月停止开发。