Java / Binary

Run SWIM services directly from source using Quarkus dev mode or as a standalone Java binary. This provides the fastest feedback loop for development, with live reload on code changes.

Prerequisites

JDK 21+ GraalVM for native builds
Maven 3.9+ or use the included mvnw wrapper
Podman or Docker for infrastructure containers (Kafka, MongoDB, etc.)

Windows: The commands below use GNU Make. Install it via choco install make (Chocolatey) or scoop install make.

1. Install Maven Libraries

Build and install all SWIM modules to your local Maven repository:

cd swim-developer   # workspace root
make install

2. Start Infrastructure

SWIM services depend on Kafka, MongoDB, and Artemis. Start them using the service's compose file:

cd applications/swim-dnotam-consumer
podman compose up -d

Alternatively, Quarkus Dev Services can provision the required infrastructure automatically during quarkus:dev.

3. Run in Dev Mode

Quarkus dev mode starts the application with live reload. Code changes are applied automatically without restarting:

./mvnw quarkus:dev
.\mvnw.cmd quarkus:dev

The application starts on http://localhost:8080 with health and metrics on http://localhost:9000.

4. Build and Run as Binary

Build a standalone JAR and run it independently:

# Build
./mvnw clean package -DskipTests

# Run
java -jar target/quarkus-app/quarkus-run.jar
# Build
.\mvnw.cmd clean package -DskipTests

# Run
java -jar target\quarkus-app\quarkus-run.jar

5. Build a Native Binary (Optional)

GraalVM native compilation produces a standalone binary with instant startup and minimal memory footprint:

./mvnw clean package -Dnative \
  -Dquarkus.native.container-build=true \
  -Dquarkus.native.container-runtime=podman
.\mvnw.cmd clean package -Dnative `
  -Dquarkus.native.container-build=true `
  -Dquarkus.native.container-runtime=podman

Native builds require either GraalVM installed locally or a container runtime (Podman/Docker) for in-container builds. Build time is significantly longer than JVM mode.