About java-quarkus-development
A best-practices guide for developing Java applications with Quarkus, aimed at developers building microservices and containerized or serverless applications. It covers development workflows, configuration, data access, testing, performance, and observability.
Key features
- 01Quarkus dev mode and Dev Services
- 02Type-safe configuration and dependency injection
- 03REST APIs and reactive programming
- 04Panache data access and migrations
- 05Testing, performance, and observability guidance
Use cases
- 01Plan configuration for a Quarkus service
- 02Develop and test REST endpoints
- 03Organize entities and queries for database work
- 04Prepare native images and health checks
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ mindrally/ skills --skill java-quarkus-developmentAfter installing, type/java-quarkus-developmentin Claude Code to confirm it loaded.
Details
From the project READMEJava 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 devfor 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
@ConfigPropertyfor type-safe configuration injection - Group related configs with
@ConfigMappinginterfaces - Validate configuration at startup
- Document configuration properties
Profile-Based Configuration
- Use
%dev,%test,%prodprefixes for environment-specific configs - Override configs via environment variables in production
- Keep sensitive values out of source control
- Use
.envfiles for local development
Dependency Injection
CDI Annotations
- Use
@Injectfor dependency injection - Use
@Namedto qualify implementations - Use
@Singleton,@ApplicationScoped,@RequestScopedappropriately - Prefer constructor injection for required dependencies
Bean Discovery
- Understand Quarkus build-time bean discovery
- Use
@IfBuildProfilefor 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
@Validfor input validation - Implement exception mappers for consistent error responses
Reactive Patterns
- Use Mutiny for reactive programming
- Leverage
UniandMultifor 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
PanacheEntityfor entities with built-in operations - Implement custom queries with
findandlistmethods
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
@QuarkusTestfor integration tests - Use
@QuarkusIntegrationTestfor 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
@RegisterForReflectionwhen 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
Comments
Markdown supported