Montag - 2. November 2015
09:00 bis 17:00
Workshop

Workshop zu Lambdas und Streams in Java 8

german

+

Der Workshop widmet sich den wichtigsten Neuerungen von Java 8: Es geht einerseits um neue Sprachmittel (Lambda-Ausdrücke, Methoden-/Konstruktorreferenzen) und andererseits um die Erweiterungen des Collection-Frameworks des JDK (Streams, Collectoren, Functional Interfaces). Insbesondere das Stream API ist umfangreich, und seine effiziente Nutzung erfordert einen guten Überblick über das API und seine Möglichkeiten.

Angelika Langer, Klaus Kreft
Workshop

Java EE 7 – Enterprise-Anwendungen ohne Ballast

german

+

Im Gegensatz zu älteren Versionen ist die Entwicklung mit Java EE 7 trotz der Komplexität der Anwendungslandschaft einfach, teilweise sogar einfacher als im Standalone-Umfeld. Das wollen wir in diesem Workshop mit einem durchgängigen Beispiel zeigen. Wir setzen dabei natürlich auf JPA, BV, CDI, EJB und JSF, aber auch auf Wunsch der Teilnehmer auf weitere Teile der Plattform, z. B. Timer, asynchrone Verarbeitung, WebSocket, REST, Batch ... Ein besonderer Fokus liegt auf den neuen Features in Java EE 7, z. B. Konverter, Entity Graphs oder Faces Flows.Das Beispiel wird interaktiv entwickelt und steht den Teilnehmern als Git-Repository zum aktiven Mitmachen zur Verfügung. Benötigt wird nur ein Notebook mit Java 8, Maven, einer IDE mit Maven-Unterstützung und WildFly 8 oder GlassFish 4. Details zur Vorbereitung stehen ab Oktober auf https://github.com/dirkweil/javaee-workshop.

Dirk Weil
Workshop

Der Docker Basis Workshop

german

+

Das Thema Docker sorgt gerade für viel Aufsehen. Ob kleine Start-ups oder große Firmen -- schon aufregend viele Unternehmen setzen auf die Open-Source-Technologie Docker. Aber was hat es mit dieser Art von Containern auf sich, die den Virtualisierungsmarkt aufrollen und die Softwareentwicklung nachhaltig verändern wollen? Docker verspricht einen schnellen Start, flexible Konfiguration und stabile Images für Entwicklung und Produktion. In diesem Workshop wollen wir diesen Versprechen praktisch nachgehen.

Wir starten mit einem Überblick und stellen die ersten Schritte beim Einsatz von Docker vor. Die Teilnehmer lernen die wichtigsten Befehle, Anweisungen und Konzepte praktisch kennen. Anhand eines ausführlichen Beispiels zeigen wir, wie ein Microservice mit Java implementiert, mit Docker installiert und in einer Umgebung mit anderen Services integriert wird. Außerdem diskutieren wir das aktuelle Docker-Ökosystem und klären über Chancen und Risiken auf.

Dieser Workshop vermittelt die Docker-Grundlagen in nachvollziehbaren Schritten und versetzt die Teilnehmer in die Lage, anschließend selbst zu entscheiden, ob und wie Docker im eigenen Unternehmens- und IT-Kontext sinnvoll einsetzbar ist.

Peter Roßbach
Workshop

Concurrency in der Praxis

german

+

Java hat ein solides Memory Model und eine Vielzahl reifer und mächtiger Bibliotheken für Concurrency. Aber welcher Ansatz hilft am effektivsten, die jeweiligen Ziele zu erreichen, und wie setze ich ihn im konkreten Projekt ein? Wie bewertet man alternative Ansätze und Implementierungen?

Dieser Workshop vermittelt praktisches Handwerkszeug, um mit Concurrency in verschiedenen Situationen umzugehen. Das beginnt mit einer Analyse der Gründe für einen Einsatz von Concurrency - ist sie einfach durch ein Framework vorgegeben? Soll ein System schneller antworten? Soll der Durchsatz für einen bestimmten fachlichen Use Case optimiert werden?

Außerdem behandelt er eine Reihe von Grundmustern, denen man in nebenläufigen Systemen immer wieder begegnet: Locks, Lock-freie Algorithmen, Queues mit Worker Threads, seiteneffektfreie Programmierung etc. Wir werden in dem Workshop ihre jeweiligen Stärken und Schwächen beleuchten, die in verschiedenen Szenarien unterschiedlich zum Tragen kommen.

Schließlich geht der Workshop auf das große Feld des Testens von nebenläufigem Code ein, und zwar sowohl auf Korrektheit als auch auf Performance. Das Ganze wird durch eine Behandlung von Java Memory Model und moderner Hardware abgerundet.

Der Schwerpunkt liegt dabei durchgängig auf lauffähigem Quellcode und praktischen Übungen durch die Teilnehmer, die deshalb ein Notebook mitbringen sollten.

Arno Haase, Nico Feiertag
Workshop

Workshop: Einführung in JavaScript für Java-Entwickler

german

+

In diesem ganztägigen Workshop führe ich euch in alle für Java-Entwickler wesentlichen Spracheigenschaften von JavaScript ein. Wir werden die Themen Objekte, Arrays, Funktionen, prototypische Vererbung und Module besprechen. Wir werden uns auch die neuen Sprachfeatures der nächsten Sprachversion ECMAScript 2015 ansehen.

Oliver Zeigermann
09:45 bis 10:30
Session

Agile Verteilung: Geht nicht, gibt’s nicht!

german

+

Über die Vereinbarkeit von agilem Vorgehen und verteilten Teams wird kontrovers gestritten. In der Literatur findet man verschiedene Aussagen zu agiler Softwareentwicklung mit verteilten Teams: 

• Zum einen wird behauptet, agile verteilte Entwicklung sei nicht möglich, da dafür persönliche Kommunikation von Angesicht zu Angesicht nötig sei und die Teammitglieder an einem Tisch zusammensitzen müssten. 

• Zum anderen gibt es ganze Bücher, die sich mit verteilten agilen Teams beschäftigen und sagen, das geht.

Wir gehörten lange zur ersten Fraktion. Bis wir selbst gezwungen wurden, verteiltes agiles Entwickeln zwischen Hamburg und Dresden auszuprobieren. Die Erfahrung der letzten sechs Monate hat uns eines Besseren belehrt: Auch agile Teams können verteilt arbeiten. In  diesem Vortrag geben wir unsere Erfahrung weiter und zeigen ganz konkret:

• Wie man die einzelnen agilen Techniken für verteilte Entwicklung interpretieren kann. 

• Wie man die Rollen (Scrum Master, Product Owner) bei agiler verteilter Entwicklung einsetzen sollte. 

• Auf welche Aspekte man bei verteilter agiler Entwicklung besonders achten muss. 

• Welche technische Unterstützung man einsetzen muss, um agile Prinzipien bei Verteilung umzusetzen.

• Was für die Teams in Hamburg und Dresden funktioniert hat und was nicht.

 

 

Dr. Carola Lilienthal, Henning Schwentner
11:45 bis 12:30
Session

Agil wachsen

german

+

Die ersten Pflänzchen sind gepflanzt, das Team arbeitet mit einer agilen Projektmethode. Brauchen wir jetzt eine Erweiterung? Wenn ja, wie gehen wir am Schlausten vor? "Agile Skalierung" heißt das Zauberwort, aber ein Blick in die passenden Frameworks erschreckt euch eher; ganz schön viele neue und unbekannte Gremien und Prozesse. Was ist für euch jetzt wichtig? Was sind die nächsten sinnvollen Schritte für euch?

Die Referentin Judith Andresen zeigt einen praktischen Ansatz zur agilen Transition, bei der ihr iterationsweise agil skaliert. 

Judith Andresen
13:30 bis 14:15
Session

Train your brain - Google Style

german

+

Das wir selbst der wichtigste Faktor in der Software-Entwicklung sind, ist an sich eine triviale Erkenntnis: Unsere Fähigkeiten fokussiert zu arbeiten; kreative Lösungen zu finden; im Team zu lernen, wie wir ein gutes Produkt entwickeln und wie wir gut zusammenarbeiten, entscheidet über Erfolg und Spaß an der Arbeit. Wie man diese Fähigkeiten jedoch direkt und konkret entwickeln kann, darüber gibt es noch viel Diskussion.

Ein Ansatz dazu ist "Search Inside Yourself", eines der gefragtesten Fortbildungsprogramme innerhalb von Google, das jetzt öffentlich zugänglich ist: Es kombiniert Achtsamkeitstechniken mit Techniken zur Entwicklung emotionaler Intelligenz. Das Besondere: Das Alles ist kein Hokus-Pokus, sondern basiert auf neurowissenschaftlichen Erkenntnissen. Search Inside Yourself ist quasi ein wirksames Fitnesstraining für den Geist, das im Laufe der Zeit zu mehr Fokus, Motivation und Zufriedenheit führt.

Markus Wittwer ist zur Zeit in der Ausbildung zum Trainer für das Programm, stellt einige wesentliche Gedanken daraus vor und wird einige Übungen machen. Ihr Gehirn bekommt ein kleines Workout und Sie gehen (hoffentlich) erfrischt, mit einem Lächeln und Impulsen für eine Umsetzung im Alltag aus der Session heraus.

Markus Wittwer
14:15 bis 15:00
Session

Agile Coach zu werden ist nicht schwer...

german

+

...einer sein dagegen sehr. Aber daran sind wir selbst schuld. Wir wissen, wie es geht und tun das auch beständig kund. Manchmal hören wir auch zu, aber meistens geben wir Antworten. Dass die dann manchmal nicht zur Frage passen, liegt daran, dass die anderen oft einfach noch nicht so weit sind. Besonders Manager haben einen großen Nachholbedarf. Das kann man alles so sehen, muss es aber nicht.Dieser Vortrag ist eine Fundamentalkritik an agilem Coaching, an fehlenden Antworten und fehlenden Verständnis für Management. Der Vortrag möchte agile Coaches motivieren, Perspektiven zu wechseln und Wege zeigen, wie sie die fehlenden Antworten finden können.

Gerrit Beine
Dienstag - 3. November 2015
10:15 bis 11:15
Session

Optional<T> - Ein kontroverser Typ in Java 8

german

+

