启用 Java AOT 编译打包 Solon 项目(Solon AOT)
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>
</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:process-aot
则是关联编译行为,在编译后,再进行 Solon AOT 二次编译
启用 Java AOT 编译打包 Solon 项目(Solon AOT)的更多相关文章
- java ant 编译打包build.xml完整配置范例
java ant 编译打包build.xml完整配置范例 <?xml version="1.0" encoding="UTF-8" ?> <p ...
- (转载)Ant自动编译打包android项目
1 Ant自动编译打包android项目 1.1 Ant安装 ant的安装比较简单,下载ant压缩包 http://ant.apache.org (最新的为1.9.3版本),下载之后将其解压 ...
- 项目androidAnt编译打包Android项目
时间紧张,先记一笔,后续优化与完善. Ant编译打包Android项目 在Eclipse中对Android项目停止编译和打包如果项目比较大的话会比较慢,所以改为Ant工具来停止编译和打包 Ant环境配 ...
- Android - Ant自动编译打包android项目 -- 1(转)
1. 背景: Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其当要将应用打包发布到各个渠道时,用Eclipse手动打包各种渠道包就有点不切实际了,这时候我们用到Ant帮我 ...
- [转]Windows中使用命令行方式编译打包Android项目
http://my.oschina.net/liux/blog/37875 网上很多用Ant来编译打包Android应用的文章,毕竟Ant是纯Java语言编写的,具有很好的跨平台性.今天想写个纯win ...
- 走进JavaWeb技术世界12:从手动编译打包到项目构建工具Maven
小李的Build之路(上) 转自: 刘欣 码农翻身 2016-07-10 摘要:手工Build的烦恼要不是为了和女朋友留在一个城市,小李肯定去北上广奋斗去了.现在他只能留在这个2.5线城市,进入这家软 ...
- Ant自动编译打包android项目(转载)
1.1 Ant安装 ant的安装比较简单,下载ant压缩包 http://ant.apache.org (最新的为1.9.3版本),下载之后将其解压到某个目录(本人解压到E:\Progra ...
- JAR-使用JAVA命令编译打包一个可执行jar包
一.开发一个演示项目 项目源代码开发 项目名称叫jar-package-example(其实只是一个文件夹, 用以将演示的所有文件夹和文件存放在其中, 没啥其它作用), 为了方便, 后文统一叫jar- ...
- Android-Ant自动编译打包android项目 -- 2 ----签名与渠道包
上篇介绍了怎么使用ant自动编译打包现有的android项目,这篇将继续介绍如果如何在ant打包应用的时候加入签名信息以及自动打包渠道包. 1. 加入签名信息: 在项目的根目录下建一个ant.prop ...
- ant自动编译打包android项目
源代码及可执行文件下载地址:http://files.cnblogs.com/rainboy2010/antdemo.zip Android打包APK的流程如下: 下面我们开始尝试使用ant进行ap ...
随机推荐
- OpenOffice已停更六年 文档基金会呼吁用户迁移LibreOffice
OpenOffice 源代码发布至今已经有 20 年了.文档基金会近日发布公开信,表示说:"LibreOffice 是 OpenOffice 的未来.我们将会全力以赴".以此呼吁那 ...
- 2D量测流程
- AI 核心能力与开发框架工程能力的共生关系解析
一.本质定位:能力层与载体层的互补 1. AI 能力:突破性认知的"大脑" - 定义:AI 的核心能力(如大语言模型的泛化推理.多模态感知)源于算法创新.海量数据与算力突破,其本质 ...
- FastAPI 请求体参数与 Pydantic 模型完全指南:从基础到嵌套模型实战 🚀
title: FastAPI 请求体参数与 Pydantic 模型完全指南:从基础到嵌套模型实战 date: 2025/3/7 updated: 2025/3/7 author: cmdragon e ...
- 阻尼、模态应变能法与FRP的关系
阻尼的概念 系统损耗振动能或声能的能力称为阻尼 阻尼越大,输人系统的能量便能在较短时间内损耗完毕.系统从受激振动到重新静止所经历的时间就越短; 阻尼也可理解为系统受激后迅速恢复到受激前状态的一种能力 ...
- Nginx可以同时支持ipv4与 ipv6的监听
Nginx可以同时支持ipv4与 ipv6的监听,但为了一致性的考虑,新版本Nginx推荐使用分开监听,下面我们开始进入正题. 一.默认IPV4配置 下面我们先来看一看默认的ipv4配置: 二.加入i ...
- Delphi 让窗体自适应屏幕显示
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System ...
- DP——从入门到放弃 [Did Not Finish]
Part 00 dp 什么时候用? 首先,如果这题数据范围一眼 BFS/DFS/暴力/随机化 可以过,那么还写 dp 干什么 但是,但你决定这题要贪心时,我建议咱还是要看一下它对不对 整一个石子合并这 ...
- CSP - J理论(2)
CSP - J理论(2) CSP-J理论合集跳转 目录 本目录中所有标题单击均可以快速跳转哦
- Oracle的listagg函数(多行按顺序合并字符串)(与wm_concat的区别)
场景: 使用wm_concat函数时,会发现无法对其拼接的字符串进行排序 使用listagg函数可实现按排序进行字符串拼接 select myGroup, listagg(myStr, ',') wi ...