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)的更多相关文章

  1. java ant 编译打包build.xml完整配置范例

    java ant 编译打包build.xml完整配置范例 <?xml version="1.0" encoding="UTF-8" ?> <p ...

  2. (转载)Ant自动编译打包android项目

    1  Ant自动编译打包android项目 1.1   Ant安装 ant的安装比较简单,下载ant压缩包  http://ant.apache.org  (最新的为1.9.3版本),下载之后将其解压 ...

  3. 项目androidAnt编译打包Android项目

    时间紧张,先记一笔,后续优化与完善. Ant编译打包Android项目 在Eclipse中对Android项目停止编译和打包如果项目比较大的话会比较慢,所以改为Ant工具来停止编译和打包 Ant环境配 ...

  4. Android - Ant自动编译打包android项目 -- 1(转)

    1.  背景: Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其当要将应用打包发布到各个渠道时,用Eclipse手动打包各种渠道包就有点不切实际了,这时候我们用到Ant帮我 ...

  5. [转]Windows中使用命令行方式编译打包Android项目

    http://my.oschina.net/liux/blog/37875 网上很多用Ant来编译打包Android应用的文章,毕竟Ant是纯Java语言编写的,具有很好的跨平台性.今天想写个纯win ...

  6. 走进JavaWeb技术世界12:从手动编译打包到项目构建工具Maven

    小李的Build之路(上) 转自: 刘欣 码农翻身 2016-07-10 摘要:手工Build的烦恼要不是为了和女朋友留在一个城市,小李肯定去北上广奋斗去了.现在他只能留在这个2.5线城市,进入这家软 ...

  7. Ant自动编译打包android项目(转载)

      1.1   Ant安装 ant的安装比较简单,下载ant压缩包  http://ant.apache.org  (最新的为1.9.3版本),下载之后将其解压到某个目录(本人解压到E:\Progra ...

  8. JAR-使用JAVA命令编译打包一个可执行jar包

    一.开发一个演示项目 项目源代码开发 项目名称叫jar-package-example(其实只是一个文件夹, 用以将演示的所有文件夹和文件存放在其中, 没啥其它作用), 为了方便, 后文统一叫jar- ...

  9. Android-Ant自动编译打包android项目 -- 2 ----签名与渠道包

    上篇介绍了怎么使用ant自动编译打包现有的android项目,这篇将继续介绍如果如何在ant打包应用的时候加入签名信息以及自动打包渠道包. 1. 加入签名信息: 在项目的根目录下建一个ant.prop ...

  10. ant自动编译打包android项目

    源代码及可执行文件下载地址:http://files.cnblogs.com/rainboy2010/antdemo.zip Android打包APK的流程如下:  下面我们开始尝试使用ant进行ap ...

随机推荐

  1. Top-N推荐算法 Top-N recommendation Algorithms

    引言 推荐算法是计算机专业中的一种算法,通过一些计算,能够推测用户喜欢的东西,在互联网环境中应用比较广泛.Top-N算法在生活中非常常见,比如学术论文推荐论文.音乐软件推荐歌曲等. 今天看到一篇名叫& ...

  2. 基于 .NET Blazor 开源、低代码、易扩展的插件开发框架

    前言 今天大姚给大家分享一个基于 .NET Blazor 开源的轻量级.跨平台.低代码.易扩展的插件开发框架:Known. 项目介绍 Known 是一个基于 Blazor 的轻量级.跨平台.低代码.易 ...

  3. MongoDB 简单介绍

    MongoDB介绍 疑问 解答 什么是 MongoDB 一个以 JSON 为数据模型的文档数据库 为什么叫文档数据库? 文档来自于 "JSON Document",并非我们一般理解 ...

  4. Cannot find config.m4. phpize 安装扩展出错

    原因 编译扩展包下面的名字可能不是 config.m4,也有可能有类似 config0.m4 的文件:因此名字不一样也是找不到的,我们需要用 mv config0.m4 config.m4 :修改文件 ...

  5. V8引擎静态库及其调用方法

    V8引擎静态库下载地址由于包含了x86和x64的debug和release静态库,所以资源较大,需要耐心下载. 案例编译工具:VS2019 v8开头的即为V8引擎静态库(附送其它开源静态库libuv. ...

  6. SeaBIOS实现简单分析

    SeaBIOS是一个16bit的x86 BIOS的开源实现,常用于QEMU等仿真器中使用.本文将结合SeaBIOS Execution and code flow和SeaBIOS的源码对SeaBIOS ...

  7. 关于Primavera P6版本选择上的一些看法

    从开始接触P6到目前也有近6年的时间,从最开始用的V7 (除P6.2.1)到现在用的18.8.0 ,除去一些小版本,中间自己跨越了8个不同版本    7.0,  (2013)    8.2       ...

  8. 使用Docker部署服务

    一.Docker概念 1.操作系统层面的虚拟化技术 2.隔离的进程独立于宿主和其它的隔离的进程 - 容器 3.GO语言开发 4.特点:高效的利用系统资源:快速的启动时间:一致的运行环境:持续交付和部署 ...

  9. 开源!Django-Vue3-Admin的Python后台管理系统

    Django-Vue3-Admin 项目简介 Django-Vue3-Admin 是一个基于 Django + Vue3 的前后端分离的后台管理系统,采用了最新的前后端技术栈,内置了丰富的功能模块,可 ...

  10. C# 多文件打包

    public HttpResponseMessage GetZip() { var response = Request.CreateResponse(HttpStatusCode.OK); try ...