mindrally

java-quarkus-development

3
0
# Install this skill:
npx skills add Mindrally/skills --skill "java-quarkus-development"

Install specific skill from multi-skill repository

# Description

Java Quarkus development guidelines for building cloud-native applications with fast startup, minimal memory footprint, and GraalVM native builds

# SKILL.md


name: java-quarkus-development
description: Java Quarkus development guidelines for building cloud-native applications with fast startup, minimal memory footprint, and GraalVM native builds


Java Quarkus Development Best Practices

Core Principles

  • Write clean, efficient, and well-documented Java code using Quarkus best practices
  • Focus on fast startup and minimal memory footprint via GraalVM native builds
  • Leverage Quarkus extensions for common functionality
  • Design for containerized and serverless deployments
  • Follow SOLID principles and microservices architecture patterns

Development Workflow

Quarkus Dev Mode

  • Use quarkus dev for rapid iteration with live reload
  • Leverage continuous testing during development
  • Use Dev UI for debugging and configuration inspection
  • Take advantage of Dev Services for local development

Configuration

Type-Safe Configuration

  • Use @ConfigProperty for type-safe configuration injection
  • Group related configs with @ConfigMapping interfaces
  • Validate configuration at startup
  • Document configuration properties

Profile-Based Configuration

  • Use %dev, %test, %prod prefixes for environment-specific configs
  • Override configs via environment variables in production
  • Keep sensitive values out of source control
  • Use .env files for local development

Dependency Injection

CDI Annotations

  • Use @Inject for dependency injection
  • Use @Named to qualify implementations
  • Use @Singleton, @ApplicationScoped, @RequestScoped appropriately
  • Prefer constructor injection for required dependencies

Bean Discovery

  • Understand Quarkus build-time bean discovery
  • Use @IfBuildProfile for conditional beans
  • Avoid reflection-heavy patterns for native builds

REST API Development

RESTEasy Reactive

  • Use @Path, @GET, @POST, etc. for endpoint definitions
  • Return proper HTTP status codes
  • Use @Valid for input validation
  • Implement exception mappers for consistent error responses

Reactive Patterns

  • Use Mutiny for reactive programming
  • Leverage Uni and Multi for async operations
  • Combine reactive with imperative code where appropriate

Data Access

Hibernate ORM with Panache

  • Use Panache for simplified JPA patterns
  • Leverage Active Record or Repository patterns
  • Use PanacheEntity for entities with built-in operations
  • Implement custom queries with find and list methods

Database Operations

  • Use Flyway or Liquibase for migrations
  • Configure connection pooling with Agroal
  • Use reactive database clients for non-blocking I/O

Testing

JUnit 5 Integration

  • Use @QuarkusTest for integration tests
  • Use @QuarkusIntegrationTest for native image tests
  • Leverage test profiles for different configurations

REST Endpoint Testing

  • Use rest-assured for endpoint testing
  • Test both success and error scenarios
  • Verify response bodies and status codes
  • Test authentication and authorization

Performance Optimization

Native Image Optimization

  • Build native images with GraalVM for production
  • Test native builds regularly during development
  • Use @RegisterForReflection when needed
  • Minimize reflection usage

Memory and Startup

  • Monitor memory usage in containers
  • Optimize for serverless cold starts
  • Use lazy initialization where appropriate

Observability

Health Checks

  • Use MicroProfile Health for liveness and readiness probes
  • Implement custom health checks for dependencies
  • Configure Kubernetes probes based on health endpoints

Metrics

  • Use MicroProfile Metrics for application metrics
  • Export metrics in Prometheus format
  • Add custom metrics for business operations

Distributed Tracing

  • Use OpenTracing/OpenTelemetry integration
  • Propagate trace context across services
  • Configure sampling appropriately for production

Security

  • Use Quarkus Security extensions
  • Implement authentication with OIDC or JWT
  • Configure CORS for web clients
  • Validate and sanitize all inputs
  • Use HTTPS in production

Containerization

  • Use Quarkus container image extensions
  • Build multi-stage Dockerfiles for native images
  • Configure resource limits appropriately
  • Use distroless or minimal base images

# Supported AI Coding Agents

This skill is compatible with the SKILL.md standard and works with all major AI coding agents:

Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.