Zum Inhalt springen

JavaLand 2019 Schulungstag

21. März 2019

Alle Schulungen finden von 9 bis 17 Uhr statt.

Web-Security 101 für Entwickler

Entwickler sollen am besten nicht nur fehlerfreie, sondern auch sichere Software schreiben – nur wie? Darum soll es in diesem Workshop gehen: Gemäß dem Motto, dass man Probleme nur dann vermeiden kann, wenn man sich ihrer bewusst ist und ihre Ursache kennt, werden die häufigsten Security-Probleme bei der Entwicklung von Webanwendungen vorgestellt, unter anderem:

  •  Was ist eine SQL-Injection (und wie vermeide ich sie)?
  •  Was ist ein Cross-Site-Scripting (und wie vermeide ich es)?
  •  Probleme beim Login- und Sessionmanagement
  •  Was ist ein Cross-Site-Request-Forgery (und wie vermeide ich es)?

Vortrag, Demos, Fragen und Diskussion werden sich abwechseln. Auch werden wir in die Perspektive des Angreifers wechseln und versuchen, die vorgestellten Probleme in einer anfälligen Demo-Anwendung selbst zu finden. So wird das Wissen über "was", "wie" und "warum" gefestigt um handwerkliche Fehler im Entwickleralltag mit Security-Auswirkungen zu vermeiden.

Zielgruppe:

Anfänger

Stefan Schlott BeOne Stuttgart GmbH

Hibernate + jOOQ + Flyway = Die besten Frameworks in einem Stack

Hibernate hat sich in vielen Teams aufgrund der guten Unterstützung von CRUD-Operationen als Standardlösung zur Speicherung relationaler Daten etabliert. Es bietet für einige andere, häufig auftretende Fragestellungen allerdings keine guten Antworten.

Komplexe Datenbankabfragen können mit Hibernates Abfragesprache JPQL nicht abgebildet werden und bei der Verwendung nativer SQL-Abfragen erhalten Entwickler kaum Unterstützung. Ähnlich schlecht sieht es bei der Verwaltung des Datenbankschemas aus. Hibernate ermöglicht zwar die initiale Generierung der Tabellen, diese sind aber meist ineffizient und erfordern weitere Anpassungen. Die Migration eines vorhandenen Schemas ist mit Hibernate überhaupt nicht möglich.

jOOQ und Flyway bieten für diese Aufgaben deutlich bessere Lösungen. Erfahrene Entwickler integrieren die beiden Frameworks daher häufig mit Hibernate.

jOOQs DSL ermöglicht die einfache und typsichere Programmierung von SQL-Abfragen. Dabei stehen sowohl die Features des SQL-Standards als auch verschiedene datenbankspezifische Funktionalitäten zur Verfügung. Der Mächtigkeit der eigenen Abfragen sind somit kaum Grenzen gesetzt. Flyway ist eines der verbreitetsten Frameworks zur versionsbasierten Migration von Datenbankschemata und ermöglicht die automatische oder manuelle Bestimmung und Ausführung aller erforderlichen Migrationsschritte.

Mit etwas Geschick lassen sich die drei Frameworks nahtlos miteinander integrieren, sodass für jede Aufgabe das optimale Werkzeug zur Verfügung steht. Wie dies genau funktioniert und worauf dabei zu achten ist, zeige ich in diesem Workshop.

Programm:

Zu Beginn des Workshops werden die optimalen Anwendungsszenarien und die Schwierigkeiten in der Verwendung von JPA und Hibernate kurz erläutert. Darauf aufbauend werden die Vorteile der Integration von Hibernate mit jOOQ und Flyway aufgezeigt.

Im Anschluss werden die Möglichkeiten zur versionsbasierten Datenbankmigration mit Flyway und dessen Integration mit Hibernate anhand eines Beispiels erarbeitet. Hierbei werden sowohl einfache, SQL-basierte Migrationen als auch komplexe, in Java implementierte Migrationsschritte eingesetzt.

