Zum Inhalt springen

Javaland 2018 Schulungstag

15. März 2018

Alle Schulungen finden von 9 bis 17 Uhr statt.

Echtzeitempfehlungen selbstgemacht, Einfach mit Neo4j

Ein wichtiger Teil des modernen Onlinegeschäfts sind gute Empfehlungen. Sie stellen ein gutes Beispiel für die Flexibilität und Mächtigkeit einer Graphdatenbank dar. In diesem Workshop wollen wir ausprobieren, wie Schritt für Schritt mit Daten eines sozialen Netzwerkes eine Empfehlungsermittlung aufgebaut werden kann. Dazu werden wir mehrere Anforderungen an unsere Plattform auf der Basis von zielgerichteter Datenmodellierung und -abfragen für eine leistungsfähige Lösung schrittweise realisieren.

Agenda:

1. Einführung in Neo4j & Cypher

2. Datenmodellierung & Import

3. Empfehlungen für Tag, Veranstaltungen und Nutzer ermitteln

4. Empfehlungen personalisieren

5. Kombination mehrerer Gewichte für bessere Empfehlungen

6. Andere Ansätze und Algorithmen

7. Q & A  

Michael Hunger Network Engine for Objects in Lund AB

Hibernate Performance Tuning - AUSGEBUCHT

Die grundsätzliche Verwendung von Hibernate ist einfach und schnell zu erlernen. Bereits nach kürzester Zeit können die ersten Daten gespeichert und aus der Datenbank gelesen werden. Die Probleme beginnen immer erst dann, wenn komplexe Enterprise-Anwendungen erstellt werden sollen und kurze Antwortzeiten benötigt werden. In solchen Projekten wird häufig über die schlechte Performance von Hibernate geklagt. Der Grund dafür ist in den meisten Fällen jedoch nicht das Framework selbst, sondern dessen ineffiziente Verwendung. Hibernate kann problemlos für die Realisierung performancekritischer Enterprise-Anwendungen eingesetzt werden. Allerdings werden dafür einige fortgeschrittene Features und ein gutes Verständnis von JPA und Hibernate benötigt. Diese werden im Rahmen dieser Schulung anhand vieler praktischer Beispiele und Übungsaufgaben vermittelt.

Zu Beginn der Schulung werden typische Ursachen von Performanceproblemen vorgestellt und gezeigt, wie diese frühzeitig erkannt werden können. Darauf aufbauend werden verschiedene Konzepte zur Performanceoptimierung von lesenden Datenbankzugriffen erarbeitet. Dazu gehören:

  • die Optimierung von Abfragen,
  • die Auswahl und Verwendung der für den jeweiligen Anwendungsfall optimalen Fetching-Strategie und
  • der Einsatz verschiedener Caches zur Vermeidung redundanter Datenbankzugriffe.

Im Anschluss werden Optimierungsmöglichkeiten für schreibende Datenbankoperationen betrachtet, wie: - das Batching von Schreiboperationen und - die Verwendung von Bulkoperationen zur Optimierung von Schreibzugriffen.

Zielgruppe:

Softwareentwickler und -architekten mit praktischer Erfahrung mit JPA und Hibernate

Thorben Janssen

Functional Reactive mit Core Java und Vaadin - AUSGEBUCHT

Die Teilnehmer werden in die grundsätzlichen Aspekte der funktionalen und reaktiven Programmierung im Kontext von Vaadin Web-Anwendungen eingeführt. Das besondere bei diesem Framework ist das Core Java API, welches es für einen typischen Backend-Entwickler sehr attraktiv macht. Wir werden uns Entwurfsmuster und Techniken ansehen und uns dabei meistens im Core JDK bewegen. Ziel ist es, mit möglichst wenig Fremdbibliotheken und so einfach wie möglich eine Vaadin Web-Anwendung zu erstellen.

