Java™ remains one of the most popular programming languages among developers, but it has drawbacks when considering containers and Kubernetes. Quarkus gives the 7+ million Java developers the opportunity to continue building new applications with the frameworks they know.
Quarkus and developer productivity
Quarkus is designed with the developer in mind. Developer productivity means organizations can respond more quickly to rapid market conditions with fast development and deployment of new applications. Quarkus helps improve developer productivity with features like live coding for fast innerloop development, integration to IDEs like Red Hat CodeReady Workspaces, and APIs that go beyond traditional Java standards. With Quarkus, developers can use a mix of standards like MicroProfile, Spring Framework APIs, and other existing popular frameworks, while benefiting from Quarkus’ efficiencies on Kubernetes.
How can I bring my Spring Boot applications to Quarkus?
Bringing your current Spring Boot apps to Quarkus and Red Hat OpenShift is not only possible, but easier than you may think. The Migration Toolkit for Applications (MTA) can review your portfolio of Java applications by analyzing the source code or even binaries covering a wide set of transformation paths (Java EE, JDKs, Linux, containerization, Quarkus, and more) and speed up the migration process.
Extensive support for Spring Boot to Quarkus is available in the MTA release 5.1.
What is Quarkus?
Quarkus is a framework for building Kubernetes-native Java applications that run on traditional Java Virtual Machines (JVMs) or as natively-compiled executables. Quarkus minimizes startup time and memory use, and integrates with existing Java frameworks and developer tooling for quick development and deployment of applications. Quarkus can help you run Java applications that deal in serverless, microservices, containers, Kubernetes, or other application types in the hybrid cloud.
QUARKUS CONCEPTS
Quarkus is built to produce compact and efficient applications for traditional Java Virtual Machine (JVM) runtimes like OpenJDK, and can produce native executable binaries for even greater optimization. The key though, is doing as much pre-work as possible during the build phase, which happens only once in the lifetime of an application. During the build phase, Quarkus first compiles the application into traditional Java bytecode, loads and parses configuration, processes annotations, builds framework metamodels, and wires it all together into a traditional executable Java app (a JAR file). At runtime—when the app starts up—none of the memory, CPU, or time are needed to do these steps, which significantly reduces startup time.
NATIVE COMPILATION
Quarkus apps can be compiled down to a native executable, for even greater efficiency. Using Mandrel (a downstream distribution of GraalVM), the application is analyzed to find "dead code" (code paths which will never be visited at runtime), and eliminate this from the application executable. This results in tiny and lightweight runnable applications that startup in tens of milliseconds, and require tens of megabytes of memory at runtime.