Slide 1

Slide 1 text

© 2022 Neo4j, Inc. All rights reserved. © 2022 Neo4j, Inc. All rights reserved. 1 Neo4j und Quarkus: Der unerwartete impro Talk beim JavaLand 2022 Michael Simons @rotnroll666, Staff Software Engineer

Slide 2

Slide 2 text

© 2022 Neo4j, Inc. All rights reserved. 2 On a more serious note ● DRK ● Ärzte ohne Grenzen ● Andere Probleme und Krisengebiete sind nicht weg

Slide 3

Slide 3 text

© 2022 Neo4j, Inc. All rights reserved. • Neo4j seit 2018 • 50% des Spring Data Neo4j / OGM (Object Graph Mapping Teams) • Tut so, als ob er Ahnung von Query-Languages hätte • Ein paar andere Dinge ➡ Wer bin ich?

Slide 4

Slide 4 text

© 2022 Neo4j, Inc. All rights reserved. Warum bin ich hier? 4

Slide 5

Slide 5 text

© 2022 Neo4j, Inc. All rights reserved. © 2022 Neo4j, Inc. All rights reserved. 5 Hmm… 🤔

Slide 6

Slide 6 text

© 2022 Neo4j, Inc. All rights reserved. Worum geht es hier? 6 Mal wieder: Der Blick hinter die Kulissen

Slide 7

Slide 7 text

© 2022 Neo4j, Inc. All rights reserved. 7 Audiobook Version eines längeren Textes https://michael-simons.github.io/neo4j-migrations/maintaining-a-medium-sized-java-library-in-2022 -and-beyond/#Frameworks

Slide 8

Slide 8 text

© 2022 Neo4j, Inc. All rights reserved. Warum ich das Wissen über Frameworks für wichtig halte… ● CDD (Conference driven development) ist gut und schön für Tag 1, der Test an Tag 2 wird schmerzhaft und danach geht es bergab ● Ich mag keine Überraschungen ● Ich möchte meine Libraries so aufbereiten, dass sie “woanders” funktionieren ● Spaß am Lernen

Slide 9

Slide 9 text

© 2022 Neo4j, Inc. All rights reserved. Neo4j ● Graph Datenbank ○ Verfügbar “on-prem” ○ In der Cloud (Neo4j AuraDB) ○ Community Edition unter GPL v3 Lizenz ● “Bolt” protocol: Our native connectivity with drivers for ○ Java ○ .Net ○ Python ○ Go

Slide 10

Slide 10 text

© 2022 Neo4j, Inc. All rights reserved. Quarkus ● Java framework tailored for deployment on Kubernetes. ○ Hotspot UND GraalVM auf Augenhähe ● Container first ● unified configuration ● "Batteries included" approach ● Live coding: Quick turnaround ● Fast startup, low memory

Slide 11

Slide 11 text

© 2022 Neo4j, Inc. All rights reserved. Ziele ● Datenbankverbindung herstellen ● Klassen (“Entitäten”) finden ● “Unified” Konfiguration ● (Datenbankrefaktorings (Klassen und Ressourcen finden))

Slide 12

Slide 12 text

© 2022 Neo4j, Inc. All rights reserved. Herausforderungen ● Persistente TCP Verbindungen ● SSL ● Dynamisches Laden von “Dingen”

Slide 13

Slide 13 text

© 2022 Neo4j, Inc. All rights reserved. Spaß mit GraalVM Native image https://info.michael-simons.eu/2020/09/15/about-the-tooling-available-to-create-native-graalvm-images/

Slide 14

Slide 14 text

© 2022 Neo4j, Inc. All rights reserved. Create a closed world 14 Or at least, assume one.

Slide 15

Slide 15 text

© 2022 Neo4j, Inc. All rights reserved. 15 Arbeit Richtung Buildtime verschieben ● Konfiguration ● (CDI-Lite) Beans ● Ressourcen ● Entities Nicht nur für native Image relevant!!! Buildtime-Ergebnisse führen zu synthetischem Bytecode Ebenfalls schnellerer Starter auf der JVM.

Slide 16

Slide 16 text

© 2022 Neo4j, Inc. All rights reserved. Verschiedene Lösungen ● Annotationsbasiert (javax.annotation.processing.*) ● Programmatisch (Explizit) ● Funktional / Hints (Eher Richtung Enduser, in dem Fall End-Entwickler:in)

Slide 17

Slide 17 text

© 2022 Neo4j, Inc. All rights reserved. Quarkus ● Programmatisch für Extension-Provider ● Hints (Annotationen) für Enduser oder “Durchgriff” auf Native Image Tools

Slide 18

Slide 18 text

© 2022 Neo4j, Inc. All rights reserved. Aufbau und Ablauf einer Quarkus-Extension Augmentation Static Init Runtime Init

Slide 19

Slide 19 text

© 2022 Neo4j, Inc. All rights reserved. 19 Demo time (Break all the things)

Slide 20

Slide 20 text

© 2022 Neo4j, Inc. All rights reserved. © 2022 Neo4j, Inc. All rights reserved. 20 Thank you! Contact me at [email protected] @rotnroll666 on the bird app