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

Neo4j und Quarkus: Der unerwartete impro Talk b...

Neo4j und Quarkus: Der unerwartete impro Talk beim JavaLand 2022

Nach dem eindeutigen Ergebnis einer repräsentativen Twitter-Umfrage sind fast 75% aller Zuschauer dafür, dass ich nach dem sensationellem Erfolg der Power-Point-Karaoke auf dem JavaLand 2019 noch einmal einend drauf setze:

https://twitter.com/rotnroll666/status/1502630025576726529

Was steckt hinter der Magie, Edition 2022, Quarkus Framework.
Was muss passieren, damit Quarkus so schnell startet, welche Vorbedingungen und Einschränkungen gibt es.
Nach einer kurzen Vorstellungsrunde des „Warum“ anhand des Use-Cases „Wir möchten eine Datenbankverbindung mit Neo4j“ herstellen, dynamisch Klassen und Ressourcen finden, schauen wir uns den Aufbau einer Quarkus Extension an.
Was sind runtime und deployment module? Wie sind die Abhängigkeiten und warum das ganze?

Ganz im Sinne von Jatumba! JavaLand ist nur einmal im Jahr und was im JavaLand passiert, bleibt im JavaLand, wird der Vortrag gänzlich ohne Vorbereitung, sprich aus dem Arbeitsalltag gegeben und Pannen sind ein zu kalkulieren:
Vielleicht haben wir dennoch zusammen Spaß vor und auf der Bühne und nehmen noch etwas wissen mit nach Hause.

Michael Simons

March 16, 2022
Tweet

More Decks by Michael Simons

Other Decks in Programming

Transcript

  1. © 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
  2. © 2022 Neo4j, Inc. All rights reserved. 2 On a

    more serious note • DRK • Ärzte ohne Grenzen • Andere Probleme und Krisengebiete sind nicht weg
  3. © 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?
  4. © 2022 Neo4j, Inc. All rights reserved. © 2022 Neo4j,

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

    hier? 6 Mal wieder: Der Blick hinter die Kulissen
  6. © 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
  7. © 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
  8. © 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
  9. © 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
  10. © 2022 Neo4j, Inc. All rights reserved. Ziele • Datenbankverbindung

    herstellen • Klassen (“Entitäten”) finden • “Unified” Konfiguration • (Datenbankrefaktorings (Klassen und Ressourcen finden))
  11. © 2022 Neo4j, Inc. All rights reserved. Herausforderungen • Persistente

    TCP Verbindungen • SSL • Dynamisches Laden von “Dingen”
  12. © 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/
  13. © 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.
  14. © 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)
  15. © 2022 Neo4j, Inc. All rights reserved. Quarkus • Programmatisch

    für Extension-Provider • Hints (Annotationen) für Enduser oder “Durchgriff” auf Native Image Tools
  16. © 2022 Neo4j, Inc. All rights reserved. Aufbau und Ablauf

    einer Quarkus-Extension Augmentation Static Init Runtime Init
  17. © 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