Die diesjährige JUGS, Java User Group Stuttgart, vom 7. Juli 2016, war vollgepackt mit Beiträgen rund um das Thema Java und was dort aktuell alles passiert. Anbei die wichtigsten Hauptthemen, die aus meiner Sicht gerade vorangetrieben werden.

JavaFX

Der derzeitige Stand von JavaFX ist der, dass diese Technologie wohl noch in den Kinderschuhen steckt und noch viele Unebenheiten beseitigt werden müssen. Neben unvollständigem Exception-Handling, nicht wirklichem Hardware-Rendering, dass versprochen wird kommt erschwerend hinzu, dass Oracle hier nur eine unvollständige Dokumentation bereitstellt. Letzteres ist nicht unbedingt als Negativpunkt zu sehen, sondern eher eine freundliche Ermahnung, in die Implementierung genügend Zeit für das Quellcodelesen einzuplanen.

Ein weiterer Punkt, der für alle Webdesigner hinzukommt, ist die unvollständige Unterstützung von CSS3. JavaFX unterstützt nur ein Subset davon und auch davon sind viele Attribute nicht CSS-konform sondern von Java selbst gewählt.

Ein Oracle-Mitarbeiter des JavaFX-Teams bestätigte die derzeitigen Mängel und verwies auf eine Behebung mit dem JDK9, wenn nicht sogar JDK10. Eine "reibungslose" Arbeit mit JavaFX sei ab 2027, wenn nicht sogar 2030 möglich.

Zusammenfassung:

  • Ungeeignet für grafikintensive Anwendungen
  • Performanceprobleme
  • Kein Gebrauch von mehreren CPU-Cores
  • Hardware-Rendering nur sehr limitiert
  • Keine Unterstützung der Streams API, Java Date udn Time API
  • Schlechte Dokumentation verfügbar

Wer allerdings nur eine kleinere, nicht grafikintensive Anwendung implementiert, der kann sich sehr wohl schon an JavaFX heranwagen.

Die Tatsache, dass Oracle ein eigenes JavaFX zusammengestellt hat lässt hoffen, dass diese Technologie für den praktischen Gebrauch gepusht wird.

DDD und Microservices

Groß im Gespräch sind die Tage sogenannte Microservices, bei denen ein großer Prozess in kleine, unabhängig voneinander ablaufende Applikationen geteilt wird, um hier eine größere Flexibilität und Modularität zu gewährleisten (siehe hierzu auf den Artikel auf Wikipedia). Dies ist auch für mich im Arbeitsumfeld interessant, da einzelne kleine Applikationen so nicht jedes mal neu implementiert oder per Copy&Paste übertragen werden müssen.

Domain Driven Design, kurz DDD, ist für diese Art von Implementierung die passende "Denkweise". Die Modellierung wird hier um eine Anwendungsdomäne durchgeführt, also der fachliche Kontext steht hier im Mittelpunkt.

Lambdas, Lambdas und noch einmal Lambdas

Eine große Neuerung mit Java Version 8 waren die sogenannten Lambdas, ein Weg, um ein Interface mit einer Lambda "->" Expression aufzurufen. Leider war der Vortrag sehr abstrakt und die Beispiele nicht sehr anwendungsnah, so dass mich die erhoffte Erleuchtung leider nicht erreichte. Ich werde mich in Sachen Lambdas wohl doch noch einmal selbst informieren müssen. Ein sehr guter Artikel zu diesem Thema ist der Artikel von Lars Rückemann vom Oktober 2013 (also ein halbes Jahr vor Veröffentlichung der Java SE 8). Ein Quick Start Guide, den ich mir nach zu Gemüte führen werde, ist das offizielle Tutorial von Oracle. Sobald mich hier der Hammer der Erkenntnis getroffen hat, werde ich den Lambdas noch einen eigenen Artikel widmen.

Code Review Techniken

Abseits der technik-lastigen Themen habe ich mir einen sehr interessanten Vortrag zum Thema Code Reviewing Techniken angesehen. Nach dem allseits bekannten Paretoprinzip, oder auch 80-zu-20-Regel verbringen Entwickler lediglich 20 Prozent mit dem Schreiben von neuem Code und 80 Prozent mit dem Warten, Fixen und Verbessern von altem Code (oder zumindest sollte es so sein ;)) Das stetige Überprüfen und Verbessern von Code bringt nicht nur Zeitersparnisse beim Beheben von Fehlern, sondern auch wirtschaftliche Vorteile mit sich, denn Bugs, die bei produktiver Software mittels Patches behoben werden müssen, sind immer teurer als diejenigen, die sich noch in der Testphase befinden.

https://lol.browserling.com/full-stack-hires.png

Eine kontinuierliche Durchsicht und Verbesserung lässt den Code deutlich übersichtlicher und lesbarer werden, nicht nur für den Entwickler, sondern auch dessen Teammitglieder. Die im Vortrag vorgestellen Techniken beschreiben hier verschiedene Vorgehensmodelle sowie Tools, die das Code Reviewing unterstützen (unter anderem FindBug und natürlich das wohlbekannte GitHub mit seinen Pull Requests)

Generell sei gesagt, dass der Urlaub wesentlich entspannter ist, wenn der Kollege im Büro fremden Quellcode ohne Probleme lesen kann! :)


Natürlich gab es noch weitere spannende Themen wie NoSQL, MVC mit Java EE8, die mich persönlich allerdings weniger betreffen, darum werde ich hier nicht näher darauf eingehen.

Alles in Allem war der JUGS 2016 eine sehr interessante und gut durchdachte Veranstaltung mit vielen Aha-Effekten und Erkenntnissen, wohin die Java-Reise die nächste Zeit gehen wird.