Mit Java 8 ist der neue Typ "java.util.Optional" zum JDK dazu gekommen.Er wird im JDK als Returntyp von Stream-Operationen genutzt.Erstaunlicherweise hat diese unscheinbare Klasse heftige und kontroverse Diskussion ausgelöst, als sie für Java 8 definiert wurde.Das liegt u.a. daran, dass es ähnliche Abstraktionen in anderen Sprachen gibt, z.B. "Option" in Scala.Dort gibt es den Ansatz, Option als "better null" zu verwenden.Kann man Optional in Java ähnlich wie Option in Scala benutzen? Dann hätte Optional das Potenzial, null und NullPointerExceptions in Java gänzlich überflüssig zu machen.Die Session erläutert die kontroversen Positionen und stellt den gesamten Funktionsumfang sowie die Nutzungsmöglichkeiten von Optional in Java vor inklusive Ausblick auf die zukünftige Bedeutung von Optional in Java-Versionen, die ValueTypes unterstützen werden.

Klaus Kreft
Session

Der Weg in die Moderne: Migration von 1st-Generation-Enterprise-Applikationen

german

+

Kaum ist eine Webanwendung zwischen fünf und zehn Jahre alt, schon gilt sie als generalüberholungsbedürftig. Ergonomie und Usability? Responsive? Barrierefreiheit? Moderne, testbare Entwicklung? Gute Integration in heutige Frameworks und Technologien? Fehlanzeige. Doch was macht man mit einer alten Struts-, JSF-1.x- oder MVC-Framework-XYZ-Anwendung? Migrieren? Einstellen und neu entwickeln? Und wohin danach? Diese Session widmet sich den Herausforderungen der Modernisierung bestehender Webanwendungen und zeigt die Vor- und Nachteile der Migration zum Standard (JSF, EE8 MVC) und zu Quasistandards (Wicket, GWT, Vaadin, ...) aber auch clientseitigen Frameworks (Angular, Backbone, ...) auf. Lässt sich damit ein weiteres Struts 1.x vermeiden?

Jens Schumann
Session

Effektive Code-Reviews

german

+

Software wird zunehmend komplexer, und gleichzeitig werden Releasezyklen immer kürzer. Effektive Code-Reviews sind notwendig, um in diesem Umfeld eine qualitätsgesicherte Nachverfolgbarkeit von Änderung über den gesamten Application Lifecycle zu ermöglichen. In der Session werden zunächst die technischen und organisatorischen Voraussetzungen für einen effektiveren Einsatz von Code-Reviews vorgestellt. Anschließend wird das Zusammenspiel verschiedener Tools zur nahtlosen Einbindung von Code-Reviews in den gesamten Entwicklungsprozess gezeigt.

 

Thorsten Maier
Session

Transactions? ACID, XA, BASE or what?

german

+

Nach dem „Microservices“-Vortrag der JAX 2015 Conference stellte ein Teilnehmer fest: „Jahre lang hast Du Transaktionen propagiert und jetzt braucht man die doch nicht?“ In dieser Session werde ich mit Grundlagen der Transaktionen im Hinblick auf Java-EE-Anwendungen diskutieren und den Einfluss auf Fachlichkeit, Architektur und Verteilung der Anwendungen diskutieren. Von lokalen Transaktionen über XA, ACID, Isolation Levels und BASE. Fragen der Teilnehmer werden sofort beantwortet.

Adam Bien
Session

MVC 1.0 – Das neue Webframework in Java EE 8

german

+

Der Begriff „MVC“ ist in aller Munde. Das zeigen auch die Ergebnisse des Java EE 8 Community Surveys. Über 60 Prpzent der Befragten gaben an, dass sie sich neben JSF auch ein MVC-Webframework in Java EE wünschen würden. Geleitet von diesem Wunsch wird in JSR 371 zurzeit am MVC-1.0-API für Java EE 8 gearbeitet. Doch es bleiben viele Fragen: Warum ein weiteres Webframework in Java EE? Woher stammt der Wunsch nach einer alternativen Technologie? Wie wird das MVC-1.0-API aussehen? Diese Session geht auf all diese Fragen ein und zeigt anhand konkreter Beispiele, wie mit MVC 1.0 leichtgewichtige und moderne Webanwendungen realisiert werden können.

Christian Kaltepoth
Session

Hystrix in Action – ein Weg zu robuster Software

german

+

Jede Software profitiert von mehr Robustheit, insbesondere wenn die Integration von externen Diensten eine Rolle spielt. Hierbei unterstützt Hystrix mit Implementierungen von bekannten Resilience-Patterns wie u. a. „Fail Fast“ und „Graceful degradation“. Anhand von Beispielen aus realen Projekten wird die Praxistauglichkeit bewiesen. Doch Hystrix hilft uns nicht nur im Notfall, wenn ein integrierter Dienst nicht mehr so zuverlässig antwortet wie erwartet, sondern auch zur genaueren Ursachenanalyse. Die wertvollen von Hystrix gesammelten Daten zusammen mit dem mächtigen ELK-Stack ergeben ein ideales Analysetool. Spätestens nach der Demo sollte das Bedürfnis für den sofortigen Einsatz geweckt sein. 

Gerrit Brehmer
Session

The new Job of QA - Was ein Quality Engineer zukünftig können muss

german

+

Die Entwicklung und der Betrieb von Software haben sich in den vergangenen Jahren deutlich verändert. Agile Vorgehensweisen, Test-Driven Development, Continuous Integration und DevOps sind erwachsen geworden und werden in immer mehr Unternehmen eingesetzt. Wie positioniert sich aber die Qualitätssicherung (QA) in diesem stark veränderten Umfeld?

Software-Craftsmanship sorgt dafür, dass Software-Entwickler und Architekten die Verantwortung für die technische Qualität ihrer Software übernehmen. Product Owner und Business Analysten behalten die fachliche Qualität im Auge. Fehler tun auch längst nicht mehr so weh, wenn Software-Änderungen mehrmals täglich live gehen können. Und bei Releases im Minutentakt kann sowieso nur noch automatisiert getestet werden. Was macht denn jetzt die QA? James Whittaker, Autor von “How Google Tests Software”, provozierte sein Auditorium schon 2011 mit der Aussage: Test is dead! Welche Rolle spielt QA dann zukünftig in der Produktentwicklung?

Ausgehend vom überkommenen Verständnis von Qualität und Qualitätssicherung zeigt der Vortrag auf, was es morgen heißen wird, Quality Assurance oder, weiter gefasst, Quality Engineering zu betreiben und was ein guter Quality Engineer zukünftig können muss. Die Arbeit in cross-funktionalen Teams erfordert zunehmend T-shaped Professionals, gleichzeitig sollte in einem Produkt-Team, das den gesamten Entwicklungszyklus betreut, eine Rolle existieren, die durchgehend Qualitätsaspekte im Auge behält und im Team vertritt.

Der Vortrag soll zu einer Diskussion darüber anregen, wie sich Quality Assurance zu einem ganzheitlichen Quality Engineering erweitern muss, um den veränderten externen als auch internen Rahmenbedingungen zu genügen. Dem Zuhörer wird ein mögliches, neues Bild von Quality Assurance und Quality Engineering als Fundament einer Qualitäts-getriebenen Organisation vorgestellt und ein Pfad für diese Veränderung aufgezeigt.

André Neubauer, Manfred Rätzmann
12:00 bis 13:00
Session

Java-Batch: Der Standard fürs Stapeln

german

+

Die Java-EE-Welt hat sich bislang um das Thema Batchverarbeitung gedrückt, was zur Entwicklung von Batchframeworks wie Spring Batch geführt hat. Die Hintergrundverarbeitung von (i. d. R.) Massendaten ist aber ein wichtiger Bestandteil vieler Enterprise-Anwendungen, dem der Einzug von „Batch Applications for the Java Platform“ (JSR 352) in den Standard Java EE 7 nun Rechnung trägt. Der Vortrag stellt die Grundzüge der Offlineverarbeitung mit Jobs, Steps, Chunks etc. dar und demonstriert einige Beispiele auf dem Java-EE-7-Server WildFly 8.

Dirk Weil
Session

Streams in Java 8: Reduce vs. Collect

german

+

In dem Stream API, das mit Java 8 zum JDK hinzugekommen ist, gibt es die beiden Operationen reduce() und collect(). reduce() ist im Gegensatz zu collect() eine klassische Reduktionsoperation aus der funktionalen Programmierung. Da es in funktionalen Sprachen typischerweise keinen veränderlichen Zustand gibt, funktioniert reduce() nur auf Typen mit unveränderlichem Zustand („immutable types“). In Java haben aber die meisten Typen einen veränderlichen Zustand (d. h. sie sind „mutable types“). Um eine Reduktion auch auf veränderlichen Typen zu unterstützen, gibt es die Operation collect(). In der Session wird erläutert, worin sich die beiden Operationen unterscheiden und wie die Funktionalität von collect() ggf. durch eigene Kollektoren erweitert werden kann. Für diese Session sind Grundkenntnisse in Java und Grundkenntnisse des Stream APIs empfehlenswert.

Klaus Kreft
Session

Java EE meets Microservices

german

+

Für die einen das Allheilmittel gegen die vielfältigen Probleme monolithischer Anwendungen, für die anderen lediglich „alter Wein in neuen Schläuchen“. Wohl kaum ein Architekturansatz polarisiert derzeit so extrem wie Microservices. Doch was steckt wirklich hinter dem „neuen“ Paradigma, welche Vor- und Nachteile bringt es mit sich und wie wird es in der Praxis bestmöglich umgesetzt? Der Workshop gibt einen Einblick in die Welt der Microservices im Zusammenspiel mit Java EE. Dabei steht nicht nur die reine Entwicklung im Fokus der Betrachtung, sondern auch Real-Life-Aspekte wie Deployment und Betrieb.

Lars Röwekamp
Session

Reactive Microservices mit Vert.x 3

german

+

Es hat sich mal wieder einiges getan in der Vert.x-Welt. Brachte der Wechsel von Version 1 auf 2 schon einiges an Neuerungen, wird das mittlerweile dritte Majorrelease die bestehenden Konzepte noch einmal deutlich erweitern. Einige Schmankerl sind dabei

  • verbesserte Unterstützung verschiedener Programmiersprachen
  • erweitertes Event Handling (Header, Custom Codecs, Local Consumers …)
  • neue HTTP-Infrastruktur 
  • neues Testframework
  • Integration der Reactive Extensions
  • Reactive Streams

Das Ganze werde ich anhand eines konkreten Beispiels erklären und zeigen, weshalb sich Vert.x 3 so gut zur Umsetzung des Microservice-Ansatzes eignet.

 