In der zweiten Hälfte des Workshops wird jOOQ vorgestellt und gezeigt, wie es mit Hibernate und Flyway integriert werden kann. Dabei liegt das Hauptaugenmerk auf der Definition und Ausführung komplexer Abfragen im Kontext einer aktuellen Hibernate Session und der automatisierten Anpassung von jOOQs Metamodel an die mit Hilfe von Flyway ausgeführten Datenbankmigrationen.

Zielgruppe:

Anfänger, Fortgeschrittene

Thorben Janssen

Test Driven Developement in Java mit JUnit und Mockito

Die Schulung besteht aus einem Vortragsteil und einem Praxisteil. Im Vortrag wird die besondere Stellung von Unit-Tests im Softwareentwicklungsprozess sowohl aus technischer wie auch aus organisatorischer Sicht erläutert. Er zeigt auf, welchen Mehrwert Unit-Tests in der Softwareentwicklung erbringen, und warum dieser erst mit TDD als Arbeitsmethode voll wirksam wird. Es wird dargestellt, wie Unit-Tests und TDD die Qualität des Codes (im Sinne von "Clean Code" und der Einhaltung der SOLID-Prinzipien) beeinflussen (und umgekehrt) und wie Unit-Tests die Zusammenarbeit in Teams fördern.

Der Vortrag erklärt des Weiteren, welche Probleme bei der Erstellung von Unit-Tests auftreten können und wie TDD hilft, diese Fehler zu vermeiden. Er erläutert detailliert die drei Phasen des TDD-Zyklus.

Im Praxisteil wenden die Teilnehmer das Wissen aus dem Vortrag an. Sie erstellen in wechselnden Zweierteams im Pair Programming kleine Module einer Anwendung (Conways Game of Life). Dabei setzten sie JUnit, Mockito und Git ein. Sie üben, Testfälle aus den Anforderungen abzuleiten und die Testmethoden so zu schreiben, dass sie die getestete Anforderung dokumentieren.

Zielgruppe:

Anfänger

Thomas Papendieck OPITZ CONSULTING Deutschland GmbH

Cloud Perspective: Kubernetes is like an App Server, but more Cloudy

Enterprise software has moved on from the time when the app server was king, yet the concept of the app server still provides a useful framework for understanding how contemporary business software is developed, deployed, and maintained. This session uses the app-server-as-conceptual-framework to examine two popular technologies currently powering today's cloud native development: Kubernetes and Docker. The session will expose the students to a pre-assembled stack of currently popular cloud-ready deployment technologies suitable for building enterprise applications in Java. After attending this class, students will have introductory familiarity with a cross section of today's popular technologies for enterprise software development, with basic context into how each one is used and interacts with the other technologies in the suggested stack.

Participants will participate in a web survey a few weeks before the class to allow them the opportunity to fine tune the material to their individual needs and expectations.

The workshop introduces the new stack by contrasting it with the existing app-server centric approach. Justify the complexity in the new stack by emphasizing the benefits of horizontal scalability, agility and compatibility with current DevOps best practices. We show how the new stack can subsume the existing app-server centric stack and allow gradual migration away from it.

We present an overview of the new stack from the foundation OS layer, through Kubernetes and Docker, to the business layer running within Docker containers.

The workshop concludes with a brief exploration of some popular techniques enabled by this new stack, including, A/B Testing, Blue/Green deployments and Event Sourcing.

Zielgruppe:

Advanced

Ed Burns Orace Corporation
Oliver Szymanski Java User Group Erlangen-Nürnberg

Das Java Module System in Aktion

Die Zeit, das Java-9-Modulsystem (JPMS) nur aus der Ferne zu bewundern, ist vorüber und es wird Zeit, die Ärmel hochzukrempeln. Dieser Eintagesworkshop beginnt mit den Grundlagen:

  • Warum gibt es das JPMS überhaupt, welches Problem soll es lösen?
  • Was ist ein Modul und wie definiert man es?
  • Was bedeuten Readability and Accessibility und warum sind die Begriffe so wichtig?

