Alles an Metaprogrammierung, was eine klassische Enterprise Java Applikation zur Startup Zeit macht, können wir bereits vorher erledigt haben. Doch wie geht das? Und was können wir von Quarkus in dieser Richtung lernen?
---
Das #Softwarepicknick ist deine digitale Mittagspause mit den Experten der open knowledge GmbH.
Bei diesem meet und eat bringen wir dir hilfreiche Codesnacks und aktuelle Thesen der modernen Softwareentwicklung direkt auf den Tisch
und schaffen eine Wiese für deine konkreten Fragen aus dem Projektalltag.
Die 30-minütigen Sessions bieten dir informative Impulse und die Möglichkeit des direkten Austausches.
Technische Gründe für schlechte Entwicklungsperformance
1. SOFTWARE
P I C K N I C K#
Technische Gründe für schlechte
Entwicklungsperformance
Thorben Kuck, OPEN KNOWLEDGE GmbH
www.softwarepicknick.de @_openknowledge @openknowledge.de @openknowledg
2. Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
Warum eine manche Applikation so lange braucht zum Starten und
was wir dagegen tun könnten
Technische Gründe für
schlechte
Entwicklungsperformance
4. Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
Die drei Phasen des Wartens
Startup Time
First Response
Time
Drücke
auf den
grünen
Knopf
Runtime
Warte bis die
Applikation
sagt
“Ich bin
hochgefahren”
Sende einen
Request und
warte bis der
erste Response
kommt
5. Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
Startup Time
Suche alle Notwendigen
Klassen zusammen
Erstelle Proxy
Klassen
Löse
Abhängigkeiten
auf und validiere
sie
Klassen
Metadaten
analysieren
6. Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
Startup Time
● Wir wollen wenig Code schreiben (nur eine Zeile Code wenn möglich)
○ Reduzierung von “Zeremoniellen Code”
○ Aber: Wenig Code muss viel Code erzeugen
● Dynamische Metaprogrammierung wird genutzt
○ Klassen suchen andere annotierte Klassen
○ Neue Klassen entstehen
○ Bestehende Funktionalität wird erweitert
- Aber warum erst zur Laufzeit?
- Geht das auch schon vorher?
- Ja! Mit Annotation Processing!
7. Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
Annotation Processing
● Wird direkt im Compiler aufgerufen
● Klassen sind bereits zerlegt in AST-Repräsentation
● Metadaten sind analysiert
● API bietet Schnittstelle zum Erstellen neuer Klassen
● Fehler können direkt an den Compiler gegeben werden
“Pluggable Annotation Processing API”
8. Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
Startup Time
Suche alle Notwendigen
Klassen zusammen
Erstelle Proxy
Klassen
Löse
Abhängigkeiten
auf und validiere
sie
Klassen
Metadaten
analysieren
Erstelle Proxy
Klassen
9. Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
Annotation Processing
Suche alle Notwendigen
Klassen zusammen
Erstelle Proxy
KlassenLöse
Abhängigkeiten
auf und validiere
sie
Klassen
Metadaten
analysieren
10. Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
Annotation Processing
● Mehrere Frameworks existieren auch hier
○ JavaPoet
○ Google Auto Service
○ …
● Rekursion durch mehrere Runden
○ Erstellte Klassen gehen zurück an den Compiler
Aber damit noch nicht genug!
11. Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
Und was hat Quarkus
jetzt bitte damit zu tun?
12. Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
“Amazingly fast boot time, incredibly low RSS memory
(not just heap size!) offering near instant scale up and high density memory
utilization in container orchestration platforms like Kubernetes.”
=> Verbraucht wenig Speicher und fährt sehr schnell hoch
Was ist Quarkus
SUPERSONIC SUBATOMIC JAVA
13. Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
Was ist Quarkus
14. Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
Wie funktioniert das?
● First Class Support for Graal/SubstrateVM
● Build Time Metadata Processing
● Reduction in Reflection Usage
● Native Image Pre Boot
“We use a technique we call compile time boot”
15. Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
Wie funktioniert das?
● First Class Support for Graal/SubstrateVM
● Build Time Metadata Processing
● Reduction in Reflection Usage
● Native Image Pre Boot
“We use a technique we call compile time boot”
16. Technische Gründe für schlechte Entwicklungsperformance | Thorben Kuck
Sollten wir jetzt immer Quarkus nutzen?
● Besonders bei Framework Design: Ja, bitte!
○ Leichter Fehler sehen
○ Mehr Transparenz im Code
● Standard Enterprise Entwicklung? Hängt davon ab
○ Ihr könnt Quarkus oder eine ähnliche Technologie nutzen? Vielleicht..
○ Ihr müsstet Raum und Zeit dafür ändern? Nein!
17. SOFTWARE
P I C K N I C K#
Du hast Fragen zum Thema?
Schreibe uns eine E-Mail an:
softwarepicknick@openknowledge.de
Unsere Experten melden sich persönlich bei dir.
www.softwarepicknick.de @_openknowledge @openknowledge.de @openknowledg