Die Teilnehmer werden selber an einer Anwendung arbeiten und können ihre Lösungen, wenn gewünscht, auch zur Diskussion stellen. Einzelne Aspekte werden schrittweise angegangen und zu einer Anwendung kombiniert. Somit können die Teilnehmer, wenn ein einzelner Teil nicht ganz fertig bearbeitet werden konnte, im nächsten Schritt wieder voll einsteigen. Alles wird Open Source zur Verfügung gestellt und in einem git Repo auch nach der Schulung weiterhin online bereitgestellt.

Zielgruppe:

Entwickler, die robuste Java-Kenntnisse haben und mit Java8 erste Erfahrungen gesammelt haben. Es sind keine Erfahrungen im Bereich von Webanwendungen notwendig. Core-Java-Kenntnisse reichen voll und ganz aus. Sie müssen vollen Zugriff auf Ihr Laptop haben, damit wir Servlet-Container starten können, Git verwenden und Maven einsetzen können. Wir werden mit Java8 und Java9 arbeiten, was voraussetzt, dass der Entwickler das JDK selber auf seinem Laptop wechseln kann.

Sven Ruppert Vaadin

Cloud Perspective: Kubernetes is like an app server, but more cloudy - AUSGEBUCHT

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 attendees to a pre-assembled stack of currently popular cloud-ready deployment technologies suitable for building enterprise applications in Java. After attending this class, attendees 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 morning session 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 morning session concludes with a brief exploration of some popular techniques enabled by this new stack, including, A/B Testing, Blue/Green deployments and Event Sourcing.

The afternoon session is a deep dive on Kubernetes from an App Server perspective, but this analogy only goes so far. Kubernetes does much more than what an app server ever was intended to do. Kubernetes is really an abstraction of the entire enterprise software runtime and deployment platform. It's datacenter as a service.

Zielgruppe:

Course Level: Intermediate

This class is targeted at Java programmers with experience in the Java web development technologies who are interested in deploying these skills using contemporary the cloud-ready technologies: GNU/Linux, Kubernetes, Docker, Jersey, ELK and others. Solid familiarity with the UNIX operating system is helpful.

Ed Burns
Oliver Szymanski Burns & Szymanski

Reactive Microservices mit Spring Boot 2.0 und Apache Cassandra - AUSGEBUCHT

In diesem Workshop werden wir zwei Reactive Microservices auf Basis von Spring Boot erstellen, die miteinander durch eine asynchrone, Event-getriebene API kommunizieren. Die Event-Daten speichern wir in einer Apache-Cassandra-Datenbank. Dabei lernen Sie Spring Boot kennen und worum es bei Reactive Programming geht, wo es helfen könnte, sowie coole Begriffe wie Back Pressure oder Bulkheading

Zielgruppe:

Dieser Kurs richtet sich an Entwickler/Programmierer. Grundlegende Java-Kenntnisse sind vorausgesetzt sowie Verständnis über Konzepte wie Dependency Injection oder REST. Kenntnisse über SQL sind hilfreich, jedoch kein Muss.

Mihai Dobrescu virtual7 GmbH

In Einzelteile zerlegt: Das Modulsystem Jigsaw in Java 9 - AUSGEBUCHT

Mit Java 9 kommt das lang angekündigte Modulsystem Jigsaw. Es ist eine grundlegende Strukturänderung von Java-Plattform und -Sprache, mit deren Auswirkungen man sich möglichst früh beschäftigen sollte. In diesem Tutorial erläutern wir die Grundlagen von Jigsaw und zeigen Motive und Ziele für die Einführung eines Modulsystems. Anhand von Code-Beispielen lernen die Teilnehmer, wie das Modulsystem aussieht und welche wichtigen Designentscheidungen getroffen wurden:

  • Warum braucht Java überhaupt ein Modulsystem?
  • Was will man erreichen?
  • Wie profitieren Entwickler davon?
  • Was ist ein Modul?
  • Wie definiere ich Module und Abhängigkeiten?
  • Welche Sichtbarkeiten gibt es zwischen Modulen?
  • Module sind sowohl Compiler-Erweiterung als auch Teil des Laufzeitsystems.
  • Wie wirkt sich das aus?
  • Wie vertragen sich Module mit generischen Ansätzen wie Reflection oder Callbacks, auf denen eine Reihe bekannter Frameworks basieren?
  • Welche anderen Konstrukte gibt es (Beispiel: Services)?
  • Wie sehen Tools aus?
  • IDE? Build/Dependency-Management?

