You can use any Java IDE for this tutorial but if you didn’t try it before, we recommend VS Code with the Language Support for Java™ by Red Hat and the Quarkus extensions.

If you are using VS Code, then install the VS Code Remote Development Extension pack, which allows you to run this entire tutorial within a container that will have all tools configured.

CLI Tools

The following CLI tools are required for running the exercises in this tutorial.

You can also use Podman instead of Docker. The advantage of Podman is that it is 100% Free Open Source and does not need to run with elevated privileges. Just use 'podman' instead of 'docker' throughout the tutorial’s instructions, or alias docker=podman.

GraalVM is only required if you intend to build a native image for your local operating system. If you want to create a container using a native image, you can use the Quarkus feature for this and don’t need to install GraalVM locally.

  • Local Installation

  • Container Image

Please have them installed and configured before you get started with any of the tutorial chapters.

Tool macOS Fedora Windows


Docker Desktop for Mac

dnf install docker

Docker Desktop for Windows

Java 17

brew tap AdoptOpenJDK/openjdk && brew cask install adoptopenjdk17

dnf install java-17-openjdk.x86_64

Windows (Make sure you set the JAVA_HOME environment variable and add %JAVA_HOME%\bin to your PATH)

Apache Maven 3.8.1+

brew install maven

dnf install maven

Windows (Make sure you set the MAVEN_HOME environment variable and add %MAVEN_HOME%\bin to your PATH)

Graal VM

GraalVM Community Edition 22.3.0

GraalVM Community Edition 22.3.0

GraalVM Community Edition 22.3.0

If you have Docker for Mac or Windows or Linux then you can pull the Linux container image tutorial tools which has all the tools listed below installed and pre-configured.

docker pull
mkdir quarkus-tutorial
cd quarkus-tutorial
mkdir work
docker run -ti -p 8080:8080 -v `pwd`/work:/work \
  -v `mvn help:evaluate -Dexpression=settings.localRepository | grep \
  -v '\[INFO\]'`:/opt/developer/.m2/repository \
  --rm bash

# -p will map Quarkus running in the container to your host port
# -v `pwd`... will map the host work subdirectory to the container /work directory, this is where you will create your application
# -v `mvn ...` will map your ~/.m2/repository of your host to the container repository to save downloading again between image runs