40
1

About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

1

Page 2: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

2

About Me

Stuart Douglas● Senior Principal Engineer at Red Hat● Quarkus Co-founder● Servlet Specification Co-lead● Founder of the Undertow Project● Core Contributor to WildFly

Page 3: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

3

Page 4: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

4

A cohesive platform for optimized developer joy:

Benefit No. 1: Developer Joy

Page 5: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

5

Benefit No. 2: Supersonic Subatomic Java

Quarkus + Native(via GraalVM)

12 MB

Quarkus + JVM(via OpenJDK)

73 MB

Traditional Cloud-Native Stack

136 MB

Page 6: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

6

Benefit No. 2: Supersonic Subatomic Java

Quarkus + Native(via GraalVM)

28 MB

Quarkus + JVM(via OpenJDK)

145 MB

Traditional Cloud-Native Stack

209 MB

Page 7: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

7

Benefit No. 2: Supersonic Subatomic Java

Quarkus + Native (via GraalVM) 0.016 Seconds

Quarkus + JVM (via OpenJDK) 0.943 Seconds

Quarkus + Native (via GraalVM) 0.042 Seconds

Quarkus + JVM (via OpenJDK) 2.033 Seconds

Traditional Cloud-Native Stack 9.5 Seconds

Traditional Cloud-Native Stack 4.3 Seconds

Page 8: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

8

Benefit No. 3: Unifies Imperative and Reactive

●●●

@InjectSayService say;

@GET@Produces(MediaType.TEXT_PLAIN)public String hello() {

return say.hello();}

@Inject @Channel(”kafka”)Publisher<String> reactiveSay;

@GET@Produces(MediaType.SERVER_SENT_EVENTS)public Publisher<String> stream() {

return reactiveSay;}

Page 9: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

9

Benefit No. 4: Best of Breed Frameworks & Standards

Page 10: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

10

Developer Joy

Quarkus Benefits

Supersonic Subatomic Java

Unifies

imperative and reactive

Best of breed

libraries and standards

Page 11: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

11

Page 12: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

12

●●●

MONOLITH

F FFFFFFFFF

F FFFFFFFFF

F FFFFFFFFF

F FFFFFFFFF

F FFFFFFFFF

F FFFFFFFFF

F FFFFFFFFF

F FFFFFFFFF

F FFFFFFFFF

F FFFFFFFFF

F FFFFFFFFF

F FFFFFFFFF

F FFFFFFFFF

F FFFFFFFFF

F FFFFFFFFF

F FFFFFFFFF

F FFFFFFFFF

F FFFFFFFFF

Page 13: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

13

Enterprise Java was Designed for 3-Tier Architecture

Page 14: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

14

How Application Services Deployed Java Apps

Page 15: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

15

Microservices Changed How We Deploy Apps

Page 16: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

●○

●○

16

The hidden truth about Java + containers

RSS

Page 17: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

17

The hidden truth about Java + containers

Page 18: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

18

The hidden truth about Java + containers

CONTAINER ORCHESTRATION

NodeNode

Traditional Cloud-Native Java Stack

Traditional Cloud-Native Java Stack

Traditional Cloud-Native Java Stack

Traditional Cloud-Native Java Stack

Node

NodeJS

NodeJS

NodeJS

NodeJS

NodeJS

NodeJS

NodeJS

Go Go Go

Go Go Go

Go Go Go

Go Go Go

Go Go Go

Go Go Go

Go Go GoNode

Quarkus

Quarkus

Quarkus

Quarkus

Quarkus

Quarkus

Quarkus

Quarkus

Quarkus

Quarkus

Quarkus

Quarkus

Quarkus

Quarkus

Page 19: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

Standards

Java on cloud native: a Red Hat journey

● Java EE streamlining● Eclipse MicroProfile

Runtimes● WildFly on OpenShift

Hardware architectures

● Raspberry Pi and Plug Computer● Android

Ahead of time compilation

● Lead gcj● Looked at Dalvik, Avian, Excelsior JET

OpenJDK

● Container ergonomics● JVM metadata reduction

19

Page 20: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds
Page 21: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

@@</>

Build time (maven, gradle…)

How does a framework start?

Page 22: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

@@</>

Load config file from file systemParse it

How does a framework start?

Page 23: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

How does a framework start?

@@</>

Classpath scanning to findannotated classesAttempt to load class to enable/disable features

Page 24: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

How does a framework start?

@@</>

Build its model of the world.

Page 25: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

How does a framework start?

@@</>

Start the management (thread, pool…)

Page 26: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

@@</>

The Quarkus way

@@</>

Page 27: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

@@</>

The Quarkus way - Closed-World Assumption

Limited variability

Page 28: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

@@</>

The Quarkus way - Benefits

No FS access at runtime

No need for a parser at runtime

No scanning at runtime

Less reflection and classloading

at runtime

Optimized configurationLess reflection

(proxy generation)

Prepared initialization

(ready to serve)

Page 29: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

29

JDK JIT - HotSpot AOTC - GraalVM Native Image

Page 30: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

30

Full stack

Conclusion

Massive productivity wins

Page 31: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds
Page 32: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

32

JVM CI

Sulong (LLVM)

Truffle

Graal Compiler

Substrate VM

Java HotSpot VM

Page 33: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

33

AOTC - GraalVM native image - Dead code elimination

Page 34: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

34

Not supported

The Dark Side

●●●●●

OK with caveats in usage

●●●●●●

Page 35: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

35

Not supported

The Dark Side

●●●●●

OK with caveats in usage

●●●●●●

Page 36: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

36

JIT - OpenJDK HotSpot

When to use which VM with Quarkus

High memory density requirementsHigh request/s/MBFast startup time

Best raw performance (CPU)Best garbage collectorsHigher heap size usage

Known monitoring toolsCompile Once, Run anywhereLibraries that only works in standard JDK

AOT - GraalVM native image

Highest memory density requirementsHighest request/s/MB

for low heap size usagesFaster startup time

10s of ms for Serverless

Page 37: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

37

Drives the gathering of metadata needed by GraalVM

GraalVM specific benefits

●●●

Minimize dependencies

Help dead code elimination

100% of the ecosystem supported on GraalVM

Page 38: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

38

Add your own dependency

Can I add my dependencies?

● Works on the JVM (OpenJDK)● May work on AOT (GraalVM)

Write your own extension

● Like add your dependency plus…● Build time startup and memory

improvements● Better dead code elimination● Developer Joy

YES

Page 39: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

39

Page 40: About Me2020/03/04  · Quarkus + JVM (via OpenJDK) 145 MB Traditional Cloud-Native Stack 209 MB 7 Benefit No. 2: Supersonic Subatomic Java Quarkus + Native (via GraalVM) 0.016 Seconds

40