Jochen Mader
Session

Die Unbenutzbarkeit von Enterprise-Web-Anwendungen — Naturgesetz oder Vorsatz?

german

+

Seien wir doch mal ehrlich: Unternehmensanwendungen im Web werden meistens von wahren Backend-Entwicklern gebaut. Das schließt die Bedienoberflächen in der Regel mit ein. Benutzerfreundlichkeit und Ästhetik haben dabei im Gegensatz zur Produktentwicklung oftmals nur einen sehr geringen bis gar keinen Stellenwert. Wir behaupten: das muss nicht so sein. In diesem Vortrag geben wir praktische Empfehlungen und zeigen Herangehensweisen, mit denen Informatiker Bedienbarkeit und Nutzerakzeptanz von Weboberflächen wesentlich verbessern können.

Robert Glaser, Roman Stranghöner
Session

Lass die Affen testen - das Ende der Bananensoftware!

german

+

Testen macht derzeit ca. 20% der Kosten einer neuen Software aus, Tendenz steigen. Diese Kosten entstehen hauptsächlich durch manuelles Testen bzw. manuelle Testfallerstellung. Was wenn man automatisch Testen könnte? Und d.h. nicht manuell erstellte Tests (die will sowieso keiner erstellen und erst recht keiner pflegen) automatisch ablaufen lassen, sondern wirklich vollautomatisch Testen?

Wenn man sie pflegen muss hat man zuviele Assertions, wenn ein Fehler durchschlüpft zuwenige. Regressionstesten ist eigentlich nur Änderungskontrolle. Warum nicht gleich ein "behavioral diff" erstellen - 100% Assertions, 0% Pflegeaufwand? Und mittels Monkey-Testing kann man dafür die Tests sogar generieren. Monkey-Testing bezeichnet zufallsbasiertes Testen von Software über die Benutzeroberfläche, und findet vollautomatisch und kostengünstig Fehler bzw. zeichnet das Programmverhalten auf. Durch die Kombination mit "behavioral diff" und wenn man diesen Affen etwas trainiert, kann man seinen Testaufwand halbieren und die Ergebnisse verdoppeln!

Jeremias Rößler
15:00 bis 16:00
Session

Reactive Microservices with Akka and CoreOS

english

+

Akka is a fantastic toolkit for building elastic and resilient distributed systems and CoreOS provides a great platform for actually running such a system. In this talk we will give a quick overview of Akka and CoreOS and then show how you can use these innovative technologies in concert. Don’t expect a lot of slides, but be prepared for live coding and live demos.

Heiko Seeberger
Session

Apache Spark - die neue Art der Datenanalyse und Verarbeitung

german

+

Apache Spark ist ein Framework für cluster-basierte Datenanalyze und -Verarbeitung, welches sich als Alternative zum klassischen Hadoop MapReduce positioniert hat. Spark hat im letzten Jahr viel Aufmerksamkeit bekommen und enthält viele interessante Konzepte, die das effiziente Verarbeiten von Daten (nicht nur Big Data), ermöglicht. Spark unterstützt dabei insbesondere auch das explorative Arbeiten auf Daten und kann daher sowohl vom Entwickler wie auch vom Data Scientist eingesetzt werden.

Diese Session bietet einen Einstieg in Apache Spark und zeigt die Unterschiede zu Apache Hadoop auf. Daneben wird aber auch auf das Hadoop Ecosystem eingegangen, welches das Spark Kernsystem ergänzt und auf diesem aufbaut und Spark um Machine Learning, Graphenverarbeitung, SQL Zugriff sowie Stream-Processing ergänzt.

Guido Schmutz
Session

Flux - Facebooks Beitrag zur UI-Architektur der Zukunft

german

+

Facebook, Yahoo! und einige andere Schwergewichte beschreiten neue Wege im Aufbau von Webapplikationen. Aus der Not immer komplexerer Anwendungen entwickelte sich ein neuer Architekturstil, der verspricht, Ordnung ins sonst so übliche Frontend-Chaos zu bringen: Flux. Aufbauend auf den Ideen von Facebooks React-Framework, etabliert Flux einen einseitig gerichteten Datenfluss. Damit werden selbst komplexe Abhängigkeitsnetze zwischen Webkomponenten handhabbar, allerdings wird auch mit dem sonst so unumstrittenen Model-View-Controller-Ansatz gebrochen und an vielen Stellen mit bekannten Anti-Patterns gearbeitet.Ist es an der Zeit, diesem Beispiel zu folgen und einige Anti-Patterns zu Best-Practices zu erklären? Diese Session hilft Ihnen bei der individuellen Beantwortung dieser Frage. Wir führen in die beteiligten Konzepte und Frameworks ein, zeigen, in welchen Umfeldern Flux-basierte Architekturen hilfreich sind, und arbeiten Kompromisse heraus, die Sie bei der Adoption eingehen müssen.

Oliver Zeigermann, Stefan Toth
Session

Enterprise Scripting mit Nashorn: Tipps & Tricks live on Stage

german

+

Nashorn kommt mit Java 8 und ist eine ziemlich gute und schnelle Implementierung der JavaScript Engine (ECMAScript-262 Edition 5.1) mit einigen ES6-Features. In dieser Session werde ich einige Ideen präsentieren, wie man deutlich Zeit, Code und Abhängigkeiten mit Nashorn sparen kann. Dabei werde ich beide Richtungen (JavaScript -> Java und Java -> JavaScript) diskutieren. Der Schwerpunkt liegt dabei auf serverseitigen Java-EE-Anwendungen auf Java 8, aber auch Automatisierung wie z. B. CI / CD und Docker. Aus Zeitgründen werde ich auf Slides verzichten, dafür auf Fragen der Teilnehmer eingehen.

Adam Bien
Session

Warum macht der Garbage Collector Stop-the-World-Pausen ?

german

+

Früher hat man sich Gedanken darüber machen müssen, wie stark der Garbage Collector den Durchsatz der Applikation belastet, d.h. wie viel Prozent der Gesamtablaufzeit einer Applikation für Garbage Collection "verschwendet" wird.  Dieses Problem hat sich auf 64-Bit-Systemen von allein erledigt: Heute arbeitet man mit großen Heaps und kämpft nun mit dem Problem, dass große Heaps bei den traditionellen Garbage Collectors zu langen GC-Pausen führen.

Die Session erläutert, warum das so ist, wie die klassischen GC-Algorithmen (Serial/Parallel Old und CMS) funktionieren und wie jüngere Garbage Collectors (G1) arbeiten. Außerdem sehen wir uns an, welche Alternativen es gibt (Shenandoah, Azul C4 und JRockit).

Angelika Langer
16:45 bis 17:45
Session

Event Sourcing in der Praxis

german

+

Object-Relational Mapping (ORM) ist der unangefochtene Standard, um Domain-Objekte zu persistieren. Sobald das Domainmodell jedoch an Komplexität zunimmt und Objektgraphen mit Strategies oder Composite Pattern in der Datenbank persistiert werden sollen, knarzt und knackt ORM an allen Ecken. Ein anämisches Domänenmodell, in dem sich die Geschäftslogik außerhalb des Domänenmodells befindet, ist häufig die Folge.

 

Es geht aber auch anders! Event Sourcing eignet sich sehr gut zum Speichern und Wiederherstellen von komplexen Objektgraphen auf Grundlage einer beliebigen Datenbank. Es hat viele Vorteile wie lückenlose Nachvollziehbarkeit, einfaches Debugging der Nutzeraktionen, eine einfache Undo-Funktion, gute Performance und Skalierbarkeit – um nur einige zu nennen.

 

 

Wie jedes Pattern hat Event Sourcing aber auch Nachteile. Johannes Seitz zeigt mögliche Probleme, die der Einsatz mit sich bringen kann und zeigt gängige Lösungsvorschläge auf. 

Johannes Seitz
Session

API-Design mit Lambdas

german

+

Neue Sprachmittel ermöglichen neue Programmiertechniken. In Java 8 sind Lambda-Ausdrücke als neue Sprachmittel zu Java hinzu gekommen. Es ist relativ einfach, Lambda-Ausdrücke zu verwenden, beipielsweise um sie an Operationen aus neuen Schnittstellen wie z.B. Streams oder CompletableFuture zu übergeben. Die Syntax ist schnell gelernt und die Benutzung ist bequem und übersichtlich.

Ehrgeiziger als die einfache Benutzung ist hingegen das Design von Schnittstellen für und mit Lambdas. Es eröffnen sich neue Idiome und Designtechniken. Wie definiert man ein Lambda-fähiges API? Was kann man mit Lambdas anders oder besser ausdrücken als früher ohne Lambdas? Worauf muss man beim API-Design achten? Wo sind die Limitationen?

Für diese Session sind Vorkenntnisse erforderlich.

Angelika Langer
Session

Integration Testing from the Trenches

english

+

Years after Kent Beck provided JUnit, unit testing is part of most developer teams tooling. However, there's a trend that tends to threaten unit testing, claiming only integration testing can truly detects defects in software. In this talk, we will first define what unit testing and integration testing are, and their respective pros, cons and uses. Then, we will have a look at the unique challenges posed by integration testing. Finally, tools and techniques will be presented to somewhat remedy to that so that integration testing becomes a true asset in each software developer bag of tricks.

Nicolas Fränkel
Session

Reaktive Geschäftsanwendungen

german

+

Asynchrone Verarbeitung, reaktive Architektur, Eventual Consistency – moderne Ansätze versprechen Skalierbarkeit und Robustheit, Geschäftsanwendungen dagegen werden oft komplett synchron, in Schichtenarchitektur und voll transaktional gebaut. Und dafür gibt es ja auch gute Gründe. Diese Session schlägt die Brücke zwischen modernen Konzepten und „klassischen“ Anforderungen. Sie zeigt, wo Geschäftsanwendungen von Asynchronität profitieren können und gibt praktische Hilfestellungen.

Arno Haase
18:00 bis 19:00
Session

MVC (JSR 371) - Ein neues Webframework für Java EE

german

+

Der vielleicht am kontroversesten diskutierte JSR für Java EE 8 trägt den Namen "MVC". Dabei handelt es sich um ein Action-basiertes Webframework, das als Alternative (und nicht etwa als Ersatz) zum komponentenbasierten JSF dienen soll. In dieser Session werfen wir einen Blick auf den aktuellen Stand der Spezifikation von MVC und auch auf das bereits existierende Referenzimplementierung. Beides erlaubt einen guten Eindruck davon, wie MVC voraussichtlich aussehen wird. Zudem diskutieren wir gemeinsam, ob Java EE ein zusätzliches Webframework überhaupt benötigt.

