与 JVM 部署的主要区别
GraalVM Native Images 是提前生成的,这意味着原生和基于 JVM 的应用程序之间存在一些关键差异。主要区别在于:
应用程序的静态分析是在构建时从主入口点执行的。
创建本机映像时无法访问的代码将被删除,并且不会成为可执行文件的一部分。
GraalVM 不直接了解代码的动态元素,必须告知反射、资源、序列化和动态代理。
应用程序类路径在构建时是固定的,无法更改。
没有延迟类加载,可执行文件中提供的所有内容都将在启动时加载到内存中。
Java 应用程序的某些方面存在一些不完全受支持的限制。
GraalVM 参考文档的本机映像兼容性指南部分提供了有关 GraalVM 限制的更多详细信息。