Solon v3.7.1

Solon AOT & Native 开发

</> markdown

完整的 Solon Native 编译会经过三个阶段(就是三次自动编译),每个阶段都可直接使用:

阶段描述Maven 编译参考JDK 支持
1Java 编译mvn clean -DskipTests=true packagejdk8+
2Solon AOT 编译mvn clean -DskipTests=true -P aot packagejdk8+
mvn clean -DskipTests=true -P native packagegraalvm jdk17+
3Solon Native 编译mvn clean -DskipTests=true -P native native:compilegraalvm jdk17+

Solon AOT(Ahead-of-Time Processing) 编译:

执行 solon aot 编译时,前一阶段会自动执行。可以使用 -P aot(v3.7.2 后支持) 或 -P native 构建配置。

原理:在 mvn package 之后(自动),执行 process-aot 处理。然后:

  • 生成 solon 代理类代码文件(运行时,不再需要 ASM 介入)
  • 生成 solon 类索引文件(项目类很多时,可以加速启动)
  • 生成 graalvm 相关各种索引文件

提醒:-P aot 构建配置,是在native 基础上移除 graalvm.buildtools (限制了 jdk)形成的,可支持 “任意” jdk 版本。即在 v3.7.2 后,solon aot 可以像普通构建一样,无限制使用。

Solon Native 编译

执行 solon native 编译时,前两阶段会自动执行。

原理:在 Solon Aot 之后(自动的),使用 org.graalvm.buildtools:native-maven-plugin (需要 graalvm jdk17+ 支持)编译出二进制可执行文件。

  • 启动非常快
  • 运行时内存很少(介于 java jvm 和 go 之间)
  • 程序自己就可以运行,不需要 jre
  • 会有些麻烦的要求

项目如何编译?看左侧目录