Created
June 23, 2026 13:33
-
-
Save aureamunoz/148950f804abaed3a3be4da84985f47e to your computer and use it in GitHub Desktop.
Migration Skill Technology Coverage Matrix
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| | Decision Area | Current Option(s) in Skill | Alternate Options NOT Covered | | |
| | ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | | |
| | **Migration Strategy** | Spring Compatibility (`quarkus-spring-*`), Full Quarkus (JAX-RS/CDI) | Hybrid (compat for some layers, full for others) | | |
| | **Target Java Version** | Java 21+ (hard gate, blocks migration if < 21) | — | | |
| | **Build System** | Maven (`pom.xml`), Gradle Groovy (`build.gradle`), Gradle Kotlin DSL (`build.gradle.kts`) | — | | |
| | **REST Framework** | Full: RESTEasy (JAX-RS `@Path`), Compat: `quarkus-spring-web` (`@RestController`) | RESTEasy Reactive vs Classic not explicitly distinguished; no GraphQL option | | |
| | **Dependency Injection** | Full: CDI/Arc (`@ApplicationScoped`, `@Inject`), Compat: `quarkus-spring-di` | — | | |
| | **Persistence Strategy** | Full: Hibernate ORM with Panache (Active Record **and** Repository pattern), Compat: `quarkus-spring-data-jpa` | Standard Hibernate ORM without Panache (raw `EntityManager`); Panache with Kotlin; Reactive Hibernate | | |
| | **Database** | H2, PostgreSQL, MySQL (JDBC drivers mapped) | MariaDB, Oracle, MS SQL, MongoDB (listed in dep-map but no config guidance) | | |
| | **Database Migration** | Flyway (config mapped), Liquibase (dependency mapped) | Liquibase config properties not mapped in config-map | | |
| | **Dev Services** | `%prod.` prefix pattern for datasource (auto DB in dev/test) | No explicit guidance on configuring specific Dev Services containers | | |
| | **Naming Strategy** | `CamelCaseToUnderscoresNamingStrategy` workaround documented | — | | |
| | **Web Views / Templates** | Thymeleaf → Qute (full syntax table, `@CheckedTemplate`, strict rendering) | JSP migration, JSF/MyFaces, Freemarker (only dependency listed), static SPA frontends | | |
| | **Static Resources** | `static/` → `META-INF/resources/` | Webjars | | |
| | **Security** | Full: `quarkus-security` + `quarkus-oidc`, Compat: `quarkus-spring-security` (limited SpEL) | LDAP, JWT (standalone), form-based auth config, RBAC details, Keycloak-specific setup | | |
| | **CSRF** | Remove Spring CSRF tokens; mentions `quarkus-csrf-reactive` | No setup guidance for Quarkus CSRF | | |
| | **Caching** | Full: `@CacheResult`/`@CacheInvalidate`, Compat: `quarkus-spring-cache` | Redis cache, Infinispan | | |
| | **Scheduling** | Full: `@io.quarkus.scheduler.Scheduled`, Compat: `quarkus-spring-scheduled` | Quartz (dependency mapped but no migration guide) | | |
| | **Configuration** | Full: `@ConfigMapping`, Compat: `quarkus-spring-boot-properties` (`@ConfigurationProperties`) | MicroProfile Config, `@ConfigProperties` | | |
| | **Messaging** | Dependencies mapped: AMQP (`quarkus-smallrye-reactive-messaging-amqp`), Kafka (`quarkus-smallrye-reactive-messaging-kafka`) | No code migration guide for messaging; no JMS/Artemis; no RabbitMQ specific | | |
| | **Observability** | Actuator → `quarkus-smallrye-health` + `quarkus-micrometer`; config mapped; `quarkus-opentelemetry` in dep-map | No migration guide for custom health checks, custom metrics, tracing setup | | |
| | **Logging** | Config mapped: `logging.level.*` → `quarkus.log.category`, file logging, console format | Structured JSON logging (`quarkus-logging-json` listed but not guided), MDC, custom log handlers | | |
| | **Profiles** | `application-{profile}.properties` → `%profile.` prefix; `@Profile` → `@IfBuildProfile` | Multi-profile strategies, `@UnlessBuildProfile`, runtime profile config | | |
| | **Testing** | `@SpringBootTest` → `@QuarkusTest`, `@MockBean` → `@InjectMock`, `TestRestTemplate` → REST Assured, `@ActiveProfiles` → `@TestProfile` | `@QuarkusIntegrationTest` (native), Testcontainers, `@QuarkusTestResource`, continuous testing | | |
| | **Application Lifecycle** | `CommandLineRunner` → `@QuarkusMain` / `@Observes StartupEvent`, `ApplicationRunner` → `@QuarkusMain`, CLI → Picocli `@TopCommand` | Graceful shutdown, `ShutdownEvent`, lifecycle priorities | | |
| | **Spring Data REST** | Compat: `quarkus-spring-data-rest` (`@RepositoryRestResource`) | Full migration alternative (manual REST endpoints) | | |
| | **Spring Cloud Config** | Compat: `quarkus-spring-cloud-config-client` (config mapped) | Consul, Vault, Kubernetes ConfigMaps | | |
| | **CORS** | `@CrossOrigin` → `quarkus.http.cors.*` properties | — | | |
| | **Container / Native** | Maven `native` profile added; Gradle native via `-Dquarkus.native.enabled=true` | Dockerfile generation, Jib, container image extensions (`quarkus-container-image-docker`, `quarkus-container-image-jib`) | | |
| | **Batch Processing** | Not covered | Custom with Quarkus Scheduler, JBeret, skip/manual | | |
| | **Reactive** | Not covered (Spring WebFlux → `quarkus-rest` mentioned in dep-map only) | Mutiny, RESTEasy Reactive pipelines, Reactive Hibernate, reactive messaging patterns | | |
| | **OpenAPI / Swagger** | Not covered | `quarkus-smallrye-openapi` | | |
| | **GraphQL** | Not covered | `quarkus-smallrye-graphql` | | |
| | **gRPC** | Not covered | `quarkus-grpc` | | |
| | **WebSocket** | Not covered | `quarkus-websockets-next` | | |
| | **Email** | Not covered | `quarkus-mailer` | | |
| | **Fault Tolerance** | Not covered | `quarkus-smallrye-fault-tolerance` (retries, circuit breakers, timeouts) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment