Slide 1

Slide 1 text

Gratatouille Webinar - Apr 2024

Slide 2

Slide 2 text

Hi πŸ‘‹ πŸ₯

Slide 3

Slide 3 text

apollographql/apollo-kotlin

Slide 4

Slide 4 text

Automatic code generation 4 query.graphql schema.graphqls Kotlin

Slide 5

Slide 5 text

Codegen 5 { sessions { nodes { language title startsAt speakers { name } } } } class Session(val nodes: List) class Node( val language: String, val title: String, val startsAt: DateTime, val speakers: List ) class Speaker(val name: String)

Slide 6

Slide 6 text

6

Slide 7

Slide 7 text

7

Slide 8

Slide 8 text

Classloaders 8 ● Several ones β—‹ root project classloader β—‹ subproject classloader β—‹ buildSrc classloader ● See Crash course in classloaders

Slide 9

Slide 9 text

9

Slide 10

Slide 10 text

10 Yes, BUT… johnrengelman/shadow

Slide 11

Slide 11 text

11 Yes, BUT… ● Slow to compile ● Duplicates bytecode ● Doesn’t fix everything GradleUp/Gr8 πŸ˜πŸ†™

Slide 12

Slide 12 text

Other things 12 ● Overlapping outputs ● Build cache ● Path sensitivity ● Manual serialization ● Parallel execution ● Optional/nullable ⁉ ● Type safety

Slide 13

Slide 13 text

Entering Gratatouille Even more classloaders… ;-)

Slide 14

Slide 14 text

Live demo?

Slide 15

Slide 15 text

Status 15 ● Mostly proof of concept ● Branch of Apollo working with it ● Single artifact mode ● Testing