如何启用 Java AOT 编译打包 Solon 项目(Solon AOT)
目录
- 1、Java 的 AOT(Ahead-Of-Time)
- 2、Solon AOT
- 3、使用 solon-parent
- 4、如果没有使用 solon-parent
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)
大概的构建过程(过程为自动):
编译(生成 .class 文件) -> Solon AOT(运行->收集->生成补充的 .class 文件) -> 打包
3、使用 solon-parent
<parent> <groupId>org.noear</groupId> <artifactId>solon-parent</artifactId> <version>最新版本</version> </parent>
以 maven 打包为例,启用配置文件 native(会自动启用一批配置),然后使用 maven 的 pakage 命令即可。
补充说明:
- 使用 maven:pakage 打包,会使用 AOT 编译,生成常规的 jar 包
- 使用 graalvm:native:build 打包,会使用 AOT 编译,且生成 graalvm image (具体参考专题资料)
4、如果没有使用 solon-parent
以 maven 打包为例,在 pom.XML 手动添加一个 native profile(名字便取,叫 AOT 也挺好的)。之后,参考上面的说明。
<profiles> <profile> <id>native</id> <build> <plugins> <plugin> <groupId>org.noear</groupId> <artifactId>solon-maven-plugin</artifactId> <version>${solon.version}</version> 编程客栈 <executions> <execution> <id>process-aot</id> <goals> <goal>process-aot</goal> </goals> android </execution> </executions> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.noear</groupId> <artifactId>solon-aot</artifactId> </dependency> </dependencies> </profile> </profiles>
配置内容说明:
org.noear:solon-aot
依赖包,封装了 aot 的关键工作:收集类信息,生成补充类solon-maven-plugin:proandroidcess-aot
则是关联编译行为,在编译后,再进行 Solon AOT 二次编译
到此这篇关于如何启用 Java AOT 编译打包 Solpythonon 项目(Solon AOTwww.devze.com)的文章就介绍到这了,更多相关Java AOT 编译打包 Solon 内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论