JavaOne 2016

Konferenzen sind der ideale Ort, um aus dem Entwickler-Alltagsgeschäft auszubrechen und wieder mal ein Gefühl dafür zu bekommen, welche Hype-Wellen gerade über das Ökosystem rollen oder gerollt werden. Die diesjährige JavaOne 2016 in San Francisco – das ist die Oracle-Hauskonferenz – machte hier keine Ausnahme und ein Blick auf die Agenda der angebotenen Sessions und Tutorials zeigte deutlich die angesagten Schlüsselworte: Cloud, Microservices, Reactive Programming sowie IoT.

Etwas abseits des Mainstreams hatte ich das Vergnügen, eine Session gestalten zu dürfen: “jQAssistant: Verify Your Design and Architecture“. In dieser lagen die Schwerpunkte einerseits auf der Einführung in Philospohie und Funktionsweise des Werkzeugs, insbesondere aber in der Modellierung von Architekturkonzepten in Codestrukturen bzw. deren Abbildung im Graphen sowie der Formulierung von Regeln in ausführbarer Dokumentation (Asciidoc) für Entwickler. Das unmittelbare Feedback war sehr positiv, insbesondere der letzte Aspekt stieß wiederum auf sehr reges Interesse. Dieser zeigt einen gangbaren Weg auf, die zwar gebräuchlichen, aber naturgemäß stets veralteten Wiki-Seiten bzw. Word-Dokumente abzulösen.

Ich konnte insgesamt nur zwei volle Tage vor Ort sein. Einen Abend davon nutzte ich, um jQAssisant bei der Neo4j-Meetup-Group von San Francisco vorzustellen. Dabei lag der Schwerpunkt auf der Exploration bestehender Anwendungsstrukturen sowie der Gewinnung bzw. Bewertung individueller Metriken.

Leider konnte ich die Keynote der JavaOne mit den sehnsüchtig erwarteten Aussagen zur Zukunft von Java EE nicht besuchen. Das Ergebnis ist mittlerweile bekannt: es gibt ein Commitment zum Standard, Java EE 8 soll Ende 2017 verabschiedet werden und stellt im Wesentlichen eine Auffrischung mit kleineren (Configuration) und ausbleibenden Ergänzungen (MVC) dar. Zwischenzeitlich wird bereits an Java EE 9 gearbeitet, welches – wie die Gerüchteküche es im Vorfeld auch bereits vermutete – eine Neuausrichtung wagt und ein reaktives Programmiermodell anvisiert. Interessant ist dabei der Zeitplan: das Ergebnis soll bereits ein Jahr später verabschiedet werden, was selbst ein Oracle-Mitarbeiter in einem persönlichen Gespräch als zu ambitioniert und unrealistisch einschätzte. Wer den Spezifikationsprozess über die Jahre verfolgt hat, kann diese Auffassung bestätigen. Es ging Oracle offensichtlich erst einmal darum, ein Signal für Java EE zu senden und das sollte trotzdem gelungen sein.

Parallel dazu war deutlich erkennbar, dass man sehr bemüht ist, den Boden für eine hohe Akzeptanz des kommenden Java 9 zu bereiten. Es wurden viele Sessions angeboten, die sich den neuen Features (z. B. JShell) und der wahrscheinlich “heißesten” Änderung widmete: der Modularisierung mit Project Jigsaw und den damit ggf. verbundenen Inkompatibilitäten bei der Migration bestehender Anwendungen. Es wurde auffallend oft (aber zurecht) betont, welchen Stellenwert eine auf Stabilität orientierte Weiterentwicklung hat und dass bisher keine bereitgestellte Funktionalität entfernt wurde. Mit Java 9 wird hier allerdings, wenn auch sehr langsam, ein Paradigmenwechsel eingeleitet: um eine Modularisierung der Plattform zu ermöglichen, wurden 6(!) public-Methoden entfernt. Es wurde deutlich gemacht, dass sich der Prozess des Entsorgens von Altlasten in kommenden Versionen fortsetzen wird. Das wurde insbesondere in einer Fragestunde unter dem Titel “Meet the JDK architects” (mit Mark Reinhold, John Rose und Brian Goetz) sehr deutlich. Diese Session war überhaupt sehr aufschlussreich und unterhaltsam, weil zuweilen mit recht trockener Ironie argumentiert wurde. Getrieben durch Fragen von Entwicklern wurde klar, welche Werte bei der Weiterentwicklung von Plattform und Sprache eine Rolle spielen: Stabilität und ein nachweisbarer Mehrwehrt für neue Features. Die Untersützung von Ahead-Of-Time-Compilation oder Currying wurden unter letzterem Betrachtungswinkel als klar “Low-Priority” deklariert, währenddessen eine Verringerung des Overheads beim Thread-Handling in Aussicht gestellt wurde, um reaktiven Programmiermodellen bzw. entsprechenden Frameworks entgegenzukommen. Die Antwort auf die Frage nach dem “biggest regret” in der Geschichte von Java war übrigens wenig überraschend “Serialization”, verbunden mit der Aussage, dass der aktuelle Mechanismus die mit Abstand meisten Security-Issues verursacht hat…

