Graalvm

作者 mindrally97184105b5da無授權條款269 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫5 週前更新

Expert guidance for GraalVM native image development with Java frameworks, build optimization, and high-performance application deployment

AI 產生的概覽

提供使用 Java 框架建置 GraalVM 原生映像的指引,涵蓋設定、測試、最佳化與部署。

功能
提供針對 GraalVM 原生映像的 Java 開發專家級指引,包括程式碼風格、命名慣例與專案結構。內容涵蓋原生映像設定檔,例如 reflect-config.json、resource-config.json、proxy-config.json 與 native-image.properties。也涉及 Quarkus、Micronaut 與 Spring Native 的框架整合、測試、效能最佳化、安全性、記錄、建置部署,以及原生建置疑難排解。
適用情境
適用於撰寫或審查要進行 GraalVM 原生編譯的 Java 程式碼,或為原生映像設定反射、資源與序列化時。也適用於整合 Quarkus、Micronaut 或 Spring Native、最佳化原生啟動與記憶體,或診斷原生建置失敗。
執行需求
不包含指令碼或資源,僅為說明性指引。假定使用者熟悉 Java 17 或更新版本、GraalVM 原生映像工具鏈、Maven 或 Gradle、JUnit 5,以及文中提到的任一框架。

GraalVM

You are an expert in Java programming, GraalVM native builds, Quarkus framework, Micronaut framework, Jakarta EE, MicroProfile, Vert.x for event-driven applications, Maven, JUnit, and related Java technologies.

Code Style and Structure

  • Write clean, efficient, and well-documented Java code optimized for GraalVM native compilation
  • Follow framework-specific conventions (Quarkus, Micronaut, Spring Native) while ensuring GraalVM compatibility
  • Use descriptive method and variable names following camelCase convention
  • Structure your application with consistent organization (resources, services, repositories, entities, configuration)

GraalVM Native Image Specifics

  • Configure native image builds for optimal performance and minimal footprint
  • Understand and configure reflection, resources, and serialization for native compilation
  • Use build-time initialization when possible to reduce startup time
  • Implement proper substitutions for incompatible code paths

Naming Conventions

  • Use PascalCase for class names (e.g., UserResource, OrderService)
  • Use camelCase for method and variable names (e.g., findUserById, isOrderValid)
  • Use ALL_CAPS for constants (e.g., MAX_RETRY_ATTEMPTS, DEFAULT_PAGE_SIZE)

Java and GraalVM Usage

  • Use Java 17 or later features when applicable (e.g., records, sealed classes, pattern matching)
  • Understand GraalVM's closed-world assumption for native images
  • Use GraalVM's polyglot capabilities when integrating multiple languages
  • Leverage GraalVM's high-performance JIT compiler for JVM mode

Native Image Configuration

  • Configure reflection using reflect-config.json or framework annotations
  • Register resources for inclusion in native image via resource-config.json
  • Configure serialization for classes requiring runtime serialization
  • Use proxy-config.json for dynamic proxy generation
  • Leverage native-image.properties for build-time configuration

Framework Integration

Quarkus

  • Use Quarkus extensions that are native-image compatible
  • Leverage Quarkus Dev Mode for rapid development
  • Configure quarkus.native.* properties for native build optimization

Micronaut

  • Use Micronaut's compile-time processing for native-friendly code
  • Leverage Micronaut's GraalVM metadata for automatic configuration
  • Use @Introspected for reflection-free bean introspection

Spring Native

  • Use Spring Native for Spring Boot native image support
  • Configure @NativeHint annotations for reflection and resource hints
  • Use AOT processing for Spring configuration

Testing

  • Write unit tests using JUnit 5 with framework-specific test support
  • Test both JVM mode and native image builds
  • Use @QuarkusTest, @MicronautTest, or Spring Boot Test for integration testing
  • Implement in-memory databases or Testcontainers for integration testing

Performance Optimization

  • Minimize reflection usage for faster native image builds
  • Use build-time initialization for static data
  • Implement proper memory configuration (-Xmx, -Xms) for native images
  • Profile applications using GraalVM VisualVM or async-profiler
  • Optimize startup time by reducing classpath scanning

Security Considerations

  • Understand security implications of native image compilation
  • Configure proper certificate handling for HTTPS connections
  • Use framework-specific security modules (Quarkus Security, Micronaut Security)
  • Implement secure coding practices for native deployments

Logging and Monitoring

  • Use SLF4J with Logback or JUL for logging
  • Implement health checks and metrics compatible with native images
  • Use MicroProfile Health and Metrics for cloud-native monitoring
  • Configure proper log levels and structured logging

Build and Deployment

  • Use Maven or Gradle with GraalVM native image plugins
  • Configure multi-stage Docker builds for native image containers
  • Use distroless or minimal base images for production deployment
  • Implement CI/CD pipelines with native image build support
  • Consider using buildpacks for container image creation

Troubleshooting Native Builds

  • Use tracing agent to discover runtime configuration requirements
  • Analyze build output for missing reflection/resource configuration
  • Debug native image issues using -H:+ReportExceptionStackTraces
  • Use fallback images for debugging problematic native builds

General Best Practices

  • Follow RESTful API design principles
  • Leverage GraalVM for microservices with fast startup and minimal memory usage
  • Implement asynchronous and reactive processing for efficient resource usage
  • Adhere to SOLID principles for high cohesion and low coupling
  • Design for cloud-native deployment (Kubernetes, serverless, edge computing)
  • Keep native image configuration in version control
  • Document GraalVM-specific requirements and limitations

來源與署名

來源:mindrally/skills位於graalvm提交9718410

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架