Skip to content

DJL Example with Quarkus

This is a minimal web service using a DJL model for inference.

Under the hood, this demo uses:

  • RESTEasy to expose the REST endpoints
  • DJL-extension to run the example

Requirements

To compile and run this demo you will need:

  • JDK 1.8+
  • DJL Quarkus Extension

To get the DJL quarkus extension, go to the extension directory at ../extension. Then, run mvn package install to install it locally.

Building the application

Launch the Maven build on the checked out sources of this demo:

./mvnw install

Live coding with Quarkus

The Maven Quarkus plugin provides a development mode that supports live coding. To try this out:

./mvnw quarkus:dev

This command will leave Quarkus running in the foreground listening on port 8080.

Visit the default endpoint: http://127.0.0.1:8080 to view the prediction output.

Run Quarkus in JVM mode

When you're done iterating in developer mode, you can run the application as a conventional jar file.

First compile it:

./mvnw install

Then run it:

java -jar ./target/getting-started-1.0-SNAPSHOT-runner.jar

Have a look at how fast it boots, or measure the total native memory consumption.

Run Quarkus as a native executable

You can also create a native executable from this application without making any source code changes. A native executable removes the dependency on the JVM: everything needed to run the application on the target platform is included in the executable, allowing the application to run with minimal resource overhead.

This step requires GraalVM and you must set GRAALVM_HOME.

See the Building a Native Executable guide +for help setting up your environment.

Compiling a native executable takes a bit longer, as GraalVM performs additional steps to remove unnecessary codepaths. Use the native profile to compile a native executable:

./mvnw install -Dnative

After getting a cup of coffee, you'll be able to run this executable directly:

./target/getting-started-1.0-SNAPSHOT-runner