Best Presentation Awards
Von der Community gefeiert, von uns ausgezeichnet.
Entdecke die Best Presentation Awards der vergangenen Jahre – ein Archiv voller Java-Exzellenz.
Architektur & Sicherheit
Wie wir mit bahn.de über 2000 Requests pro Sekunde beantworten
Das Vertriebssystem der Bahn wurde in den letzten Jahren komplett neu aufgebaut. Der DB Navigator, die bahn.de-Website, sowie die dazugehörigen Backend-Systeme wurden neu konzipiert und entwickelt. Anfang September 2023 erfolgte der erste große Livegang mit dem Austausch von bahn.de.
Bei der Plattform handelt es sich um eines der größten E-Commerce-Systeme in Deutschland, das täglich für sechs- und siebenstellige Nutzerzahlen Auskünfte und Angebote bereitstellt. In bestimmten Situationen ist das Aufrufaufkommen besonders groß, sodass wir bei der Angebotserstellung mit 2000 Requests pro Sekunde und teilweise noch mehr bombardiert werden, die wir alle beantworten möchten, um unsere Reisenden nicht im Unklaren zu lassen.
Aus diesem Grund wurde im Vorfeld sehr viel Aufwand für die Performance-Optimierung betrieben.
Wir wollen in dieser Session unsere praktischen Erfahrungen, Erkenntnisse und Learnings im Hinblick auf Architektur, Tools/Frameworks, Vorgehen und insbesondere auch dem produktiven Betrieb teilen, um anderen Einblicke zu geben, was der stabile Betrieb einer Plattform mit unseren nicht-funktionalen Anforderungen für Technik und Organisation bedeutet. Wir freuen uns auch über einen Austausch mit den Erfahrungen und Learnings anderer in vergleichbarem Umfeld.
Trends & neue Technologien
Von Zero zum ChatGPT Hero
- Verstehen und Optimieren für besseres Prompt Engineering
Sind Sie bereit, Ihre Fähigkeiten im Bereich Prompt Engineering auf ein neues Level zu bringen? In dieser Präsentation tauchen Sie in die faszinierende Welt von ChatGPT ein. Dabei werden die Sprecher auf die Grundlagen von GPT und auf die besonderen Fähigkeiten von einem der aktuell leistungsfähigsten textbasierten Dialogsysteme eingehen. Ein wichtiger Aspekt ist darüber hinaus, das Verständnis für Prompt Engineering zu fördern. Durch die Optimierung von Prompts lässt sich die Qualität der Antworten von ChatGPT drastisch verbessern. Wir behandeln einige bewährte Verfahren für die Konstruktion von Prompts, wie z.B. das Chain-of-Thought oder das deklarative Prompting. Sie gewinnen in dieser Präsentation ein tieferes Verständnis von ChatGPT. Praktische Tipps zur Verbesserung von Prompt Engineering runden den Vortrag ab.
Trends & neue Technologien
Deepfakes am Limit: Fake-Videocalls mit Künstlicher Intelligenz
- Fake-Videocalls mit Künstlicher Intelligenz
Stellen Sie sich das mal vor: Jemand nimmt mit einem digitalen Ebenbild Ihrer Person an einem Live-Videoanruf teil. Heutige Echtzeit-Deepfake-Technologie erlaubt es, mit bloßem Auge kaum noch unterscheidbare “Doppelgänger” einer Person zu erzeugen. Das TNG Innovation Hacking Team forscht seit dem Jahr 2019 intensiv an der künstlichen Intelligenz rund um Echtzeit-Deepfakes und entwickelt diese ständig weiter. Das Endergebnis und die einzelnen Schritte hin zum Fotorealismus werden in diesem Vortrag vorgestellt. Seit ihrer Entstehung im Jahr 2017 haben sich Deepfakes von einer KI-Spielerei zu einem mächtigen Werkzeug weiterentwickelt. Auch Medienformate wie Leschs Kosmos, Galileo und anderen Sendungen arbeiten inzwischen mit TNG-Deepfakes. In dem Vortrag zeigen wir die verschiedenen Evolutionsschritte der Deepfake-Technologie, beginnend mit dem “Ur”-Deepfake und endend mit Echtzeit-Deepfakes des gesamten Kopfes. Mehrere Live-Demos bringen dem Publikum einzelne Bestandteile der Software näher. Dabei gehen wir insbesondere auf verschiedene neue Technologien zur Verbesserung der Deepfake-Erzeugung wie zum Beispiel Tensorflow 2 und MediaPipe und die Unterschiede zu unseren früheren Umsetzungen ein.
Trends & neue Technologien
Workflow Automation Reinvented
Sonstiges
Bessere Präsentationen für Entwickler und Architekten
Wer kennt sie nicht aus seinem beruflichen Alltag: tödlich langweilige, mit Details überhäufte PowerPoint Präsentationen, die die Zuhörer und Leser mit Bullet-Point Wüsten in den Schlaf treiben und primär der Selbstbeweihräucherung des Referenten dienen? Anders gefragt: wer ist als Entwickler oder Architekt schon einmal mit einer Präsentation, in der man seinem Management eine tolle neue Technologie schmackhaft machen wollte, an eine Wand gelaufen weil man einfach nicht die richtigen Worte fand um Zugang zu seinem Chef (Chef) zu erhalten?
Solche Situationen wird jeder, der im IT- oder Projektgeschäft tätig ist, nicht nur einmal in seiner Laufbahn erleben. Des Weiteren hat in den letzten Jahren das Buch Presentation Zen von Garr Reynolds insbesondere auf Konferenzen zu einer spürbaren Veränderung im Entwurf von Schaubildern geführt. Oft sind die eben genannten Bullet-Points verschwunden und wurden durch großflächige Bilder mit wenig Text ersetzt. Allerdings wirkt der eben genannte Stil im Geschäftsleben, welches sich auf das Tagesgeschäft konzentriert und sich abseits von Sales-Pitches o.ä. bewegt, oft unangebracht. Dabei ist das Erstellen guter Präsentationen kein Hexenwerk, welches nur Unternehmensberatern oder Design Spezialisten vorbehalten ist. Jeder kann gute Präsentationen erstellen. Stellen wir einmal das Layout und Design der Folien zurück, werden wir erkennen, dass die Basis eine solide Story und eine gute Argumentations-Kette sein muss. Genau an dieser Stelle setzt dieser Vortrag an und vermittelt Ihnen ausgehend von einer Idee oder einem Thema grundlegende Techniken zur Vorbereitung, Argumentation, Storybuilding und schließlich zum Entwurf einer gelungenen Präsentation.
Rich Clients
Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript
Get introduced to the Vaadin framework by one of its core developers. The Vaadin provides a desktop-like programming model on the server for creating Rich Internet Applications (RIAs) in plain Java – without the need for HTML, XML, plug-ins or JavaScript.
In this session, Joonas lays out the key concepts of the server-side RIA development model and compares it to client-side RIA. To demonstrate the use of framework, an example application is developed during the session step-by-step. The presentation is concluded with pointers on how to start developing your own applications with Apache-licensed Vaadin-framework.
You’ll learn:
- How to create a desktop like web application in Java
- Difference between page oriented, client-side RIA and server-side RIA architectures
- How Vaadin can be extended with Google Web Toolkit
Entwicklungsprozess
Liebling, ich habe den Build geschrumpft!
Softwareentwickler lieben Continuous Integration (CI): Jede Codeänderung wird innerhalb von Minuten bestätigt oder als fehlerhaft erkannt. Risiken werden kleiner, Projektleiter gelassener, Refactorings mutiger, Software besser.
Lange Buildzeiten sind jedoch die Achillesferse der CI. Praktisch jedes Entwicklerteam stellt sich daher irgendwann die Frage: “Leute, wie schrumpfen wir den Build zurück?”
Wir werden Ansätze betrachten, wie Buildzeiten verkürzt werden können und wie ein CI-System dabei helfen kann. Diese Vorschläge umfassen sowohl “tiefhängende Früchte”, die also mit wenig Aufwand schnelle Erfolge bringen können, aber auch ausbaubare Lösungen, die etwas mehr an strategischer Investition erfordern. Der Schwerpunkt wird auf der Parallelisierung von verteilten Builds liegen – und warum diese einfache Idee in der Praxis fast immer kniffliger ist als erwartet.
Die konkrete Umsetzung wird anhand von Live-Demos mit dem CI-System “Hudson” (http://hudson-ci.org) gezeigt. Und natürlich sind wieder eXtreme-Feedback-Devices mit von der Partie…
Butler und Baumeister – Kontinuierliche Integration mit Hudson
Hudson (https://hudson.dev.java.net) ist ein Java-basiertes Continuous-Integration-System. Entwickler und Teamleiter können damit wichtige Aspekte der Softwareerstellung automatisieren und so mehr Transparenz in IT-Projekte bringen.
Über 140 Plug-Ins sind bereits für unterschiedlichste Automatisierungsaufgaben verfügbar: vom Checkout zum Deployment, von der Codemetrik bis zur Ansteuerung von sprechenden Hasen.
Hudson muss den Vergleich mit den “üblichen Verdächtigen” seiner Gattung wie etwa CruiseControl nicht scheuen. Im Gegenteil: In vielen Fällen etabliert sich Hudson sogar als deren Ablösung. Für sein Potenzial spricht auch die Auszeichnung mit dem “Duke‘s Choice Award” in der Kategorie “Developer Solutions” auf der JavaOne 2008. Hudson ist kostenlos, Open Source, und wird von einer äußerst rührigen Entwicklergemeinde vorangetrieben – vor allem aber ist es praxiserprobt.
Hudson bietet insbesondere:
- Einfache Installation – im Extremfall mit nur einem Klick.
- Bequeme Konfiguration und Bedienung per Weboberfläche
- Direkte Unterstützung von Builds auf Basis von Ant, Maven, Shellskripten oder Windows-Batchdateien. Darüberhinaus existieren bereits Plug-Ins für Gant, Groovy, MSBuild, NAnt, Rake und Ruby.
- Umfangreiche Kommunikationsmittel wie E-Mail, RSS, IM-Integration oder Permalinks.
- Ansprechende Visualisierung von Statistiken, z.B. von JUnit- oder TestNG-Ergebnissen.
- Verteilte Builds über mehrere Rechner
- Fernsteuerbarkeit durch Remoting-Schnittstelle
Folgende Leitfragen der Präsentation werden illustriert durch eine durchgängige Live-Demonstration mit Extreme-Feedback-Anzeigen:
- Welche Vorteile bringt kontinuierliche Integration?
- Was macht Hudson so besonders?
- Wie gelingt die Hudson-Einführung sowohl aus technischer als auch aus kultureller Sicht?
- Welche Weiterentwicklungen für Hudson sind geplant?
Implementing Enterprise Integration Patterns with Apache Camel
In einer zunehmend vernetzten und automatisierten Welt wird die Integration von IT-Systemen immer bedeutender und stellt oft eine große Herausforderung für Software- Architekten und Entwickler dar. Mit dem Einsatz von Enterprise Integration Patterns (http://www.enterpriseintegrationpatterns.com), die bewährte Integrationslösungen beschreiben, kann diese Aufgabe wesentlich vereinfacht werden.
Nach einer kurzen Erläuterung einiger wichtiger Enterprise Integration Patterns, stellt Eduard Hildebrandt in diesem Vortrag das Open-Source Framework “Apache Camel” (http://activemq.apache.org/camel) vor und zeigt wie es unter Verwendung von minimalen Java oder XML Code dazu eingesetzt werden kann leistungsfähige Enterprise Integration Patterns zu implementieren um Systeme und Services über unterschiedliche Transport-Protokolle und Datenformate zu integrieren. Weiterhin wird auf die Einsatzmöglichkeiten von Apache Camel zur Überwachung und Test von Webservices eingegangen.
Programmieren mit Parametrisierten Typen in Java 5.0
Die Version 5.0 der Java Standard Edition hat einige Änderungen an der Sprache und den Plattform-Bibliotheken gebracht. Insbesondere die Einführung von parameterisierten Typen sowie deren konsequente Verwendung im Collection Framework und anderen Teilen des JDK betrifft nahezu jeden Java-Entwickler, der Java 5.0 einsetzen will. Zwar wurde mit parameterisierten Typen schon lange vor ihrer Freigabe im Herbst 2004 experimentiert. Ihre endgültige Form, wie seit Java 5.0 verfügbar, weicht aber stark von den anfänglichen Java Generics ab. Insbesondere die sogenannten Wildcards – seltsame syntaktische Konstrukte mit Fragezeichen – wurde erst kurz vor der Freigabe von Java 5.0 in die Sprache aufgenommen. Nun lachen diese Wildcards dem Java-Entwickler bei jedem Blick in die Java-API-Dokumentation entgegen.
In dieser Session sehen wir uns das Sprachmittel der parametrisierten Typen an. Da sicher die meisten Java-Entwickler bereits eine ungefähre Vorstellung von Java Generics haben werden, liegt der Schwerpunkt auf den weniger offensichtlichen Aspekten, wie zum Beispiel den Wildcard-Instantiierungen. Daneben werden neue Programmiertechniken diskutiert, die sich aus der Parametrisierung von Typen und Methoden ergeben. Dazu gehört die Nutzung von Typinformation in Form von Class<T>-Objekten, flexibles API-Design unter Verwendung von Wildcards sowie Kompatibilitätserwägungen bei der Generifizierung existierenden APIs.