Thilo Frotscher
Session

REST 2015

german

+

REST-konforme Anwendungen sind »state of the art«. Allerdings wird der zentrale »Hypermedia as the engine of application state«-Aspekt zur Zeit noch als die neue Entdeckung schlechthin gehandelt, auch wenn er das eigentlich gar nicht ist. Oft stellt sich dann die Fragen: Wie baut man denn nun solche „Hypermedia-Services“? Was muss ich dazu wissen? In dieser Session werden diese Fragen beantwortet und außerdem gezeigt was man im Jahr 2015 sonst noch rund ums Thema REST wissen sollte. Dazu gehören neben HTTP/2, OAuth2 und OpenID Connect auch Themen wie Dokumentation, Versionierung sowie Resource-oriented Client Architecture (ROCA).

Silvia Schreier
Mittwoch - 4. November 2015
09:00 bis 10:00
Session

BPM in der Praxis – Eine Klassifizierung von Prozesstypen und Umsetzungsmustern in der Finanzindustrie

german

+

Prozessdigitalisierung ist in der Finanzindustrie eine Kernkompetenz. Einerseits, weil Finanzdienstleistungen per se informationszentriert sind, andererseits weil der starke Wettbewerb in der Branche hocheffiziente Prozesse unabdingbar macht. In diesem Kontext gibt es eine Vielzahl unterschiedlicher Muster um eine manuelle Sachbearbeitung unterstützen oder die Prozessverarbeitung zu automatisieren (bspw. Case Management, Service-Orchestrierung und Batch-Verarbeitung). In diesem Beitrag werden zunächst typische fachliche Anforderungen an Prozesse beschrieben. Darauf aufbauend werden unterschiedliche Prozessklassen beschrieben, die typischerweise jeweils mit anderen IT-Werkzeugen und –Mustern umgesetzt werden, sowie die in der Praxis anzutreffenden Muster-spezifischen Herausforderungen.

Dr. Jörg Ziemann
Session

Live-Coding: JavaScript-Sprachgrundlagen für Java-Entwickler (Remastered 2015)

german

+

JavaScript ist eine schlechte Sprache? Man kann keine Klassen und Vererbung ausdrücken? Es gibt kein Modulsystem und einen Sichtbarkeitsbereich zu erzeugen, erfordert einen Doktortitel? Die einzige Datenstruktur ist ein Array und Objekte müssen als Maps für Arme herhalten? In dieser interaktiven Live-Coding-Session werden wir uns die neuen Features der aktuellsten JavaScript-Sprachversion ECMAScript 2015 ansehen und diese Fragen neu beantworten.

Oliver Zeigermann
Session

Auf Wolke sieben: Architektur und Deployment von Microservices für die Cloud

german

+

Die Gründe, ein eigenes RZ zu betreiben, schwinden rasant. Die Cloud lockt mit einer niedrigen Einstiegshürde und voller Flexibilität. Infastruktur lässt sich nun in wenigen Augenblicken und ohne Vorauszahlung, automatisiert per API-Call bereitstellen und wieder abschalten. Aber was bedeutet das für unsere Anwendungen und ihre Architektur? Kann man sie einfach unverändert in die Cloud deployen?

Alles hat seinen Preis. Um das Potenzial der Cloud zu nutzen, müssen neue Herausforderungen überwunden werden: von Datensicherheit bis zu kostenbasierter Architektur, über dynamische Provisionierung, Service Discovery und effiziente Deploymentmodelle.

Dieser Talk bietet Architekten und Entwicklern klare Anworten und praxiserprobte Lösungen für einen erfolgreichen Weg zum Infrastrukturhimmel. 

Axel Fontaine
Session

Modernes Java-Komponentendesign mit Spring 4.2

german

+

Dieser Vortrag stellt ausgewählte Features des Spring-Komponentenmodells vor, mit einem Schwerpunkt auf die Verfeinerungen in Spring Framework 4.1 und 4.2. Die Themen reichen vom umfassenden Support für Java 8 bis hin zu Annotation-basiertem Messaging, Caching und Event-Handling, illustriert mit Codebeispielen und vielen Erläuterungen zur Designphilosophie in Spring.

Jürgen Höller
Session

Die dunkle Seite der Microservices - 'und wie du besiegen sie kannst'

german

+

Microservices bringen bekanntermaßen eine ganze Reihe von Vorteilen (Skalierbarkeit, Ausfallsicherheit, Sprach- und Technologieunabhängigkeit, erhöhte Flexibilität ...) mit sich — durch den verteilten Architekturansatz aber auch einige Herausforderungen (Monitoring, verteilte Transaktionen, schwierigere Testbarkeit, Service Discovery ...).

In diesem Vortrag greifen wir die beiden Punkte „schwierigere Testbarkeit“ und „Service Discovery“ auf und zeigen mit Pact (Consumer-driven Contract Tests) und Eureka (Service Discovery) Lösungsmöglichkeiten hierzu. Abgerundet wird der Talk durch die praktische Vorführung einer Deployment-Pipeline, die das Testen mit Pact veranschaulicht.

Hendrik Still, Tobias Bayer
Session

Module Platform Evolvement - The Rise of Jigsaw in JDK 9

german

+

Mit dem JDK 8 steht ein ausgereiftes Java-Release mit Lambda-Ausdrücken für funktionale Programmierung, der JavaScript-Engine Nashorn für die JS-JVM-Interoperabilität und Verbesserungen in der Java-Sprache zur Verfügung, da zeigen sich bereits die Konturen der neuen Plattformmodularisierung mit dem für das JDK 9 vorgesehenen Projekt Jigsaw. Die geplanten Veränderungen werfen ihre Schatten voraus und lassen es zu, mit dem JDK 9 die gewünschte technische Paketierung von ausgewählter Java-Funktionalität selbst zu bestimmen. Das Projekt Jigsaw hat die primäre Aufgabe, das Design und die Implementierung eines Standardmodulsystems für die Java-Plattform und für das JDK 9 bereitzustellen. Dabei soll die durchgängige, dynamische und einfache Anpassbarkeit der Java-SE-Plattform und dem JDK auch für kleine Endgeräte berücksichtigt werden sowie die Verbesserung von Sicherheit und Wartbarkeit von Java-SE-Plattform-Implementierungen, speziell vom JDK, verwirklicht werden.

Wolfgang Weigend
10:45 bis 11:45
Session

Angular 2.0 – Migrationspfade von 1.x zu 2.0

german

+

Als Framework für das Web der Zukunft wird das komplett neu entwickelte AngularJS 2.0 mit einigen Konzepten seines Vorgängers brechen. Jetzt stellt sich natürlich die Frage, wie wir uns heute in AngularJS-1.x-Projekten darauf vorbereiten können, um nach Erscheinen von 2.0 eine Migration zu begünstigen. Diese Session informiert darüber und geht auch auf einen Side-by-Side-Betrieb der beiden Versionen, der dank des neuen Routers möglich wird, ein.

Manfred Steyer
Session

arc42 Reality Check

german

+

Seit über zehn Jahren gibt es arc42, die pragmatische Vorlage/Arbeitshilfe für Architekturdokumentation. Im Vortrag stelle ich diverse Optionen für den Praxiseinsatzvon arc42 vor - von Werkzeugen bis hin zur Organisation von Dokumentation im Projekt. Anhand von Beispielen zeige ich auf, wie Architektur- und Codedokumentation zusammenspielen und wie wir eine pragmatische und nützliche (technische) Projektdokumentation aufsetzen können. Insbesondere sehen Sie textbasierte (AsciiDoc-)Dokumentation im Zusammenspiel mit Modellierungswerkzeugen wie Enterprise Architect und Visual Paradigm im Einsatz - und wie das zusammen mit Git auch entwicklerfreundlich funktioniert. Gerne dürfen Sie mir (dem Sprecher) im Vorfeld Ihre konkreten Fragen zu Architekturdokumentation und arc42 zukommen lassen. Im Vortrag werde ich möglichst viele davon beantworten.

Gernot Starke
Session

Was jeder Java-Entwickler über Strings wissen sollte

german

+

Strings sind wahrscheinlich der am meisten verwendete Datentyp in jeder Java-Anwendung. Es ist daher nicht überraschend, dass JDK-Ingenieure versuchen, Strings möglichst gut zu optimieren oder Bücher über Performanztuning und Testen dem Thema Strings ganze Kapitel widmen. Jeder Entwickler sollte daher wissen, was Strings sind und wie sie sinnvoll und effizient eingesetzt werden können. Dieser Vortrag stellt JDK-Klassen vor, die mit und auf Strings arbeiten, sowohl auf der API- aber auch auf der Implementierungsebene. Wir beleuchten interne Strings und die, für sie verwendeten Speicherbereiche, sowie die noch recht unbekannte „String-Deduplication“-Option des G1 Garbage Collectors.

Bernd Müller
Session

Microservices mit Spring Boot und Spring Cloud

german

+

Microservices stellen Entwickler vor neue Herausforderungen. Der Spring-Stack hält zwei Lösungen bereit: Spring Boot zur Implementierung des Microservice und Spring Cloud für den Aufbau der notwendigen Infrastruktur. Dieser Vortrag zeigt, wie die beiden Technologien praktisch funktionieren und Microservices-Architekturen mit diesem Ansatz implementiert werden können.

Eberhard Wolff
Session

Microservices - hilfreich auch im Enterprise-Kontext?

german

+

Microservices haben sich auf Konferenzen etabliert, aber wie sieht es mit klassischen Enterprise-Unternehmen aus? Hier gibt es viele Legacy-Systeme, SOAs und ESBs und allgemein heterogene Systemlandschaften. Selbstentwickelte Monolithen, kleine Services und Standardsoftware fristen da parallel ihr Dasein. Wie passen Microservices da hinein?

In diesem Vortrag zeigen wir an einem Fallbeispiel mit einer konkreten gewachsenen Systemlandschaft, wie man vom Konzept Microservices profitieren kann, welche Veränderungen hilfreich und welche notwendig sind, wie das Idealbild aussieht und wie weit man davon abweichen kann, ohne dass der Effekt ins Negative umschlägt. Dabei wird auch Thema sein, in welchem Verhältnis Microservices zu SOA und Integrationsarchitekturen (ESB und Co.) stehen.

