Quark.jar ✪
In the rapidly evolving landscape of cloud-native development, Java has often been criticized for being "heavy." Enter Quarkus—the supersonic, subatomic Java framework designed specifically for Kubernetes and serverless environments. While most developers are familiar with building Quarkus applications using Maven or Gradle, a critical yet often misunderstood artifact sits at the heart of its deployment strategy: quark.jar .
./mvnw package Quarkus produces a directory (typically target/quarkus-app/ ) containing several files. At the root of that directory sits quarkus-app/quark-run.jar —often symlinked or referenced simply as in documentation and scripts. quark.jar
cd target/quarkus-app java -jar quark-run.jar However, because quark-run.jar relies on the adjacent /lib and /app folders, you cannot simply move the JAR file to another location. If you need to relocate the artifact, you must copy the entire quarkus-app directory. For production use, you will rarely run the JAR raw. Instead, you’ll tune the JVM. A typical production command for quark.jar might look like this: At the root of that directory sits quarkus-app/quark-run
Next time you run mvn package and see that quarkus-app directory, remember: quark.jar is your key to supersonic Java. Have you optimized your quark.jar deployments yet? Share your startup time improvements in the comments below. For production use, you will rarely run the JAR raw
This article dives deep into quark.jar , exploring its architecture, its role in native and JVM modes, and how mastering it can slash your memory footprint and startup time. Contrary to what the name might suggest, quark.jar is not a standalone library you download from Maven Central. Instead, it is the executable output artifact generated by the Quarkus Maven Plugin ( quarkus-maven-plugin ) or Gradle Plugin when you run a build command.