Java Land 2023

Vom 21. bis 23. März 2023 findet die JavaLand im Phantasialand in Brühl statt. Zwei ereignisreiche Tage gefüllt mit Vorträgen, Community-Aktivitäten, einer begleitenden Ausstellung, Workshops, Austausch und Networking mit einzigartigem Freizeitpark-Flair. Am letzten Tag der Konferenz findet ein Schulungstag statt, bei dem Gelerntes intensiv vertieft werden kann.

Phantasialand Brühl
Berggeiststraße 31-41
50321 Brühl
21
.
03
.
2023
-
23
.
03
.
2023

Services stürmisch schneiden

Vortrag von Ina Einemann und Arne Limburg

Event Storming ist eine Methode des Domain Driven Design, die es ermöglicht, sich gemeinsam die Fachlichkeit einer Anwendung zu erarbeiten. Richtig angewendet und bis zum Ende durchgeführt, bietet Event Storming aber noch mehr. Das Ergebnis kann nämlich sehr gut verwendet werden, um darauf basierend Bounded Contexte zu identifizieren. Diese zeichnet dabei aus, dass wenig Kommunikation über Kontext-Grenzen hinweg passiert und das diese Kommunikation insbesondere robust ist.

In der Session stellen wir die Methode Event Storming vor und zeigen, wie man über die Methode Bounded Contexte ermitteln kann und diese so gestalten kann, dass sie lose gekoppelt sind, so dass es auch nicht problematisch ist, wenn ein Service temporär ausfällt.

Microservices schneiden mit EventStorming

Workshop mit Ina Einemann und Arne Limburg

Mit Microservices versuchen Softwarearchitekten, eine Anwendung in möglichst kleine, unabhängige Teile zu schneiden, die dann miteinander kommunizieren. Wie schafft man es aber, dass dabei weder die Fachlichkeit zerpflückt wird, noch der Blick für das große Ganze verloren geht? Wie schneide ich die Services richtig? Und worauf muss bei der Kommunikation der Services untereinander geachtet werden?

In unserem Workshop erläutern wir euch die Vorteile von Event Storming und verproben die Methode anhand eines Praxisbeispiels.

Löscht Eure Unit-Tests

Vortrag von Arne Limburg

In der Praxis sind Unit-Tests - wenn sie denn überhaupt existieren - häufig wartungsintensiv und damit insbesondere bei umfangreicheren Refactorings in der Regel eher im Weg als dass sie helfen.

Ist die Klassische Testing-Theorie, die davon ausgeht, dass die Menge der Tests von Unit-Tests zu Integration-Tests Schritt für Schritt abnimmt (Test-Pyramide) also überholt?

Andererseits sind automatische Integrationstests in der Regel zu langsam in der Ausführung, um ein schnelles Entwickler-Feedback zu gewährleisten und eine hohe Testabdeckung zu erzielen. Diese wird benötigt, um bei Weiterentwicklung sicher zu sein, dass bestehende Funktionalität erhalten bleibt. Insbesondere durch die wachsende Bedeutung von Continuous Delivery gewinnt eine hohe Automatisierung der Tests bei gleichzeitiger hoher Testabdeckung an Bedeutung.
Aber wie schreibe ich eigentlich Tests, die mir bei einem Refactoring helfen, anstatt es zu erschweren? Was für Arten von Tests schreibe ich in welcher Situation?

In der Session wird ausgehend von der Frage: „Was ist das Ziel automatisierter Tests?“ analysiert, wann welcher Test sinnvoll ist und wie man sie aufbaut.
Dabei wird auch darauf eingegangen, was eigentlich Kriterien guter Tests sind und wie man Tests schreiben kann, die einen echten Mehrwert für die Software und ihren Entwicklungsprozess bieten.

Facial Expression Recognition: Wie KI lernt, unseren Gemütszustand zu erkennen

Vortrag von Tim Wüllner

Auch wenn die Antwort auf die Frage „Wie geht es dir?“ eigentlich immer „Gut!“ lautet, können wir Menschen anhand des Gesichtsausdrucks relativ einfach den wahren Gemütszustand unseres Gegenübers ablesen. Für Maschinen dagegen ist diese Aufgabe alles andere als trivial!

Warum ist dem so? Klassische, regelbasierte Systeme stoßen aufgrund der vielen zu berücksichtigenden Parameter – Geschlecht, ethnische Herkunft, Körperhaltung, Qualität der Eingabe-Quelle (Auflösung) etc. - schnell an ihre Grenzen. Anders dagegen ML-basierte Ansätze, welche auf Basis von vielen, vielen Beispielen durchaus in der Lage sind zu lernen, verschiedene Gemütszustände zu unterscheiden: „Facial Expression Recognition" auf Basis von Neuronalen Netzen heißt hier das Zauberwort.

Klingt kompliziert, ist es aber nicht!

Im Rahmen der Session zeige ich, wie man ein passendes Neuronales Netz erstellt, mit hinreichend vielen Daten trainiert und am Ende sicherstellt, dass es auch wie geplant funktioniert. Dazu nutze ich u.a. Frameworks wie Tensorflow, Keras und OpenCV, sowie öffentlich zur Verfügung stehende Bilddaten. Was das Ganze mit Java zu tun hat, fragst du dich? Lass dich überraschen.

It’s not Rocket Science: Neuronale Netze verstehen

Vortrag von Lars Röwekamp

KI und insbesondere Deep Learning sind der Megatrend. Dank leistungsstarker Frameworks sind erste Schritte schnell gemacht. Leider stößt man aber genauso schnell auch wieder an (seine) Grenzen. Passt das genutzte Modell überhaupt zu meinem Problem? Wie sind die gewonnenen Ergebnisse zu bewerten? Kann durch geschickte Veränderung von Modell-Parametern das Ergebnis weiter verbessert werden?

In der Session werden wir unser eigenes Neuronales Netz von Grund auf aufbauen und Schritt für Schritt verbessern. Aber keine Angst: „it’s not rocket science“!

Verteilt und fast in Echtzeit - mit Elixir und Phoenix

Vortrag von Andreas Willems

Die Programmiersprache Elixir und die zugrunde liegende Erlang-Platform erlauben es mit tief in der Sprache eingebetteten Konzepten, verteilte und ausfallsichere Anwendungen zu erstellen. Nimmt man dazu diverse Features aus dem Phoenix Framework, wie etwa den PubSub-Mechanismus oder LiveView, können ohne allzu großen Aufwand dynamische Web-Anwendungen erstellt werden. In diesem Vortrag sollen am Beispiel einer Anwendung einige der Konzepte erläutert werden, die Elixir zu einer herausragenden Wahl nicht nur für verteilte Anwendungen machen.

Zur Veranstaltungswebsite.