Im Hinblick auf die Agenda der Konferenz möchte ich abschließend noch auf eine kleine Wahrnehmung am Rande hinweisen: es gab bekanntermaßen vor nicht allzu langer Zeit Spekulationen über eine möglicherweise unsichere Zukunft von JavaFX. Dem entgegen stand aber eine spürbare Menge der JavaOne-Sessions, die sich diesem Thema widmeten. Ähnlich optimistisch fiel dazu auch die Einschätzung in einem Panel zu RIA-Technologien aus, in welcher u. a. auch JavaFX als Basis für Cross-Plattform-Entwicklung im Bereich mobiler Geräte diskutiert wurde.

Slides zu meiner Session:
jQAssistant: Verify Your Design and Architecture (PDF)

Impressionen zur JavaOne 2016 in San Francisco:

Eindrücke von der GeeCON 2016 in Kraków

Die GeeCON fand vom 11. – 13. Mai 2016 im Multikino in Kraków statt. Der Name der Konferenz weckt schnell Assoziationen zu “Geek” und das ist offensichtlich auch so beabsichtigt: sie richtet sich an Entwickler, die mit Technologien basierend auf der Java Virtual Machine arbeiten, und neuen Ansätzen bzw. Entwicklungen aufgeschlossen gegenüberstehen. Damit bietet sie ein sehr gutes Umfeld für einen Vortrag über jQAssistant, welcher auch seinen Weg in die offizielle Agenda fand und mir die Möglichkeit gab, das Werkzeug einem sehr interessierten Publikum zu präsentieren. Offensichtlich fiel das Thema auf fruchtbaren Boden: am Ende der Präsentation gab es so viele Fragen und Diskussionen, dass es nur unter Schwierigkeiten möglich war, das Notebook einzupacken, um Platz für den nächsten Sprecher zu schaffen.

Aufgrund zeitlicher Restriktionen konnte ich leider nur an einem von drei Konferenztagen teilnehmen, so dass die Möglichkeiten, sich andere Vorträge anzusehen, beschränkt waren. Hervorheben möchte ich jedoch gern “Scaling microservices at Gilt” von Adrian Trenaman. Er schilderte basierend auf mehrjährigen Erfahrungen sehr deutlich und in klaren Worten die Motivation hinter der Migration hin zu einer Microservice-basierten Architektur, den nicht ganz geradlinigen Weg dahin sowie die aufgetretenen Probleme und notwendigen Transformationen in der Organisationsstruktur und konnte dies insbesondere auch mit nachvollziehbaren Metriken untermauern.

Interessant war im Übrigen die Wahl des Veranstaltungsortes für die Konferenz: es handelte sich um ein Multiplex-Kino mit großen Platzkapazitäten (die trotzdem leider für einige Vorträge nicht ausreichend waren) und hervorragende Technik – ich habe meine Slides bzw. die Entwicklungsumgebung noch nie in dieser Größe und Auflösung gesehen! Auch andere Sprecher zeigten sich entsprechend beeindruckt.

Abschließend soll ein herzlicher Dank an das Organisationsteam gehen, das Programm war vielseitig und die Stimmung unter den Teilnehmern sehr gut. Kurzum: ich komme gern wieder!

Slides zum Vortrag:
“jQAssistant – Verify Your Design And Architecture” (PDF, 1MB)

Fotos zur GeeCON 2016:

Mit jQAssistant in Wien

Vorträge auf Konferenzen und in User Groups erfüllen zwei wichtige Rollen: Zuallererst geht es natürlich darum, das eigene Thema dem anwesenden Fachpublikum zu präsentieren. Fast interessanter ist es jedoch, mit den Teilnehmern ins Gespräch zu kommen: man erhält unmittelbares Feedback zum präsentierten Ansatz und muss sich teils messerscharfen Nachfragen und Kritiken stellen, die widerum dabei helfen, den eigenen Ansatz zu validieren und die eigenen Argumente zu schärfen.

Das Konferenzjahr 2016 wurde mit einem Ausflug nach Wien eröffnet. Dort ergaben sich gleich zwei Möglichkeiten für den Kontakt mit dem Publikum: Am Abend des 18. Januar präsentierte ich jQAssistant im Rahmen eines gemeinsamen Meetups der Enterprise Java Group Wien und der Graph Database Austria vor einer Zuhörerschaft, die sich vorwiegend aus Architekten und Entwicklern zusammensetzte. Wir verbrachten zwei sehr intensive Stunden mit Präsentation, Demonstration und Diskussionen, die vor der eindrucksvollen Kulisse der Wiener Hofburg wie im Fluge vergingen.

