mcpField
G
graalvm

graalvm

github.com/mindrally开发287659 次安装3 周前更新
代码仓库

关于 graalvm

面向 Java 开发者,提供 GraalVM 原生镜像及相关框架应用的开发指导,涉及 Quarkus、Micronaut、Maven 和测试等。重点说明反射、资源配置、构建与性能调优。

主要功能

  1. 01配置原生镜像反射与资源
  2. 02集成 Quarkus 和 Micronaut
  3. 03测试 JVM 与原生镜像构建
  4. 04优化启动时间和内存使用
  5. 05排查原生构建问题

适用场景

  1. 01为 Java 应用准备原生镜像配置
  2. 02测试 Quarkus 或 Micronaut 应用
  3. 03诊断构建时缺失的反射配置
  4. 04调整应用启动与容器部署

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mindrally/skills --skill graalvm

安装后在 Claude Code 中输入/graalvm确认已加载。

详细介绍

GraalVM

你是 Java 编程、GraalVM 原生构建、Quarkus 框架、Micronaut 框架、Jakarta EE、MicroProfile、用于事件驱动应用的 Vert.x、Maven、JUnit 及相关 Java 技术方面的专家。

代码风格与结构

  • 编写简洁、高效且文档完善的 Java 代码,并针对 GraalVM 原生编译进行优化
  • 遵循特定框架的约定(Quarkus、Micronaut、Spring Native),同时确保与 GraalVM 兼容
  • 使用符合 camelCase 约定且含义明确的方法名和变量名
  • 以一致的方式组织应用(资源、服务、存储库、实体、配置)

GraalVM Native Image 特性

  • 配置原生镜像构建,以获得最佳性能和最小占用空间
  • 理解并配置反射、资源和序列化,以支持原生编译
  • 尽可能使用构建时初始化来缩短启动时间
  • 针对不兼容的代码路径实施适当的替换

命名约定

  • 类名使用 PascalCase(例如,UserResource、OrderService)
  • 方法名和变量名使用 camelCase(例如,findUserById、isOrderValid)
  • 常量使用 ALL_CAPS(例如,MAX_RETRY_ATTEMPTS、DEFAULT_PAGE_SIZE)

Java 和 GraalVM 的使用

  • 适用时使用 Java 17 或更高版本的特性(例如,记录类、密封类、模式匹配)
  • 理解 GraalVM 原生镜像的封闭世界假设
  • 集成多种语言时使用 GraalVM 的多语言能力
  • 在 JVM 模式下利用 GraalVM 的高性能 JIT 编译器

Native Image 配置

  • 使用 reflect-config.json 或框架注解配置反射
  • 通过 resource-config.json 注册要包含在原生镜像中的资源
  • 为需要在运行时进行序列化的类配置序列化
  • 使用 proxy-config.json 进行动态代理生成
  • 利用 native-image.properties 进行构建时配置

框架集成

Quarkus
  • 使用与 native-image 兼容的 Quarkus 扩展
  • 利用 Quarkus Dev Mode 加快开发
  • 配置 quarkus.native.* 属性以优化原生构建
Micronaut
  • 使用 Micronaut 的编译时处理来编写适合原生编译的代码
  • 利用 Micronaut 的 GraalVM 元数据实现自动配置
  • 使用 @Introspected 实现无反射的 Bean 内省
Spring Native
  • 使用 Spring Native 支持 Spring Boot 原生镜像
  • 配置 @NativeHint 注解来指定反射和资源提示
  • 对 Spring 配置使用 AOT 处理

测试

  • 使用 JUnit 5 和特定框架的测试支持编写单元测试
  • 同时测试 JVM 模式和原生镜像构建
  • 使用 @QuarkusTest、@MicronautTest 或 Spring Boot Test 进行集成测试
  • 使用内存数据库或 Testcontainers 进行集成测试

性能优化

  • 尽量减少反射,以加快原生镜像构建
  • 使用构建时初始化处理静态数据
  • 为原生镜像实施适当的内存配置(-Xmx、-Xms)
  • 使用 GraalVM VisualVM 或 async-profiler 对应用进行性能分析
  • 通过减少类路径扫描来优化启动时间

安全注意事项

  • 理解原生镜像编译带来的安全影响
  • 为 HTTPS 连接配置适当的证书处理
  • 使用特定框架的安全模块(Quarkus Security、Micronaut Security)
  • 为原生部署实施安全编码实践

日志记录与监控

  • 使用 SLF4J 搭配 Logback 或 JUL 进行日志记录
  • 实施与原生镜像兼容的健康检查和指标
  • 使用 MicroProfile Health 和 Metrics 进行云原生监控
  • 配置适当的日志级别和结构化日志记录

构建和部署

  • 使用 Maven 或 Gradle,并搭配 GraalVM 原生映像插件
  • 为原生映像容器配置多阶段 Docker 构建
  • 在生产部署中使用 distroless 或精简基础映像
  • 实现支持原生映像构建的 CI/CD 流水线
  • 考虑使用 buildpacks 创建容器映像

原生构建故障排查

  • 使用跟踪 Agent 发现运行时配置要求
  • 分析构建输出,查找缺失的反射/资源配置
  • 使用 -H:+ReportExceptionStackTraces 调试原生映像问题
  • 使用回退映像调试有问题的原生构建

通用最佳实践

  • 遵循 RESTful API 设计原则
  • 利用 GraalVM 为微服务实现快速启动和低内存占用
  • 实现异步和响应式处理,以高效利用资源
  • 遵循 SOLID 原则,实现高内聚、低耦合
  • 面向云原生部署进行设计(Kubernetes、无服务器、边缘计算)
  • 将原生映像配置纳入版本控制
  • 记录 GraalVM 特定的要求和限制

评论

支持 Markdown