Software Engineering

Javaland 2016: Journal Tag 1

Jatumba! Um uns über aktuelle Themen und Trends rund um Java-Technologien, Softwareentwicklung und -Architektur zu informieren, besuchten Benedikt Gerstner, Andreas Stuck und Philipp Buchholz dieses Jahr wieder die JavaLand im Phantasialand in Brühl. Nachdem wir an diversen Vorträgen zu unterschiedlichen Themenbereichen teilgenommen haben, möchten wir einen kurzen Einblick in die Themen des ersten Tages der diesjährigen JavaLand geben.

Internet of Things

Auch in diesem Jahr gab es wieder einen eigenen Stream für Vorträge zum Thema „Internet of Things“. Im Vergleich zum Vorjahr ging es dabei allerdings um wesentlich alltagstauglichere Use-Cases. Während im letzten Jahr die Technologien und Möglichkeiten durch oftmals sehr absurde, aber unterhaltsame Beispiele veranschaulicht wurden, war die Betrachtung in den von uns besuchten IoT-Vorträgen in diesem Jahr sehr theoretisch. Häufig wurde sehr ausführlich auf Statistiken zur Verbreitung eingegangen, dadurch blieb leider sehr wenig Zeit für Live-Demos.

Im Vortrag „Westy Tracking Platform Based on Vert.x, Redis and Angular“ erzählte Rob Brinkman(@R088) wie er seinen VW Bully mit ein bisschen Hardware mithilfe von vert.x in Version 3 verfolgbar machte und ganz einfach daraus eine Webseite entstehen kann. Die gesendeten Informationen wurden als TCP vom Receiver empfangen und als vert.x Events weiter verarbeitet und per externen Geolocation-Dienst angereichert. Auch eine Streckenverfolgung wurde so möglich da neben vert.x auch redis, das auch als Persistenzschicht dienen kann, eingesetzt wurde. Abschließend wurde eine Testapplikation gezeigt.

Technische Schulden

Einer der Favoriten des ersten Tages war die Session zum Thema „Technische Schulden in Architekturen erkennen und beseitigen“ von Carola Lilienthal (@Cairolali). Dabei zeigte sie anhand von aus Projekten generierten Graphen, dass zu viele Patterns auch schlecht sein können. Den Zuhörern gab sie mit auf den Weg, dass es grundsätzlich ratsam ist technische Schulden schnellst möglich zu begleichen. Sie gab zu bedenken, dass ohne Rückendeckung des Managements die beste Architektur langfristig versagt.

Die neue Müllabfuhr für Java

In einem weiteren wurde auf den GarbageCollector G1GC eingegangen, der innerhalb des JDK 9 als Standard GarbageCollector definiert wird. Bis JDK 1.8 ist der Parallel Garbage Collector Standard. Während des Vortrags wurde gezeigt, wie der G1GC bereits heute unter Verwendung des JDK 1.8 verwendet werden kann und wo die Unterschiede zwischen dem ParallelCollector und dem G1GC bestehen.

Winzige Services – große Wirkung

Ein Schwerpunkt des Tages lag auf Technologien für die Umsetzung von Microservices-Architekturen und auf Ansätze wie solche Architekturen aufgebaut werden können. Im Vortrag „Guard your Logs from Microservice Madness“ von Tobias Stamann ging es um die Herausforderungen, die bei der Erarbeitung eines Loging-Konzepts innerhalb einer Microservices-Architektur entstehen. Bei einer hochverteilten aus diversen Microservices bestehenden Architektur müssen Log-Ausgaben Usern über Network- und IO-Boundaries zugeordnet werden können. Ein vorgestellter Ansatz ist das Generieren und anschließende Übertragen von Invocation-IDs über diese Grenzen. Damit können Log-Ausgaben von mehreren Microservices mit einem Log-Aggregator aggregiert, nach Mustern durchsucht und visualisiert werden. Ein in diesem Zusammenhang vorgestelltes Framework ist TraceEE. Auch die Techniken des MDC – MappedDiagnosticsContext – sind in diesem Zusammenhang sehr nützlich.

Alte Bekannte in neuem Gewand

Im Bereich der JavaEE-Technologien wurde unter Anderem CDI 2.0, welches noch nicht final erschienen ist, vorgestellt. CDI 2.0 hat sich zum Ziel gesetzt die Möglichkeiten des Event-Systems zu verbessern. Hier ist es geplant zukünftig asynchrone Events zu ermöglichen. Außerdem sollen die Möglichkeiten von Java 8 in CDI Einzug halten.
Der Vortrag von Kai Tödter (Twitter: @kaitoedter) „Sinn und Nutzen von RESTful Hypermedia APIs“ zeigte anhand des MaturityModels von Richardson auf, ab wann ein RESTful WebService Hypermedia verwendet. Anhand von praktischen Beispielen wurden die Vorteile gezeigt, die sich bei Verwendung von Hypermedia ermöglichen. Bei der Verwendung von Hypermedia in RESTful WebServices liefern die Responses dieser Services Links mit um Statusübergänge und damit HATEOAS (HypermediaAsTheEngineOfApplicationState) zu realisieren.

Da alle weiterführende Themen, wie beispielsweise IoT, auf Core Java-Technologien aufbauen, ging es in diversen Vorträgen um Internals der Java VirtualMachine, des MemoryManagements und mehr. Der Vortrag „JVM Deep Dive“ von Daniel Mitterdorfer (Twitter: @dmitterd) ging unter Anderem auf die unterschiedlichen Komponenten der Java VirtualMachine wie den JIT-Compiler, die Garbage Collection und die Runtime der Virtual Machine ein. Bei der Analyse der Class-File Struktur wurde hier anschaulich gezeigt wie einfache Anweisungen der Hochsprache Java in Class-Files aufgebaut sind. Unter anderem wurde auf den Constant-Pool und Meta-Informationen wie die Magic-Number eingegangen. Mit einfachen Beispielen wurden den Zuhörern illustriert, welche Möglichkeiten der JIT-Compiler innerhalb der Java VirtualMachine heutzutage einsetzt. Der JIT-Compiler ist unter Anderem in der Lage nicht verwendete Variablen und mit diesen im Zusammenhang stehenden Berechnungen zu erkennen und zu entfernen. Weitere Optimierungen sind DeadCode-Elimination und ClassHierarchie-Analysis.

Stay tuned für unser JavaLand Journal von Tag 2!