Dennis Schulte, Tobias Flohre
Session

Open-Source-Workflows, Business Rules und Case Management in Action – mit Camunda BPM

german

+

„Wenn ihr #*?-Entwickler das nicht schneller und billiger hinbekommt, dann kaufen wir einfach eine teure BPM-Suite, die all unsere Probleme löst!“ – und dann wundert man sich über gescheiterte Projekte. Dabei geht es doch auch anders: Mit entwicklerfreundlichen Open-Source-BPM-Plattformen wie Camunda bekommt man eine Workflow Engine basierend auf dem BPMN-2.0-Standard, Business-Rule-Unterstützung basierend auf dem brandneuen DMN-Standard sowie Case Management mit CMMN. All dies kann eingebettet als Library verwendet werden, aber auch in riesige Szenarien skalieren – natürlich auch in SOA oder Microservice-Architekturen. Grafische aber eben auch ausführbare Notationen helfen dann sowohl bei der Entwicklung als auch im Betrieb. Der Vortrag gibt eine Hands-on-Einführung in die Standards anhand eines realen, fachlichen Beispiels und zeigt die Umsetzung auf Camunda BPM – natürlich inklusive Live Coding. Außerdem berichten wir von zahlreichen Erfahrungen aus unseren Projekten. 

Bernd Rücker
12:00 bis 13:00
Session

Continuous Delivery in the Cloud

english

+

Platforms like Amazon EC2 are most useful if you apply automation everywhere, from configuration management over CI up to deployment. This session will shed some light on best practices and patterns that proved useful. We will look at how DevOps is easier in a highly automated environment and learn to think about servers as disposable. We will create pipelines that assemble source, CI tools, configurmation management and stage-based deployment and introduce the concept of limiting blast radius.

Jonathan Weiss
Session

What’s new in Spring Data?

german

+

In diesem Vortrag geben wir einen Überblick über die Neuerungen aus dem aktuellen Release der Spring-Data-Projekte. Nach einer kurzen Einführung in die Features von Spring Data stellen wir die wichtigsten Neuerungen in Allgemeinen und den Datastore-spezifischen Modulen wie z. B. JPA, MongoDB, Redis, REST sowie der Communitymodule wie z. B. Elasticsearch vor.

Christoph Strobl
Session

Erfahrungsaustausch – Wo ist ACM heute?

german

+

Business Process Management (BPM) ermöglicht Effizienzsteigerung – ein viel zitierter und oft genannter Ausspruch. Aber schafft die reine Modellierung eines oder mehrerer Geschäftsprozesse tatsächliche Mehrwerte? Lassen sich praxisrelevante und geschäftskritische Probleme immer in einem rigiden Prozessmodell formulieren? Ist es wirklich möglich alle Abläufe in standardisierte und automatisierte Prozessketten zu gießen? Demgegenüber stehen neue Ansätze, welche mit dynamischen Prozessen oder Adaptive Case Management (ACM) die Flexibilität und die beteiligten Personen in den Fokus stellen. Beide „Welten“ werden durch entsprechende Standards unterstützt. Was BPMN für rigide Prozessmodelle darstellt, ist der noch recht junge CMMN-Standard für Case Management.

Anhand eines durchgängigen Beispiels aus der Praxis wird in dieser Session gezeigt, wie strukturierte und dynamische Prozesse sowohl auf der Oracle BPM Suite als auch auf der camunda BPM-Plattform realisiert werden können. Sie erfahren mit welchen Fragestellungen bei einer ACM-Implementierung zu rechnen ist und welche Elemente z.B. ein passender Benutzerdialog benötigt. Wir diskutieren, wie sich die beiden Ansätze (traditionelles BPM und ACM) optimal ergänzen können und werfen einen Blick auf weiterführende Szenarien, die sich daraus eröffnen.

Danilo Schmiedel, Torsten Winterberg
Session

Java 8 - Understanding Functional Interfaces and Writing Mixins

english

+

Java 8 was launched in March 2014 with great fanfare. The new lambda syntax allows us to have a more succinct coding style and get rid of a lot of boilerplate code. However, there is also confusion. Even the "State of the Lambdas" paper starts by comparing lambdas to ActionListener. Even though that is indeed a functional interface, its related listeners such as MouseListener are not. In this talk, Heinz will show a number of interfaces and let the audience decide whether or not it qualifies as a functional interface. We finish the talk with a short demo of how we can write mixins in Java, by combining functional interfaces with default methods.

Dr. Heinz Kabutz
Session

Mit React UI-Komponenten für das Web entwickeln

german

+

React ist ein JavaScript Framework, mit dem sich auf einfache Weise wiederverwendbare UI-Komponenten für das Web entwickeln lassen. Ursprünglich von Facebook entwickelt und verwendet, steht es mittlerweile auch als Open-Source-Projekt zur Verfügung und erfreut sich zunehmender Beliebtheit.

In diesem Talk stelle ich Ihnen die grundsätzlichen Konzepte von React vor und zeige Ihnen, inwieweit sich React von anderen Frameworks wie z.B. AngularJS unterscheidet. Anhand von Codebeispielen sehen Sie, wie Sie mit React Komponenten entwickeln können, die sich sowohl auf dem Client- als auch auf dem Server rendern lassen. Dabei werden wir uns auch ansehen, wie Sie bereits heute die neuste JavaScript-Version (ECMAScript 2015) zusammen mit React einsetzen können.

Nils Hartmann
Session

Integration von Microservices – REST vs. Messaging

german

+

Der Trend zu Microservices stellt Entwickler vor neue Herausforderungen. Systeme, die an fachlichen Kontexten orientiert sind, müssen sich gegenseitig über Ereignisse benachrichtigen und auf sie reagieren. Ebenso muss das Austauschen und Synchronisieren von Datenbeständen umgesetzt werden. Die Wahl eines Kommunikationsmechanismus ist dabei fundamental. Sie beeinflusst die gesamte Architektur und ist nur schwer nachträglich änderbar. Der Vortrag stellt die Herausforderung bei der Integration dar und Konsequenzen und Effekte des Einsatzes von REST und Messaging gegenüber.

Eberhard Wolff, Oliver Gierke
15:15 bis 16:15
Session

Fair Trade – Alles andere als kalter Kaffee

german

+

Wie schütze ich meine Java-App vor unerwünschten Manipulationen, Reverse Engineering und Dekompilierung? Diese Frage stellen sich mittlerweile viele Java-Entwickler. „Write once, run anywhere“ bietet Vor- und Nachteile. Kennen Sie JD-GUI, JAD oder andere Java Decompiler? Erfahren Sie, wie Sie diesen Tools die Stirn bieten und gleichzeitig attraktive Lizenzmodelle für die Vermarktung Ihrer Anwendung erschließen können. Kurz gesagt: Fair Trade für Java.

Günther Fischer
Session

The Secrets of Concurrency

english

+

From the first version of Java, we have been able to create multiple threads. Initially, this was mostly used for making our GUIs more responsive. For example, we would read a file using a separate thread from the main AWT thread, updating the GUI as to the progress. Running many active threads on one CPU seldom made the program faster, on the contrary, the swapping overhead frequently bogged down the machine.

However, in the last few years, the speed increase of CPUs has not been the clock speed, but the number of cores on each chip. We are in a position now where we can get a job done much faster by splitting it between multiple threads. Unfortunately there is still a lack of understanding of the mysteries surrounding threading. This has caused programmers to write code that is fundamentally incorrect, not taking into account best practices for threading.

Here is an example of such incorrect code, seen recently on a web forum:

    synchronized (namedQueues) {

      try {

        namedQueues.wait(5000);

      } catch (InterruptedException ie) {

        // Can safely ignore this

      }

    }

    if (isInterrupted() || isStopped())

      break;

In this talk, we look at ten laws that can help us to write more correct threaded code. We will now briefly summarise these ten laws:

1. The Law of the Sabotaged Doorbell

    We show how to manage the InterruptedException. Since they are thrown by several methods in Java 5, this is useful to know.

 2. The Law of the Xerox Copier

    Concurrency faults can sometimes be avoided by making copies of important objects, instead of allowing mutability.

 3. The Law of the Overstocked Haberdashery

    Threads use up resources, even if they are not active, putting an upper limit on the number of threads in our system.  Also, when analysing threading problems, we should know what every thread is doing. If we gloss over one thread without understanding it, we can easily miss a problem.

 4. The Law of the Blind Spot

    Fields can be cached locally by threads to improve the performance of retrieving their value. Thus, if one thread modifies a field, the other threads might not see the updated value.

 5. The Law of the Leaked Memo

    The Java Memory Model allows the hotspot compiler to reorder statements, as long as the final result is still correct. This can lead to some results which seem logically impossible.

 6. The Law of the Corrupt Politician

    Data races can cause the best objects to become corrupt. They can be really difficult to detect and analyse. In this law, we look at how we can avoid these problems.

 7. The Law of the Micromanager

    Adding synchronization to our code can cause problems with contention, where threads are waiting for each other to execute a critical section.

 8. The Law of Cretan Driving

    The rules of the road for Java threading are quite strict, but not enforced by all of the Java Virtual Machines. Even though your code seems correct, it might still be wrong.

 9. The Law of Sudden Riches

    Sometimes a system has latent defects that are only seen every few months. When running the system on faster hardware, these defects are amplified and can happen more frequently.

10. The Law of the Uneaten Lutefisk

    It is often possible to detect deadlocks in Java, but unfortunately it is impossible to recover cleanly. The only option is to analyse the problem that caused it and then restart the JVM.

What you will get out of the talk: You will learn several tips that will help you in writing correct threaded code in Java.

 

Presentation Summary:

The talk starts with a quick introduction into threading, explaining why it has become so important of late. It then presents ten laws that we can use to write more correct threaded code in Java

Some of the ten laws have already been described in our newsletter. Here they are again:

The Law of the Sabotaged Doorbell

http://www.javaspecialists.eu/archive/Issue146.html

The Law of the Xerox Copier

http://www.javaspecialists.eu/archive/Issue176.html

The Law of the Overstocked Haberdashery

http://www.javaspecialists.eu/archive/Issue149.html

The Law of the Blind Spot

http://www.javaspecialists.eu/archive/Issue150.html

The Law of the Leaked Memo

http://www.javaspecialists.eu/archive/Issue151.html