… vermittelt fortgeschrittene Features:

  • Abbildung optionaler und transitiver Abhängigkeiten
  • Verwendung von Services, um Module zu entkoppeln
  • Wie man sicherstellt, dass Reflection weiterhin funktioniert
  • Erstellen von Runtime Images für bzw. inklusive Anwendungen

... und stellt sicher, dass du deine Anwendung auf Java 9 migrieren kannst:

  • Unterstützung in IDEs und Build Tools
  • Herausforderungen bei der Migration nach Java 9
  • Vorbereitende und ausführende Schritte für eine Migration
  • schrittweise Modularisierung einer bestehenden Code Basis

Jedes Thema wird mit einem Vortrag eingeführt und dann mit Übungen an einem Demoprojekt vertieft.

Zielgruppe:

Fortgeschrittene

Nicolai Parlog CodeFX
Christian Stein Micromata GmbH

Domain-Driven Design Hands On

In den Zeiten von Microservices wird klar, wie wichtig Domain-Driven-Design (DDD) nach wie vor ist. Denn nur mit strategischem Design (also DDD im Großen) und dem Aufteilen der Domäne in Bounded Contexts kann ein sinnvoller (nämlich fachlicher) Schnitt für die Microservices gefunden werden.

Aber auch taktisches Design (also DDD im Kleinen) mit der Ubiquitous Language und den "Building Blocks" Entities, Value Objects, Aggregates, Services und Co. haben nichts an Aktualität verloren.

In diesem Workshop nehmen wir uns einen Tag Zeit, um DDD näher anzuschauen. Der Workshop besteht abwechselnd aus Vortrag, Diskussion und Übungen.

Zielgruppe:

Fortgeschrittene, Experten

Henning Schwentner WPS – Workplace Solutions GmbH

Lasst uns einen Monolithen (z)erlegen!

Die Verwendung von Microservices hat sich als moderner, flexibler und skalierbarer Architekturstil etabliert. Was aber bei neuen Projekten einfach umzusetzen sein mag, ist für Legacy-Systeme eher Traum als Realität. Zu groß sind die Hürden, einen Monolithen überhaupt auf einen Stand zu bringen, auf dem es sinnvoll ist, über eine Zerlegung nachzudenken.

Der Workshop nimmt die Teilnehmer auf eine Reise, auf welcher eine reales, in Java implementiertes monolithisches E-Commerce-System getrieben durch geschäftliche Anforderungen schrittweise in eine Microservices-Struktur überführt wird. Dabei werden interaktiv typische Probleme aufgedeckt, Lösungsansätze sowie ihre Anwendbarkeit diskutiert und natürlich auch umgesetzt.

Zielgruppe:

Experten

Dirk Mahler buschmais GbR
Stephan Pirnbaum buschmais GbR

Microservices, diesmal aber richtig! - AUSGEBUCHT

Dieser Workshop bietet den Teilnehmern die Möglichkeit, das Bauen von Microservices mit Spring Boot und Docker zu erlernen. Im Wechsel zwischen fachlichen Präsentationen und praktischen Aufgaben werden wir eine verteilte Webanwendung entwickeln, die aus eigenständigen Microservices besteht. Für das Deployment werden die einzelnen Bestandteile in Docker-Container verpackt um die gesamte Webanwendung so mit Docker Compose als Einheit zu starten.

Insgesamt werden folgende Aspekte von Spring 5 behandelt:

  • Einführung in das Spring Framework (Überblick, Core, Spring Beans, Dependency Injection)
  • Spring-Boot-Grundlagen (Starter, Properties, Profiles)
  • Spring Data JPA (Repositories, Query DSL, Object Mapping, Entity Relationships)
  • Spring Data REST (Tools, HTTP Methods, Object Representation, Projections, Events)
  • Spring MVC (Controller, Request Mapping, Serialization, HATEOS)

Zur Abrundung der gesamten Anwendungsarchitektur werden wir zudem im Rahmen kleiner Demos die Themen Messaging, REST Docs, Testing und Template Engines passend einfließen lassen.

Zielgruppe:

Anfänger, Fortgeschrittene

Benjamin Nothdurft codecentric AG
Michael Follmann codecentric AG