Wir bieten diese Einführung als Tutorial in Form eines interaktiven Entwicklerworkshops an. Wir zeigen die Grundlagen mit Folien und führen interaktiv durch Beispiele und Code, u.a. zu Module-Info, requires, exports, uses/provides, Interface/Implementierung, Exceptions, Reflection, Module-API und -Finder usw. Alle Beispiele können die Teilnehmer selber auf ihrem Laptop mitmachen und somit alles lokal nachvollziehen. Sourcecode und SEU/Entwicklungsumgebung mit JDK, Eclipse stellen wir zur Verfügung.

Zielgruppe:

Java-Entwickler, -Architekten (nur Basiskenntnisse von Java als Programmiersprache und als Ökosystem wie Tools, IDEs, Build-System erforderlich)

Martin Lehmann Accso GmbH
Dr. Kristine Schaal Accso GmbH

Resilient Software Design mit Java - AUSGEBUCHT

Die Zeiten, in denen eine Anwendung aus einem einzelnen großen Artefakt besteht, scheinen vorbei zu sein. Im Zuge der verstärkten Containerisierung mit Docker & Co, wird es zunehmend beliebter, Anwendungen aus mehreren, möglichst unabhängigen Artefakten zusammenzustellen, die über Prozessgrenzen miteinander kommunizieren. Diese Architektur ermöglicht eine schnellere Weiterentwicklung und eine elastische Anpassung an wechselnde Lastanforderungen. Allerdings erhöht sich die Fehleranfälligkeit, wenn eine Vielzahl kleinerer Anwendungen eine gemeinsame Aufgabe erfüllen sollen. Beim Resilient Software Design versuchen wir daher nicht mehr, Fehler zu vermeiden, sondern nehmen sie stattdessen als unvermeidbaren Teil der Software hin. Wir konzentrieren unsere Entwicklungsbemühungen auf eine möglichst schnelle und automatisierte Fehlerbehebung, um das Gesamtsystem somit widerstandsfähiger gegenüber Fehlern zu machen. Der Kurs stellt die Grundkonzepte von Resilient Software Design vor und zeigt die praktische Umsetzung dieser Konzepte mit Techniken aus der Spring-Welt.

Zielgruppe:

Java-Grundkenntnisse sind zwingend erforderlich.

Grundkenntnisse in Spring sind hilfreich, aber keine Voraussetzung.

Thorsten Maier Orientation in Objects GmbH

Java & AWS – Microservices in der Cloud - AUSGEBUCHT

Microservices sind in aller Munde, das Netz und die Zeitschriften sind voll davon – aber wie baut man eine Microservice-Architektur eigentlich im „echten Leben“ am besten auf? Welche Infrastruktur, Tools und Java-Bibliotheken eignen sich hierfür? Und wie gelingt Automatisierung, damit der Service-Zoo wartbar bleibt? Der Unterschied zwischen Theorie und Praxis erweist sich in der Praxis meist als deutlich größer als in der Theorie. Deshalb werden wir gemeinsam einen Whisky-Shop bauen, der auf Spring Boot, Hystrix etc. setzt und mit Terraform in AWS deployt wird. Hierbei werden wir diverse Amazon Web Services wie EC2, RDS, Lambda und S3 benutzen. Unterwegs werden wir auf Fallstricke hinweisen, über die wir selbst in unseren Projekten schon gestolpert sind, und vorstellen, was sich für uns als Best Practices herausgestellt hat. 

Zielgruppe:

Kenntnisse in der Java-Entwicklung sind erforderlich, ebenso Neugier auf Cloud-basierte Softwareentwicklung.

Tobias Bayer inovex GmbH
Michael Bruns inovex GmbH