An den folgenden beiden Tagen fanden in Wien die Software Quality Days 2016 statt. Oliver Fischer (E-Post Development GmbH) und ich waren mit unserem Vortrag “Clean Structures – Kommunikation von Architektur- und Designregeln” Teil des offiziellen Vortragsprogrammes. Inhaltlich beschäftigt sich dieser mit den Frage, warum die Definition und die Durchsetzung von Strukturierungsregeln auf verschiedenen Ebenen in größeren Projekten unabdingbar ist, woran Ansätze wie Peer-To-Peer-Kommunikation oder Wikis scheitern und wie jQAssistant Lösungsmöglichkeiten durch ausführbare Entwickler-Dokumentation sowie unmittelbares und vor allem verständliches Feedback bei Regelverletzungen liefern kann. Die Diskussionen im Anschluß zeugten von einer sehr positiven Rezeption unserer Ideen. In persönlichen Gesprächen danach konnten wir sehr spannende Anregungen aufgreifen. Komplettiert wurde der positive Eindruck durch zahlreiche weitere interessante Vorträge im Konferenzprogramm. Fazit? Die Reise nach Wien lohnte sich auch abseits seiner Sehenswürdigkeiten und Kaffeehäuser!

Slides zum Vortrag:
“Clean Structures – Kommunikation und Durchsetzung von Architektur- und Designregeln” (PDF, 1 MB)

Das JavaLand 2015 im Rückblick

Nach der erfolgreichen Premiere im letzten Jahr stand bei mir Ende März die zweite Auflage der Konferenz auf der Agenda. Der auf den ersten Blick ungewöhnliche Veranstaltungsort – das Phantasialand Brühl – stellte dabei einen passenden Rahmen für die einerseits ernsthafte Auseindersetzung mit dem Themen aus dem Java-Universum dar, vermittelte aber eben auch jenen Spaßfaktor, welcher der Community Leben einhaucht. Leider habe ich es aber auch in diesem Jahr nicht geschafft, eine Runde auf der Achterbahn (“Black Mamba”) zu drehen…

Der Grund hierfür lag schlicht und einfach darin, dass eine Konferenz eben mehr ist, als nur ein Vortragsprogramm abzuarbeiten: Leute treffen, Ideen austauschen, Feedback geben bzw. einsammeln, Kontakte austauschen und dabei das eine oder andere alkoholfreie bzw. -haltige Erfrischungsgetränk zu sich zu nehmen. Da kann es auch schon passieren, dass die Vorbereitung der Beispiele für den eigenen Talk kurzerhand auf Mitternacht verschoben werden muss. Mein Vortrag “Yes We Scan – Softwareanalysen mit jQAssistant” (Folien als PDF, präsentierte Besipiele folgen) war zu meiner Freude sehr gut besucht und es ergaben sich im Nachhinein – trotz des kurz bevorstehenden Konferenzendes – sehr fruchtbare Diskussionen, beispielsweise über die geeignete Visualisierung von Strukturen. Allein dafür hat sich die Reise gelohnt!

Darüberhinaus gab es natürlich eine Menge anderer spannender Talks. Der allgegenwärtigen IoT-Welle konnte ich noch einigermaßen ausweichen und mich eher auf Qualitätsaspekte konzentrieren. Ich möchte an dieser Stelle den Vortrag “Abhängigkeiten managen with degraph” von Jens Schauder besonders herausheben: Einerseits trifft das von ihm präsentierte Thema natürlich einen besonders empfindlichen Nerv bei mir, andererseits war es aber die Form des Vortrags, die ich als sehr praxisnah und äußerst anschaulich empfunden habe: Der Vergleich einer Code-Basis mit der Organisation von Socken in Kleiderschränken oder die Benennung von Abhängigkeitsmustern als “Wäscheleinen” ist sehr bildhaft und eingängig!

Negativ getrübt wurde der Eindruck im JavaLand durch diverse technische Probleme mit Mikrofonen und den fehlenden WiFi-Zugang – obwohl bei näherer Betrachtung letzteres vielleicht sogar eine positive Auswirkung auf die Kommunikation der Teilnehmer gezeigt haben könnte.

Alles in allem war das JavaLand 2015 eine überaus gelungene und lohnenswerte Veranstaltung, die mich mit vielen Eindrücken und Ideen nach Hause entlassen hat – der Termin im nächsten Jahr (08.03. – 10.03.2016) ist im Kalender bereits blockiert.

Graph-basierte Software-Analyse mit jQAssistant

Artikel als PDF herunterladen:
Download Graph-basierte Software-Analyse mit jQAssistant

Qualitätssicherung in der Software-Entwicklung ist seit Jahren ein Thema, mit dem es problemlos möglich ist, Zeitschriften, Bücher und Konferenzen inhaltlich zu füllen. Die Ansatzpunkte sind äußerst vielfältig – sie reichen von der Prozessorganisation über Teststrategien, technische Infrastrukturen bis hin zu vermeintlich trivialen Dingen wie der Formatierung des Quellcodes. In diesem Artikel möchte ich einen Aspekt beleuchten, der sich auf der Ebene statischer Code-Analysen abspielt: die Festlegung und Überwachung projektspezifischer Architektur- und Design-Regeln.

 

Verfallene Strukturen

Verfallene Strukturen

weiterlesen

 1 2 3 4 Vor