找回密码
 立即注册
首页 业界区 业界 启用 Java AOT 编译打包 Solon 项目(Solon AOT) ...

启用 Java AOT 编译打包 Solon 项目(Solon AOT)

髡芯 前天 10:46
1、Java 的 AOT(Ahead-Of-Time)

AOT(Ahead-Of-Time)编译是与 JIT(Just-In-Time)相对的一种编译方式。
在 AOT 模式下,Java 字节码(Bytecode)在程序运行之前,就被提前编译为目标平台的本地机器代码。
2、Solon AOT

Solon AOT 是 Java AOT 的增强模式。可借助容器在运行时收集相关的类信息,然后在打包时为有 “动态代理需求的类” 生成对应具体类(类名风格,Xxx$$SolonAotProxy.class)。
使用条件要求:

  • 使用 solon-maven-plugin 打包方式
  • 要求 java 17+ (java 17 后才支持 AOT)
大概的构建过程(过程为自动):
  1. 编译(生成 .class 文件) -> Solon AOT(运行->收集->生成补充的 .class 文件) -> 打包
复制代码
3、使用 solon-parent
  1. <parent>
  2.     <groupId>org.noear</groupId>
  3.     solon-parent</artifactId>
  4.     <version>最新版本</version>
  5. </parent>
复制代码
以 maven 打包为例,启用配置文件 native(会自动启用一批配置),然后使用 maven 的 pakage 命令即可。
补充说明:

  • 使用 maven:pakage 打包,会使用 AOT 编译,生成常规的 jar 包
  • 使用 graalvm:native:build 打包,会使用 AOT 编译,且生成 graalvm image (具体参考专题资料)
1.png
4、如果没有使用 solon-parent

以 maven 打包为例,在 pom.xml 手动添加一个 native profile(名字便取,叫 AOT 也挺好的)。之后,参考上面的说明。
  1. <profiles>
  2.     <profile>
  3.         <id>native</id>
  4.         <build>
  5.             <plugins>
  6.                 <plugin>
  7.                     <groupId>org.noear</groupId>
  8.                     solon-maven-plugin</artifactId>
  9.                     <version>${solon.version}</version>
  10.                     <executions>
  11.                         <execution>
  12.                             <id>process-aot</id>
  13.                             <goals>
  14.                                 <goal>process-aot</goal>
  15.                             </goals>
  16.                         </execution>
  17.                     </executions>
  18.                 </plugin>
  19.             </plugins>
  20.         </build>
  21.         <dependencies>
  22.             <dependency>
  23.                 <groupId>org.noear</groupId>
  24.                 solon-aot</artifactId>
  25.             </dependency>
  26.         </dependencies>
  27.     </profile>
  28. </profiles>
复制代码
配置内容说明:

  • org.noear:solon-aot 依赖包,封装了 aot 的关键工作:收集类信息,生成补充类
  • solon-maven-plugin:process-aot 则是关联编译行为,在编译后,再进行 Solon AOT  二次编译

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册