我阅读了有关GraalVM和SubstrateVM框架的信息。我了解该native-image
命令可用于从 Java 源文件创建本机应用程序,如下所示:
$ javac Hello.java
$ native-image --no-server --no-fallback Hello
$ ./hello
Hello World!
$
这将创建一个本机二进制文件hello
,根据这个问题,它由 SubstrateVM 框架提供支持,该框架提供......
...其他东西(运行时)需要在没有 JVM 的情况下实际运行提前编译的 Java 字节码。
我不清楚:
- 何时以及为何需要 SubstrateVM 框架?仅在本机构建时需要还是在运行时也需要?二进制
hello
文件是由纯目标机器字节码组成,还是仍然存在 Java 字节码和嵌入的成熟虚拟机,即 SubstrateVM? - 与通常的C 程序
hello
相比,哪些开销需要运行本机映像?Hello World!