## 前提

  • 使用 GraalVM JDK 21(含 `native-image` 工具)。
  • 项目尽量减少运行时反射与动态类加载;必要时提供配置文件。

## 最小示例与打包

# Windows 示例路径
native-image -jar target\app.jar \
             -H:Name=app \
             --no-fallback \
             -H:+ReportExceptionStackTraces

输出:`app.exe`


## 反射与资源配置

  • 当使用框架或反射访问类与字段时,需要提供配置文件(`reflect-config.json`、`resource-config.json` 等)。

示例(反射配置片段):

[
  {"name":"com.example.Model","allDeclaredFields":true,"allDeclaredConstructors":true}
]

使用:

native-image -jar target\app.jar -H:Name=app --no-fallback \
             -H:ReflectionConfigurationFiles=reflect-config.json

## 常用优化参数

  • `--no-fallback`:禁用回退到 JVM(更小更快,但需确保配置完整)。
  • `--initialize-at-build-time`:在构建期初始化静态状态,减少运行时开销(审慎使用)。
  • `-O`:优化级别(Graal 依据场景选择,默认即可)。

## 验证与对比

  • 冷启动时间:测量 `app.exe` 与 `java -jar app.jar` 的启动延迟。
  • 体积:记录可执行文件大小与 JAR + JRE 方案的镜像体积。
  • 功能完整性:覆盖关键路径;若报反射缺失,完善配置后重试。

## 框架提示

  • Spring Boot 原生需 AOT 支持(Spring Native/Boot 3 AOT);优先使用官方指南生成配置。
  • Quarkus/Micronaut 对原生打包支持更完善;可参考其插件与脚本。

## 注意事项

  • 关键词与主题一致:GraalVM、native-image、Java 21 与启动/体积优化。
  • 分类匹配:`软件/编程语言/Java`。
  • 描述准确:强调原生打包的参数与验证方法。
  • 技术参数已验证:`native-image` 常用参数与反射配置方式为官方支持;Windows 生成 `exe` 可直接运行。


点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部