The document discusses the optimizations Quarkus makes compared to traditional Java frameworks, focusing on performance, startup time, and memory footprint. It highlights Quarkus's ability to halve resource usage and significantly increase boot speed through its unique build processes and extension mechanisms. The document also explores how Quarkus streamlines application startup by modifying class paths and utilizing tools like GraalVM for native image compilation.
What is wrongwith Java frameworks
• They load too many classes
• They perform a lot of initialization at runtime
• They overuse dynamic/reflective functionality (in general
and during startup in particular)
• They need to be paired with full-fledged JVM to run
How faster/smaller? Ruleof thumb
Hotspot optimized Quarkus App
½ the RSS space
X5 boot speed
Native optimized Quarkus App
1/5 the RSS space
X50 boot speed
@Dimitris Andreadis, Director of Engineering at Red Hat
12.
What is beingoptimized?
• Performance – startup time
• Resources – memory footprint (RSS)
• Resources – app size
How does usualJava framework start?
Packaging (maven, gradle)
17.
How does usualJava framework start?
Packaging (maven, gradle)
Load and parse
config files
18.
How does usualJava framework start?
Packaging (maven, gradle)
Load and parse
config files
Classpath scanning
and annotation
discovery. Enable
features based on
class availability
19.
How does usualJava framework start?
Packaging (maven, gradle)
Load and parse
config files
Classpath scanning
and annotation
discovery. Enable
features based on
class availability
Build metamodel
of the world
20.
How does usualJava framework start?
Packaging (maven, gradle)
Load and parse
config files
Classpath scanning
and annotation
discovery. Enable
features based on
class availability
Build metamodel
of the world
IO, threadpools, etc
21.
How does usualJava framework start?
Packaging (maven, gradle)
Load and parse
config files
Classpath scanning
and annotation
discovery. Enable
features based on
class availability
Build metamodel
of the world
IO, threadpools, etc
Build time
22.
How does usualJava framework start?
Packaging (maven, gradle)
Load and parse
config files
Classpath scanning
and annotation
discovery. Enable
features based on
class availability
Build metamodel
of the world
IO, threadpools, etc
Build time Runtime
23.
How does Quarkusstart?
Packaging (maven, gradle)Load and parse
config files
Classpath scanning
and annotation
discovery. Enable
features based on
class availability
Build metamodel
of the world
IO, threadpools, etc
Build time Runtime