The Law of the Corrupt Politician

http://www.javaspecialists.eu/archive/Issue152.html

The Law of the Micromanager

http://www.javaspecialists.eu/archive/Issue155.html

The Law of Cretan Driving

http://www.javaspecialists.eu/archive/Issue156.html

The Law of Sudden Riches

http://www.javaspecialists.eu/archive/Issue159.html

The Law of the Uneaten Lutefisk

http://www.javaspecialists.eu/archive/Issue160.html

Dr. Heinz Kabutz
Session

AngularJS 2 und TypeScript: verliebt, verlobt, verheiratet

german

+

AngularJS 2 ist die kommende Version des sehr beliebten JavaScript-Frameworks von Google, das Direktiven, Data Binding, MV* und vieles mehr bietet. TypeScript ist eine JavaScript-Erweiterung von Microsoft, die JavaScript um optionale statische Typprüfung, Interfaces, Klassen, Module und vieles mehr erweitert. AngularJS 2 selbst wird in TypeScript implementiert. Kai zeigt anhand konkreter Beispiele, wie man als Anwendungsentwicker davon profitieren kann und robusten Clientcode mit AngularJS 2 und TypeScript entwickelt. Wahrscheinlich ist dies allerdings nur ein Preview, da AngularJS vermutlich zum Zeitpunkt der Konferenz noch nicht relesed sein wird.

Kai Tödter
Session

Auf dem Weg zu komplexen adaptiven Architekturen

german

+

Die Kräfte, die auf die IT wirken, haben sich massiv verändert. Um darauf zu reagieren, muss sich die IT neu erfinden. Das betrifft nicht nur Prozesse und Organisationsmodelle, das betrifft auch die Architekturen der IT-Systeme. In dieser Session werden wir uns auf eine Reise von tayloristisch organisierten, hierarchischen Organisationen zu adaptiven, kontinuierlich lernenden Organisationen begeben und untersuchen, welche Architekturstile zu solchen Organisationen passen.

Uwe Friedrichsen
Session

Spring Data REST – Repositories meet Hypermedia

german

+

REST-basierte Web Services sind heutzutage allgegenwärtig. Die Implementierung des Hypermediaaspekts stellt jedoch immer noch eine Herausforderung dar. Spring Data REST ist eine Open-Source-Bibliothek für Java, die auf Spring MVC und Spring Data aufsetzt und es Entwicklern sehr einfach macht, REST-Ressourcen für Repositories zu veröffentlichen. Dazu nutzt es intensiv Hypermedia, verschiedene RFCs, kommende Standards wie HAL und exponiert verschiedene Erweiterungsmöglichkeiten, um zusätzliche Funktionalität in die erzeugten Ressourcen zu integrieren.

Oliver Gierke
17:00 bis 18:00
Session

Boot your own Infrastructure - Spring Boot erweitern

german

+

Im Zuge des Hypethemas Microservices ist auch Spring Boot zum Gesprächsthema geworden. Dabei ist Spring Boot viel mehr als nur ein Microservices-Framework. In dieser Session wird in fünf Schritten gezeigt, wie man einen eigenen Spring Boot Starter schreibt, um genau die Infrastruktur zu booten, die der eigene Typ Anwendung benötigt – ein sehr nützliches Werkzeug auch im Enterprise-Umfeld, in dem man üblicherweise viele Anwendungen eines bestimmten Typs hat und proprietäre Technologien verwendet werden.

Dennis Schulte, Tobias Flohre
Session

Technologie-Wechsel bei AutoScout24 - verrückt oder zukunftsweisend?

german

+

AutoScout24 krempelt seine gesamte IT um:

  • von Windows und .NET zu Linux und der JVM,
  • von eigenen Rechenzentren zu Amazon Web Services,
  • von einer monolithischen Architektur zu Microservices und
  • von getrennten Abteilungen für Entwicklung und Betrieb zu "You build it - you run it"-Teams
  • Dabei entwickeln wir praktisch unsere gesamte Plattform neu.

Sind wir bescheuert?Laufen uns alle Mitarbeiter weg?Welche strategischen Entscheidungen haben uns dazu gebracht?Wie halten wir Betrieb und Produktentwicklung aufrecht?Wie gehen wir vor und was haben dabei wir gelernt?

Simon Hohenadl
Session

Towards a benchmark for BPMN engines

english

+

As opposed to databases for which established benchmarks have been driving the advancement of the field since a long time, workflow engines still lack a well-accepted benchmark that allows to give a fair comparison of their performance. In this talk we discuss the reasons and propose how to address the main challenges related to benchmarking these complex middleware systems at the core of business process automation and service composition solutions. In particular, we look at how to generate a representative workload and how to define suitable performance metrics. You will learn how to use our framework to measure the performance and resource consumption of your BPMN engine and compare different configurations to tune its performance in your concrete real-life project. The talk will also present preliminary experimental results obtained while benchmarking popular open source engines.

Cesare Pautasso, Vincenzo Ferme
Session

MVVM mit JavaFX

german

+

Die wahre Schönheit von UIs verbirgt sich unter Oberfläche, nicht zuletzt, weil der Unterhalt von schlecht wartbaren Anwendungen sonst sehr teuer wird. Saubere Architekturen erleichtern die Wart- und Testbarkeit. Neben den bekannten MV* Pattern, die bis dato ausgiebig in der Java-Welt exerziert wurden, gibt es mittlerweile Alternativen. Dazu zählt MVVM. Das Presentation Model Derivat kommt aus der .NET-Welt und hält mittlerweile in immer mehr Technologien, wie zum Beispiel JavaScript (Knockout.js) Einzug. Auch JavaFX-Entwickler können davon profitieren. In der Session wird gezeigt, wie mit JavaFX und MVVM testgetrieben Clientanwendungen entwickelt werden können.

Alexander Casall, Manuel Mauky
Session

Der glückliche Java-Entwickler

german

+

Nicht wenige Softwareentwickler sagen von sich, sie hätten ihren Traumberuf gewählt. Viele haben ihr Hobby zum Beruf gemacht. Da sollte man annehmen, dass die meisten auch große Freude an ihrer Arbeit haben. Doch ist das ein Trugschluss? In Gesprächen erfährt man häufig von Frust und Unzufriedenheit mit der Team- oder Projektsituation. Welche Voraussetzungen müssen also erfüllt sein, damit Softwareentwicklung Spaß macht? Welche Hindernisse gibt es regelmäßig? Welche Fehler werden verbreitet von Unternehmen gemacht? Als freiberuflicher Experte kommt man viel herum, sieht viele Teams und Projekte und erlebt so einige Anekdoten. In diesem Talk werden typische Beispiele aus fünfzehn Jahren Projekterfahrung vorgestellt, in denen Sie sich und Ihr Team sicher vereinzelt wiederfinden. Und es werden Wege aufgezeigt, um dem Ziel des glücklichen Java-Enwicklers ein großes Stück näherzukommen. Für Entwickler und Führungskräfte gleichermaßen geeignet.

Thilo Frotscher
20:00 bis 21:00
Session

Neues aus der Java-Trickkiste

german

+

Eine Stunde live in der IDE mit Neuem und Altbekanntem, Nützlichem und Überraschendem für Neulinge und alte Hasen. Eine Session mit Unterhaltungswert.

Arno Haase
Donnerstag - 5. November 2015
09:00 bis 10:00
Session

Microservices-Architekturen mit Vert.x, Jetty und Docker

german

+

Trotz der momentan großen Aufregung über Microservices mit und ohne Docker gibt es relativ wenig Erfahrungsberichte über den produktiven Betrieb einer solchen Architektur und potenziell auftretender Probleme. In diesem Talk berichten wir von unseren Erfahrungen, die wir im letzen Jahr bei der Konzeptionierung und Implementierung einer Microservices-Architektur in der Cloud mithilfe von JVM-basierten Services gemacht haben. Die einzelnen Services wurden mithilfe von Vert.x und Jetty implementiert, in Docker-Container verpackt und über eine Continuous Delivery Chain in Amazon Web Services ausgeliefert. Wir zeigen sinnvolle Teststrategien und Lösungen für immer wieder auftretende Probleme wie beispielsweise Health Checks, Heartbeats, Monitoring und Skalierbarkeit. 

 

Björn Stahl, Sascha Möllering
Session

Effiziente Oberflächen mit dem Projektor-Pattern

german

+

Wer viele Sichten in einer Benuteroberfläche realisieren muss, kann es sich nicht leisten, sie immer von Hand zu bauen. Das ist selbst mit Werkzeugunterstützung zu teuer, inneffizient, schlecht wartbar und führt zu inkonsistenten Applikationen. Das Projektor-Pattern bietet dafür Abhilfe. Es erzeugt Sichten und deren Anbindung automatisch aus Präsentationsmodellen – aber als Objekte und nicht als Sourcecode. Diese Session stellt das Pattern vor und zeigt seine Anwendung in Demos mit HTML5 und JavaFX.

Dierk König
Session

Enterprise meets Mobile aka Lust statt Frust

german

+

„Hilfe, wir brauchen eine App!“ Erschreckend aber wahr: Nicht selten starten Unternehmen genau so ihre mobilen Projekte. Dabei wird gerne vergessen, dass eine mobile App nicht nur zum Selbstzweck dient, sondern auch einen Mehrwert mit sich bringen sollte. Doch wie findet man diesen? Und hat man ihn einmal gefunden, ist dann das Backend überhaupt in der Lage, den neuen Channel „Mobile“ sinnvoll zu bedienen? Keine Frage, eine Mobile-Enterprise-Strategie muss her! Die Session zeigt die typischen Stolpersteine vieler Unternehmern auf dem Weg in die Wunderwelt „Mobile“ und gibt praxisnahe Tipps an die Hand, wie man diese mit ein wenig Planung umgehen kann. Am Ende steht – statt einer Menge Frust – eine gelungene App mit Anbindung an das Unternehmens-Backend.

Lars Röwekamp
Session

So sieht’s aus! Architekturüberblicke – Tipps und Tricks

german

+

