Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Six and a half ridiculous things to do with Qua...

Six and a half ridiculous things to do with Quarkus

Let’s abuse the tools! Everyone knows Quarkus is computationally efficient, expressive, and rock-solid for production. But did you know that we can use Quarkus efficiency to build applications that shouldn’t go anywhere *near* production? In this demo-driven session, Holly will put the joy into “developer joy”. She’ll show you all sorts of things you can do with Quarkus that you probably shouldn’t:

- Build an LLM-powered app that’s *guaranteed* to hallucinate, because you can do more than you think with guardrails, and truth is so boring
- Write your business code in rockstarlang, because everything should be a hair metal ballad
- Use Minecraft as your observability client, because the LGTM stack doesn’t have enough explosions
- Write a CLI for generating memes faster, because everything is better on the command-line
- Benchmark an application against a grapefruit, because metric units aren’t tasty

Business value? Learning? If you insist. As well as absurd demos, you’ll leave this session with a deeper understanding of how to get the most out of Quarkus and Java. There will be new Java 25 language features, Quarkus best practices, powerful integrations, and nifty use cases alongside the silly explosions and grapefruit.

Avatar for Holly Cummins

Holly Cummins

October 07, 2025
Tweet

More Decks by Holly Cummins

Other Decks in Programming

Transcript

  1. tell your boss you learned… the dev ui now has

    assistants to help you write + debug code
  2. was this an easy demo? -friends don’t let friends write

    compilers -bytecode generation :( -parsing :( :(
  3. tell your boss you learned… -the quarkiverse is very welcoming

    to new extensions -writing a compiler is a bad idea (but if you do go there, use antlr)
  4. spec (by dylan beattie) cost: 5 beers time: 1 night

    implementation cost: $0 time: 3 weeks
  5. spec spec (by dylan beattie) cost: 5 beers time: 1

    night implementation cost: $0 time: 3 weeks
  6. spec none, obvs spec (by dylan beattie) cost: 5 beers

    time: 1 night implementation cost: $0 time: 3 weeks
  7. spec none, obvs spec (by dylan beattie) cost: 5 beers

    time: 1 night implementation cost: $0 time: 3 weeks
  8. spec none, obvs implementation spec (by dylan beattie) cost: 5

    beers time: 1 night implementation cost: $0 time: 3 weeks
  9. spec none, obvs implementation cost: $36,312.03 spec (by dylan beattie)

    cost: 5 beers time: 1 night implementation cost: $0 time: 3 weeks
  10. spec none, obvs implementation cost: $36,312.03 time: 3 months spec

    (by dylan beattie) cost: 5 beers time: 1 night implementation cost: $0 time: 3 weeks
  11. was this an easy demo? -adding guardrails is simple -but

    … the demo needed -a prompt the llm would hallucinate about 50% of the time
  12. was this an easy demo? -adding guardrails is simple -but

    … the demo needed -a prompt the llm would hallucinate about 50% of the time -a reliable guardrail
  13. "Okay, let’s tackle this! As of today, October 1st, 2025,

    there are approximately **12** “BS”s in the word “blueberry.” It’s a surprisingly common phenomenon! 😊 Do you want to explore why this happens?" gemma3 - 1 b parameters how many bs in blueberry?
  14. <think> Hmm, the user is asking about something related to

    20-30-0-3 but brexit, probably typo or20-10- something, correction. User meant brexit or2-1- meaning Brexit. Let me confirm that. User is20- user2 is inquiring about Brexit. UK leaving EU thing. But what time period20 2020-3 might be typo for20- 20 twenty021203. 20-20 or something. Perhaps20-202201. UK left. UK left EU. UK left20 on01 Jan201202022-021201021 I think22. Wait no1. Let me212012 January22202021. So January. Yes2 user might be21 probably20 asking about that. User22. Better2 just confirm. Brexit201 20 answer. Say20 simply22 date2. Not much else0 else0. Keep2 simple1 short1 friendly2. Okay2 polite2 user. </think> It seems you're asking about the date the Brexit, right? The UK left EU on 29th January21st of February2020221 deepseekr1- 1.5 b parameters when did brexit happen?
  15. the value of a second opinion? chatgpt.com the statement we’re

    validating “oh yes, definitely true”
  16. the value of a second opinion? chatgpt.com the statement we’re

    validating “oh yes, definitely true” “what answer would you give?”
  17. the value of a second opinion? chatgpt.com the statement we’re

    validating “oh yes, definitely true” “what answer would you give?” but if you knew, why did you … ?
  18. tell your boss you learned… •model choice makes a big

    difference •“more LLM” may not be the right solution to “LLM” •simple guardrails are not great at detecting hallucinations
  19. application user code quarkus framework minecraft client client dev service

    (testcontainers) extensions minecraft server mod
  20. tell your boss you learned… -you can do a lot

    with interceptors -dev services are awesome
  21. was this an easy demo? -extension was easy, minecraft mod

    was hard -minecraft APIs -lack documentation
  22. was this an easy demo? -extension was easy, minecraft mod

    was hard -minecraft APIs -lack documentation -change between minor versions
  23. was this an easy demo? -extension was easy, minecraft mod

    was hard -minecraft APIs -lack documentation -change between minor versions -client-server sync of injected behaviour is hard
  24. tell your boss you learned… -typesafe objects are better than

    a chat box -… but small models may struggle with structured data -gen ai adds latency
  25. was this an easy demo? -writing the cli was easy

    -native compilation was easy -native compilation + awt + mac is very hard
  26. i tried: native awt on mac liberica vm mac +

    tuning of build-time and runtime classes
  27. i tried: native awt on mac liberica vm mac +

    tuning of build-time and runtime classes graalvm community container
  28. i tried: native awt on mac liberica vm mac +

    tuning of build-time and runtime classes graalvm community container mandrel container
  29. tell your boss you learned… •picocli + quarkus is fire

    •native is clever tech •…but native has dragons •only go native if you actually need it
  30. here’s what we see in our controlled lab JVM Native

    Quarkus Spring Boot Ratio (Quarkus / SB) Spring Boot (w/AOT) Ratio (Quarkus / SB AOT) Ratio (SB AOT / SB) Quarkus Spring Boot Ratio (Quarkus / SB) Framework version 3.22.3 3.4.5 3.4.5 3.22.3 3.4.5 Build time (s) 13.15 7.60 172.95% 17.02 77.26% 223.85% 178.99 279.45 64.05% Av. RSS after startup (MB) 192.31 298.09 64.51% 290.40 66.22% 97.42% 71.22 205.74 34.62% Av. time to 1st req (ms) 4652.67 8770.33 53.05% 8180.67 56.87% 93.28% 135.67 916.67 14.80% Av. RSS after 1st req (MB) 244.61 339.52 27.05% 331.78 73.73% 97.72% 79.12 208.21 38.00% Av. throughput (req/sec) 30,397.95 6,495.20 468.01% 6,427.64 472.93% 98.96% 16,753.94 6,146.27 272.59% Max throughput density (req/sec/MB) 35.79 7.95 450.50% 7.89 453.88% 99.26% 59.82 15.94 375.27% Build RSS (GB) 5.62 157.04 57.92% Binary Size (MB) 90.95 157.04 57.92% https://github.com/edeandrea/quarkus-for-spring-devs-examples/tree/quarkus-for-spring-devs-talk-sb3 8 cores, 14GB RAM, GraalVM CE 21.0.2
  31. spring boot quarkus t3.nano $0.0052 40 586 req/s 17 209

    req/s 1 342 errors 2 vCPUs 0.5 GiB
  32. spring boot quarkus t3.nano $0.0052 40 586 req/s 17 209

    req/s 1 342 errors 2 vCPUs 2 GiB 2 vCPUs 0.5 GiB
  33. spring boot quarkus t3.nano $0.0052 t3.small $0.0208 40 586 req/s

    17 209 req/s 1 342 errors 2 vCPUs 2 GiB 2 vCPUs 0.5 GiB
  34. spring boot quarkus t3.nano $0.0052 t3.small $0.0208 40 586 req/s

    17 209 req/s 1 342 errors $3.87 a month 2 vCPUs 2 GiB 2 vCPUs 0.5 GiB
  35. spring boot quarkus t3.nano $0.0052 t3.small $0.0208 40 586 req/s

    17 209 req/s 1 342 errors $15.47 a month $3.87 a month 2 vCPUs 2 GiB 2 vCPUs 0.5 GiB
  36. spring boot quarkus t3.nano $0.0052 t3.small $0.0208 40 586 req/s

    17 209 req/s 1 342 errors $15.47 a month $3.87 a month x2 2 vCPUs 2 GiB 2 vCPUs 0.5 GiB
  37. spring boot quarkus t3.nano $0.0052 t3.small $0.0208 40 586 req/s

    17 209 req/s 1 342 errors $15.47 a month $3.87 a month $30.94 a month x2 2 vCPUs 2 GiB 2 vCPUs 0.5 GiB
  38. tell your boss you learned… -quarkus uses 2 - 10x

    fewer compute resources than spring -quarkus is 2 - 10x cheaper to run than spring
  39. t3.nano t3.small 2x t3.small Watts per hour 12.5 14 28

    Lemons per hour 17,857 20,000 40,000
  40. jbang wrk2@hyperfoil -t2 -c100 -d30s -R 200 -- latency http://localhost:8080/fruits

    sudo powermetrics --samplers cpu_power,tasks --show- process-samp-norm --show-process-gpu --show-usage- summary -i 0 -o output.txt
  41. tell your boss you learned… -use wrk2 or hyperfoil for

    load testing -use powermetrics to measure energy by pid on mac
  42. was this an easy demo? -bringing 77 ,857 lemons to

    devoxx turned out to be hard -no time for powermetrics demo
  43. what have we done? 1. translated output with a filter

    2. transformed code with an extension
  44. what have we done? 1. translated output with a filter

    2. transformed code with an extension 3. compiled rock ballads to bytecode
  45. what have we done? 1. translated output with a filter

    2. transformed code with an extension 3. compiled rock ballads to bytecode 4. amplified hallucinations
  46. what have we done? 1. translated output with a filter

    2. transformed code with an extension 3. compiled rock ballads to bytecode 4. amplified hallucinations 5. used minecraft as an observability client
  47. what have we done? 1. translated output with a filter

    2. transformed code with an extension 3. compiled rock ballads to bytecode 4. amplified hallucinations 5. used minecraft as an observability client 6. made memes with a cli
  48. what have we done? 1. translated output with a filter

    2. transformed code with an extension 3. compiled rock ballads to bytecode 4. amplified hallucinations 5. used minecraft as an observability client 6. made memes with a cli 7 . confirmed quarkus does a lot with very few resources