有什么办法可以在 Spring Boot 中进行提前编译吗?

Is there any way to do Ahead Of Time compilation in Springboot?

我已经阅读了有关提前编译的内容,并且有 Micronaut,一个 Java 框架可以这样做。

我只是想知道是否可以在 Spring Boot.

中执行此操作

只是用Java和Spring引导,我不这么认为。由于 AOT 编译代码将依赖于平台,因此它将与我们目前拥有的 Java 相矛盾。 Java 使用 java 字节码实现平台独立性。使用 AOT,它将绕过生成 java 字节码的步骤,并且使用当前的 java 架构,这是不可能的。下图中的红线显示了在 Java 中使用当前架构必须执行的 AOT 编译。

然而,新技术不断涌现,例如 GraalVM。 GraalVM 将创建一个 native image 的代码,这意味着代码将直接编译为机器代码(使用 GraalVM 的编译器),并将在 GraalVM 平台上执行。这提供了在运行时执行多种语言的机会。就像我们可以有一个代码库在 Java 和 Python 中的应用程序。我们目前对这些平台有一些限制,这使它们有点实验性。但我不会惊讶于将来 运行 在不同的平台上看到 AOT 编译的 java 代码。

您可以使用 Spring Native:

Spring Native provides support for compiling Spring applications to native executables using the GraalVM native-image compiler.

Spring Native 仍处于测试阶段,截至 2021 年 4 月 20 日的版本为 0.9.2。