Ihr habt eine bestehende Softwarelösung und wollt ihre Architektur erklären, vielleicht einem neuen Teammitglied oder einem Kooperationspartner? Der Quelltext ist zu „ausführlich“ und erzählt trotzdem nicht die ganze Geschichte. Was zeigt ihr in solchen Fällen von eurer Dokumentation? Ach, habt ihr nicht … Nicht schlimm: In dieser Session geht es um das Anfertigen eines Architekturüberblicks aus dem Nichts heraus. Das stumpfe Ausfüllen eines Templates führt dabei oft zu Frust. Ich zeige stattdessen, wie ihr die Aufgabe pragmatisch und zugleich wirkungsvoll angeht. Dabei diskutieren wir auch Formen, Zutaten, Werkzeuge und Vorgehen. Ihr lernt die minimale Ausprägung eines Architekturüberblicks kennen und erfahrt, in welchen Situationen ihr von diesem Minimalset abweichen könnt.

Stefan Zörner
Session

Moderne Authentifizierungslösungen mit OAuth 2.0 und AngularJS

german

+

Heutzutage hat jeder Webnutzer zahlreiche Passwörter für verschiedenste Webangebote. Das populäre Protokoll OAuth 2.0, das von Größen wie Google, Facebook oder Twitter unterstützt wird, verspricht hier Abhilfe. Diese Session zeigt, was sich hinter OAuth 2.0 verbirgt, für welche Szenarien es eigentlich gedacht ist und heutzutage genutzt wird, wo die Gefahren und Herausforderungen liegen sowie was OpenID Connect damit zu tun hat. Darüber hinaus zeigt sie, wie man die genannten Standards gemeinsam mit AngularJS und UI-Router einsetzt, und worauf hierbei zu achten ist.

Manfred Steyer
Session

What's new in Scala?

english

+

In this session we will quickly highlight some of Scala's killer features and then focus on new and noteworthy features in the upcoming 2.12 release. We'll talk about some of the cleanups, Java 8 compatibility, scala.meta, Reacitve Streams and much more.

Heiko Seeberger
10:45 bis 11:45
Session

Easy Android Persistence

german

+

Die Datenanbindung bei der Android-Entwicklung ist durch die direkte Verwendung von SQLite und häufiges Schreiben gleichartigen Codes ein mühseliges und damit auch fehleranfälliges Unterfangen. Die Erstellung der Datenbanktabellen, die Zugriffe darauf, das Mapping von Projektionen zu POJOs und das Implementieren von Content-Providern sind Standardaufgaben, welche häufig gleichartig wiederholt werden müssen. In diesem Vortrag zeigen wir Ihnen live, wie wir mit „Datarobot for Android“ Möglichkeiten geschaffen haben, diese Probleme mit Annotations und Codegenerierung zu adressieren und trotzdem den vollen Zugriff auf die Android-Standard-APIs zu ermöglichen.

Alexander Frank, Falk Appel
Session

Sicherheit in Single-Page-Webanwendungen

german

+

Sicherheit von Webanwendungen ist ein heißes Thema. Obwohl seit Jahren aktuell, werden die Meldungen über erneute Lücken gefühlt eher schlimmer als besser. Der Trend zu Single-Page-Anwendungen bringt für uns Entwickler eine ganze Reihe neuer Herausforderungen in punkto Sicherheit mit sich, da immer mehr Funktionalität in den Browser verlagert wird und dadurch mehr Code in nicht vertrauenswürdiger Umgebung läuft. In diesem Talk wir anhand von AngularJS gezeigt, auf was man bei SPAs achten muss. Anhand von Codebeispielen wird natürlich auch gezeigt, wie man sich z. B. vor Cross-Site Scripting, Cross-Site Request Forgery und Code-Injection schützt und welche Gefahren sonst noch so lauern.

Philipp Burgmer
Session

JavaFX Jumpstart

german

+

JavaFX ist cool, frisch und praxistauglich. Mit Java 8 noch ein Stück mehr. Schlagwörter wie Properties, Data Binding, FXML, Multi-Touch und Animationen lassen das Entwicklerherz höher schlagen. Die Session greift Highlights der immer beliebter werdenden Technologie auf, gibt interessierten Entwicklern einen Einblick in die Welt von JavaFX und zeigt, wie man ernstzunehmende Software entwickeln kann. Live-Coding inklusive.

Alexander Casall
Session

Scala in action

english

+

