Embracing Quarkus 3

BankData, Aarhus
@maxandersen
2023-10-10

redhat

The classic way

buildruntime 1

The classic way

buildruntime 2

The classic way

buildruntime 3

The classic way

buildruntime 4

The classic way

buildruntime 5

The Quarkus Way

buildruntime 6

Demo Time

Why Quarkus 3

A foundation to do more!

Updating to Quarkus 3

  • javax. packages are now in jakarta.

  • reactive streams Flow to Java 9+ Flow API

  • Hibernate 5 to 6

  • …​ and more

Updating to Quarkus 3

  • quarkus update --stream=3.0

  • Powered by OpenRewrite (and Windup)

Why Update

Jakarta EE 10

  • Lawyer Driven Development

  • javax.* → jakarta.*

  • Everybody is finally doing it!

Hibernate 6

Hibernate 6

  • Rewrites of internals to enable faster innovation

  • Lots of optimizations from Quarkus learnings

  • Removal of Deprecations

  • Hibernate Reactive 2

  • Tune in for Quarkus Insights #131

New Dev UI

Quarkus CLI Plugins

  • Plugins can be …​

    • …​an executable (binary or script)

    • …​a jbang alias/script reference

    • …​a maven coordinates

  • Plugins come from…​

    • …​PATH

    • …​JBang Catalogs

    • …​Quarkus Extensions

Management Port

/q/info

{
  "git" : {
    "branch" : "master",
    "commit" : {
      "id" : "0d52564219c29e47f5f5878e8fd8e0d04329288b",
      "time" : "2023-06-05T23:49:47+02:00"
    }
  },
  "java" : {
    "version" : "11.0.11"
  },
  "os" : {
    "name" : "Mac OS X",
    "version" : "11.3",
    "arch" : "x86_64"
  },
  "build" : {
    "group" : "io.quarkus.sample",
    "artifact" : "todo-backend",
    "version" : "1.0-SNAPSHOT",
    "time" : "2023-06-06T00:02:26.692472+02:00"
  }
}

Migrations as Jobs

Have a flyway or liquibase migration ?

  • Kubernetes Job auto-configured

  • Ensure migrations are run before app starts

Beyond 3.0

  • …​or at least some of it

Long Term Support

  • How to release fast but still support ?

  • Red Hat Build of Quarkus

    • 1.11,2.7,2.13,3.2

  • Quarkus 3.2+ will be community LTS

io_uring

  • Drastic io performance improvements

  • Requires recent Linux kernel (RHEL 9+)

Virtual Threads

  • @RunOnVirtualThread since 2.10 (May 2022)

  • Balance between OpenJDK vs Java ecosystem benefits

  • Stay tuned…​

Frontends

  • Can we make them fun to develop ?

  • Can we support them all ?

Quinoa

  • Use npm based frontend with Quarkus

  • Works with live-reload

WebAssets

  • Use esbuild to bundle frontend assets

Qute Server Pages

  • Direct serving of Qute from resources as pages

  • src/main/resource/templates/qsp/

Renarde

  • Quarkus Web Framework

  • Serverside rendering using Qute

  • Quinoa

  • Renarde

  • Qute Server Pages

  • WebAssets

How Green is Quarkus?

]

Does Quarkus reduce carbon emissions?

greenquarkus

Quarkus saves

  • Time

  • Money

  • Carbon (~2x)

Native?

It depends

Is Quarkus Secure?

YES!*

Conclusion

  • Quarkus is supersonic and subatomic Java

  • Developers get to have joy

  • Operations gets resources

  • Quarkus 3 is easy to update to

  • Quarkus is green

  • Quarkus is secure

  • Quarkus 3 is a foundation for more

  • Try quarkus.io