This presentation will provide a comprehensive overview of the Scala-based technology stack used for the HFactory project (http://hfactory.io). In a nutshell, HFactory is a Docker-based application development environment delivering full-stack scaffolding on top of Apache HBase: the solution automates the REST API, integrates with Spark for complex data compressing and generates the JavaScript client side logic, services and entities. We will first go through the design principles of our Scala-based DSL for HBase and the advantages of entity-centric modelling vs the low-level API offered in the Apache project. In the process we will discuss the reasons why we selected Scala as our development language, the advantadges we gained from it and some of the inconveniences it generated versus more mainstream Java. We will then move on to detail the technology stack, from the use of Scala macros for automated code generation to the packaging of all software components as Docker containers. As an illustration of the above, the presentation will conclude with a live demo of the scaffolding of a fully functional app using the HFactory Studio IDE.

Éric Le Blouch
Session

Security-DevOps - Wie Sie in agilen Projekten trotzdem sicher bleiben

german

+

Diese Session zeigt Ihnen, welche Automatisierungsoptionen zur Überwachung bestimmter Sicherheitsaspekte in der agilen Softwareentwicklung bestehen. Ausgehend von dem etablierten DevOps-Konzept, mit dem im Übergang von Entwicklung zu Betrieb Prozesse automatisiert und verzahnt werden, wird mit "Security-DevOps" dieser Antrieb aufgegriffen und auf die Absicherung von Anwendungen gegen Hackerangriffe übertragen. Durch frühe Rückkopplung sicherheitstechnischer Findings an die Entwicklung im Rahmen der Automatisierung haben Ihre Pentester die Möglichkeit, sich auf die kniffligeren Sicherheitschecks zu konzentrieren - trotz geforderter kurzer Releasezyklen.

Christian Schneider
Session

Hitliste der Legacy-Sünden

german

+

Jeder kennt Systeme mit schlechter Codequalität und Architektur – und die sind schwer änderbar. Aber andere Faktoren sind oft noch viel wichtiger. Was ist mit Tests? Oder dem Releaseprozess? Dieser Vortrag zeigt die populärsten Sünden in Legacy-Anwendungen, wie man sie beheben kann und so ein erfolgreiches Projekt auch mit einer alten Codebasis umsetzen kann.

Eberhard Wolff
12:00 bis 13:00
Session

Fundamentale Organisations- und Architekturprobleme durch Cross-Project Clone Detection finden

german

+

Clone Detection erkennt Copy-and-Paste-Programmierung im Sourcecode. Typischerweise wird Clone Detection innerhalb einer Anwendung eingesetzt. Es gibt jedoch gerade im Bereich der Architekturanalyse einen weiteren spannenden Einsatzfall: zur Erkennung von Copy and Paste im großen Stil zwischen verschiedenen Komponenten oder sogar Anwendungen. 

Im Vortrag stelle ich Cross-Project Clone Detection vor. Ich zeige unsere Erfahrungen aus mehreren Jahren Einsatz in verschiedenen Firmen und gehe besonders auf die Analyseergebnisse im Bereich von Anwendungsportfolios, Produktlinien und Produktfamilien ein. Dabei konnten wir Architekturprobleme sowohl auf Organisations- als auch auf technischer Ebene sichtbar machen.

Der Vortrag schließt mit konkreten Tipps, wie ihr selbst mithilfe des freien Open-Source-Werkzeugs ConQAT in wenigen Minuten Cross-Project Clone Detection auf eurem Code einsetzen könnt.

Elmar Juergens
Session

In der Cloud – und dann?

german

+

Virtualisierung und Cloud-basierte Installationen von Anwendungen sind im Mainstream angekommen. Die IT-Verantwortlichen sparen, weil dadurch die Hardware besser genutzt wird und nur noch laufende Kosten verursacht werden. Doch ist das jetzt alles? Wollten wir nicht unsere Applikationen stabiler, verfügbarer und flexibler machen? Und steht nicht auch das Versprechen im Raum, dass wir mit der Cloud neue Features schneller liefern können? In dieser Stunde wollen wir diese Versprechen genauer unter die Lupe nehmen und Cloud-Architekturmuster herausarbeiten, die unsere Applikationen in die jeweilige Richtung optimieren.    

Bernd Rederlechner
Session

The Web Application strikes back

german

+

Viele Schutzmaßnahmen für Webanwendungen beschränken sich auf die sichere Entwicklung und die Abwehr von Angreifern etwa per Web-Application-Firewall. Obwohl zweifellos richtig und wichtig, gelingt es versierten Angreifern dennoch, solchermaßen geschützte Webanwendungen erfolgreich anzugreifen. Eine weitere Verteidigungslinie ist daher dringend notwendig, und steht mit der bisher kaum verbreiteten "Application Intrusion Detection" bereits zur Verfügung. Neben der nachträglichen Analyse der vom Angreifer ausgeführten Operationen geht es vor allem darum, die Webanwendung selbst einen laufenden Angriff erkennen zu lassen und auf diesen in Realtime mit geeigneten Abwehrmaßnahmen automatisch zu reagieren - bevor der Angreifer Zugriff auf geschützte Daten erhält oder die Kontrolle über die Webanwendung übernimmt.Die Session stellt dazu das grundlegende Konzept der "Application Intrusion Detection" für Java-Webanwendungen vor und zeigt anhand von zahlreichen Codebeispielen, wie Entwickler ihre Webanwendung mit dieser zusätzlichen Maßnahme absichern können.

Dominik Schadow
Session

Cross-Plattform-App-Entwicklung

german

+

Die Entwicklung von Apps für mehrere Plattformen bedingt das Entwickeln der gleichen App in verschiedenen Sprachen für verschiedene Plattformen – ein großes Problem in Sachen Pflegbarkeit und Kosteneffizienz. Doch ist die getrennte Entwicklung wirklich nötig? Was taugen HTML5-Apps, und wie sind Cross-Plattform-Systeme einzuschätzen? Warum sollte man überhaupt für jede Plattform eine eigene App entwickeln? Dieser Talk bietet einen Husarenritt durch die Welt der mobilen Entwicklung, die nötigen Informationen und Hintergründe für Einsteiger, Entscheider und Konzepter, um im Dschungel der mobilen Plattformen und Möglichkeiten den Kurs zu halten.

Steffen Müller
Session

Von Swing nach JavaFX

german

+

Hier beleuchten wir technische und strategische Gründe, warum man JavaFX möchte, nennen Bedingungen, wann man wechseln kann, zeigen Wege, wie man von Swing nach JavaFX kommt und welche Schwierigkeiten, Kosten und Risiken uns dabei erwarten.

Dazu besprechen wir mit Code im Detail, was bei einem solchen Übergang zu beachten ist in den Punkten: Desktop-Muster, Implementierungsstil, Layout (low-level und high-level), Datenbindung, Event-Handling und Actions, Hintergrundprozesse, Objektpräsentation insbesondere mit Tabellen und Tabellenzellen, eigene Komponenten, Internationalisierung, Look&Feel und Appearance, Werkzeugunterstützung.

Das führt zu einem einheitlichen Programmiermodell für Swing und JavaFX, mit dem man einen großen Teil von Geschäftsanwendungscode abdecken kann, der dann günstig übertragbar ist.

Abschließend zeigen wir einen Übergangsprozess mithilfe der vorher vorgestellten Techniken und Konzepte. Er bildet eine realistische Brücke von Swing nach JavaFX und sogar weiter nach HTML5.

Karsten Lentzsch
15:30 bis 16:30
Session

Testen mit Containern – Docker für Integrationstests

german

+

Docker-Container bieten ein interessantes Auslieferungs- und Betriebskonzept. Allerdings lässt es sich in vielen Organisationen aus unterschiedlichen Gründen noch nicht für produktiven Einsatz verwenden. Dennoch kann Docker auf dem Weg zu Continuous Delivery in der Testautomatisierung schon einen wichtigen Beitrag leisten. Dieser Vortrag stellt die Einsatzbereiche vor, in denen Docker in automatisierten Tests verwendet werden kann: klassisch als Ausführungsumgebung für das Testobjekt, als Umgebung für Umsysteme oder Simulatoren und insbesondere für die Bereitstellung von definierten Testdaten und wie diese am besten in den Container gelangen können. Weiterhin wird die Einbindung der Container in die Testausführung mit Gradle, Maven und Arquillian vorgestellt.

Stefan Hildebrandt
Session

Ganz schön Groovy

german

+

Groovy kann Java-Projekte auf viele Arten bereichern. Wir werden in einer Reihe von Live-Demos anschauen, wie Groovy alltägliche Arbeiten erleichtert, Nebenläufigkeit absichert, sich mit Java 8 integriert und dabei mehr Typsicherheit als in Java erreicht.

Dierk König
Session

Know your Enemies: Problembewusstsein als Grundlage von Änderungs- und Evolutionsprojekten

german

+

Die meiste Zeit verbringen wir in der Softwareentwicklung mit Änderung oder Verbesserung bestehender Systeme. Dabei ist es besonders wichtig, an den richtigen Stellen zu ändern (und nicht willkürlich die bekannten Refactoring-Patterns anzuwenden). Ich zeige auf, wie Sie systematisch die aus langfristiger und ökonomischer Sicht schlimmsten Probleme in Ihren Softwaresystemen und -architekturen finden können und wie Sie dann deren Lösung angehen können. Dabei spannen wir den Bogen von der Analyse der beteiligten Stakeholder und externen Schnittstellen über verschiedene Ansätze der (quantitativen) Code- und (qualitativen) Architekturanalyse bis hin zu fortgeschrittenen Themen wie Datenanalyse, Prozessanalyse oder Kontextanalyse. Anhand realer Probleme aus mittleren und großen Projekten zeige ich auf, dass die "Feinde" manchmal an überraschenden Stellen lauern.

Gernot Starke
16:45 bis 17:45
Session

Moderne Gestaltung für den Java-Desktop

german

+

Hier wird frische Gestaltung für den Java-Desktop gezeigt, die man in Swing, SWT und JavaFX umsetzen kann. An vielen Bildschirmbeispielen zeigen wir realistische und günstig machbare Überarbeitungen von Geschäftsanwendungen. Sie lernen, wie man Omas funktions- und formularzentriertes GUI in eine rollenbasierte, aktionszentrierte Anwendung überführt, die zeitgemäße User Experience bietet - so mächtig wie Java-Desktop, so schick wie Web. Dazu beleuchten wir, wie man technische, politische und menschliche Hürden bei einer solchen Neugestaltung überwindet.

Abschließend sehen Sie eine Umsetzung des SAP OpenUI5 für Swing und JavaFX, ein überraschend gelungenes Oberflächen-API für Geschäftsanwendungen, mit dem man nebenbei eine Brücke vom Java-Desktop zu HTML5 bekommt. 

Karsten Lentzsch
Session

Was Sie über die Advanced-Zertifizierung für Softwarearchitekten wissen sollten

german

+

Wer über kurz oder lang die Prüfung zum Certified Professional for Software Architecture – Advanced anstrebt, muss sich nicht nur aus dem modular aufgebauten Advanced-Programm des iSAQB die richtigen Module aussuchen, sondern sollte sich auch frühzeitig auf die Prüfung einstellen. In diesem Vortrag gebe ich einen kurzen Überblick über den Advanced Level für die Zertifierung von Advanced-Softwarearchitekten, das Prüfungsverfahren und gebe meine persönlichen Ansichten zur Erfolgsstrategie für den Advanced Level.

Phillip Ghadir
Session

Live-Hacking gegen Webanwendungen: Übernahme von DB-Servern und Angriffe auf XML-Schnittstellen

german

+

Sehen Sie anhand einer Livedemo, wie Angreifer gegen Webanwendungen vorgehen, Sicherheitslücken aufspüren und sie zu realen Ausnutzungsszenarien eskalieren. Erleben Sie, wie unerwartet einfach mithilfe von typischen (und untypischen) Sicherheitslücken sensitive Daten exfiltriert werden, wie XML-Standards aus Sicht eines Angreifers nutzbar sind und wie Serversysteme komplett übernommen werden können. Lassen Sie sich von den professionellen Vorgehensweisen bei der Ausnutzung von so genannten "Blind Attacks" allein mittels Seitenkanalangriffen überraschen.

Christian Schneider
Session

Infrastruktur für Mircoservices: Docker Orchestration

german

+

Dieser Vortrag gibt einen Überblick über die technischen Lösungen für die Orchestrierung von Docker basierten Services. Erzeugen, betreiben und ändern von vielen Maschinen und Containern auf dem eigenen Notebook, im DataCenter oder in der Cloud ist eine Herausforderungen. Unsere Produkte werden ständig erweitert und an verschiedene Nutzungen angepasst. Um Microservices zu entwickeln, bedarf es einer guten Koordination von Gruppen von Prozessen und ihren Abhängigkeiten. Das Docker-Ökosystem bietet hier vielversprechende Werkzeuge um automatische Skalierung, Fehlerbehebung und Deployment. Der Vortrag stellt den praktischen Nutzen der Docker-Orchestration-Tools aus dem Docker-Ökosystem vor und demonstiert den Umgang damit.

Peter Roßbach
Freitag - 6. November 2015
09:00 bis 17:00
Workshop

JavaFX Powerworkshop

german

+

In Businessanwendungen spielen Aspekte wie Architektur, Test- und Wartbarkeit eine herausragende Rolle. Ein gewichtigerer Faktor ist zudem die User Experience (UX): Nicht blockierende Oberflächen, elegante Nutzerführung und auch das Aussehen einer Anwendung spielen in dieses Feld hinein und gelten heute als erfolgskritisch. Welche Werkzeuge stellt mir JavaFX dabei für Architekturgestaltung und Implementierung zeitgemäßer Oberflächen zur Verfügung?

Der JavaFX Experts Workshop auf der WJAX 2015 stellt genau diese Themen in den Mittelpunkt. Er informiert erfahrene Entwickler und Softwarearchitekten über die Besonderheiten von JavaFX für Business-UIs und beleuchtet dabei auch das Thema Migration von Swing nach JavaFX. Wenn Sie Ihr Wissen über JavaFX vertiefen wollen oder für ein Kundenprojekt nützliche Informationen für die Praxis benötigen, dann sind Sie in diesem Workshop, der von mehreren Trainern geleitet wird, richtig. Erfahrene JavaFX-Experten beleuchten ausgewählte Aspekte der Technologie und stehen Ihnen Rede und Antwort.

Alexander Casall
Workshop

Microservices-Workshop: Architektur und Praxis

german

+

Microservices sind in aller Munde. In diesem Workshop wollen wir nicht nur theoretisch über Microservices sprechen, sondern ganz praktisch ein System aus Microservices aufbauen und diskutieren. Zunächst gibt es eine Einführung in Microservices-Architekturen und ein konkretes Beispiel. Dann geht es in die Praxis: containerloses Deployment mit Spring Boot und Koordination der Anwendungen mit Spring Cloud. Dann folgt der Betrieb der Anwendungen mit Docker. Am Ende können wir eine Anwendung aus mehreren Microservices praktisch betreiben und weiterentwickeln.

Eberhard Wolff
Workshop

Coole Web-Apps mit AngularJS, TypeScript und Spring Boot

german

+

In diesem Workshop werden wir eine kleine, aber vollständige Webapplikation entwickeln. Der Clientteil basiert auf AngularJS, TypeScript und ein wenig Bootstrap. Der Serverteil basiert auf Spring Boot, verwenden werden wir außerdem Spring Data/Rest/HATEOAS. Wir werden also RESTful Web Services entwickeln, die um Hypermedia angereichert sind. Dabei wird Kai die Grundlagen von Spring Boot und den verwendeten Farmeworks erklären und auch die generellen Prinzipien von REST und HATEOAS (Hypermedia As The Engine Of Application State, ein wichtiges REST-Architekturprinzip). Für die Cliententwicklung gibt Kai eine kurze Einführung in AngularJS, TypeScript und die gängigen JavaScript-Entwicklungstools wie Grunt, npm, Bower, Jasmine etc.

Kai Tödter
Workshop

Webarchitektur und Qualitätsmerkmale

german

+

In diesem Workshop haben Teilnehmer die Möglichkeit, im Rahmen von kleinen Arbeitsgruppen unterschiedliche Aspekte von Webarchitekturen gemeinsam zu entwickeln. Dabei erlangen die Teilnehmer ein vertieftes Verständnis der spezifischen Probleme von Webarchitekturen und ihren Qualitätsmerkmalen. Besonderes Augenmerk liegt im Workshop auf der Führungsrolle des Architekten, in der Entwicklung und Evolution dieser oft vom Marketing getriebenen Informationssysteme. Die Arbeit findet an konkreten Beispielen eines Onlineshops, einer Firmenwebsite sowie eines Intranets statt.

Daniel Takai